N-그램 추출기

N-그램은 텍스트에서 연속으로 이어지는 n개 단어의 나열입니다. 이 추출기는 입력한 텍스트를 소문자로 바꾸고 공백과 문장 부호를 기준으로 단어를 나눈 뒤, 선택한 길이(1~8)의 n-그램을 모두 세어 줍니다. 결과는 가장 자주 나온 순으로 정렬된 CSV 빈도표이며, SEO 키워드 밀도 점검과 언어 모델 평활화, 표절 탐지에 두루 쓰이는 바로 그 표입니다.

n-그램 추출 방법

  1. 1

    텍스트 붙여넣기

    기사, 녹취록, 제품 소개 문구 등을 넣으세요. 상식적인 분량이라면 길이 제한은 없습니다.

  2. 2

    n 선택

    유니그램(1), 바이그램(2), 트라이그램(3)부터 최대 8까지. 한 번에 한 가지 길이만 처리합니다.

  3. 3

    추출 실행

    텍스트를 소문자로 바꾼 뒤 단어로 나눕니다. 문장 부호는 구분자로 처리되어 제거됩니다.

  4. 4

    빈도표 확인

    각 n-그램이 등장 횟수와 함께 표시되며, 많이 나온 순으로 정렬됩니다.

  5. 5

    CSV 복사

    결과는 쉼표로 구분된 형식(N-gram,Count)이라 스프레드시트에 바로 붙여넣을 수 있습니다.

n-그램 길이별로 알 수 있는 것

N 이름 활용 사례
1 유니그램 키워드 밀도, 주제 매핑
2 바이그램 구(“search intent”, “page speed”), 연어 관계
3 트라이그램 롱테일 키워드, 특징 탐지
4+ 4-그램 이상 중복 콘텐츠 탐지, 표절 의심 신호

이 도구가 텍스트를 나누는 방식

  • 모두 소문자로 바꿉니다. 따라서 “The”와 “the”는 같은 행으로 합쳐집니다.
  • 단어는 글자, 숫자, 아포스트로피가 이어진 덩어리입니다. 그 밖의 문자(문장 부호, 기호, 줄바꿈)는 모두 구분자로 보고 버립니다.
  • 문장 경계는 유지되지 않습니다. 앞 문장의 마지막 단어와 뒤 문장의 첫 단어가 하나의 n-그램으로 묶일 수 있으므로, 문장을 넘나드는 조합은 걸러서 보세요. 이 점이 중요하다면 문장이나 문단 단위로 나누어 분석하십시오.
  • 불용어는 그대로 둡니다. 대신 걸러 주지 않으니, 의미 있는 구만 남기려면 나중에 CSV에서 해당 행을 지우면 됩니다.
  • 단어는 공백과 문장 부호로 찾습니다. 한국어는 띄어쓰기를 하므로 이 도구를 그대로 쓸 수 있습니다. 다만 조사가 붙은 어절이 그대로 한 단어로 잡히니(예: “검색”과 “검색을”이 다른 행), 정밀한 분석이 필요하면 형태소 분석기(KoNLPy, Mecab-ko)로 먼저 처리한 결과를 붙여넣으세요. 반면 중국어, 일본어, 태국어는 단어 사이를 띄지 않아 문장 전체가 한 단어로 잡히므로, jieba나 MeCab, 태국어 분절기로 띄어쓰기를 만든 뒤에 사용해야 합니다.

불용어를 제거해야 할 때

불용어란 “the”, “a”, “of”, “and” 같은 고빈도 기능어이며, 한국어에서는 “그”, “및”, “등”, “수” 같은 말이 여기에 해당합니다. 이런 단어를 남겨 두면 “of the”, “in a” 같은 무의미한 조합이 바이그램 목록을 채웁니다. 이 추출기는 불용어를 그대로 두므로, 의미 있는 구만 필요하면 내려받은 CSV에서 해당 행을 지우세요. 반대로 문체 분석, 저자 판별, 기능어 자체가 신호가 되는 언어 모델 연구에서는 남겨 두는 편이 낫습니다.

SEO 활용 사례

“nginx config generator”를 노리는 글이라면 다음을 확인하세요.

  • 목표 바이그램과 트라이그램이 상위 20위 안에 있는가. “nginx config”가 40위라면 해당 표현을 충분히 쓰지 않았을 가능성이 큽니다.
  • 키워드를 남용하고 있지는 않은가. 압도적인 차이로 1위라면 그 글은 스팸처럼 읽힙니다.
  • 의미가 가까운 표현이 함께 있는가. “server block”, “proxy pass”, “ssl certificate” 같은 관련 바이그램이 있어야 검색엔진이 주제를 충실히 다뤘다고 판단합니다.

NLP 및 학술적 활용

  • 언어 모델은 평활화와 백오프에 n-그램 빈도를 사용합니다(Kneser-Ney, Good-Turing).
  • 저자 판별 연구는 후보 저자별 트라이그램 분포를 비교합니다.
  • 기계 번역 평가(BLEU)는 번역문과 참조 번역 사이의 n-그램 중첩도로 점수를 매깁니다.

자주 묻는 질문

짧게는 트윗 한 개(이 경우 n-그램은 거의 의미가 없습니다)부터 길게는 책 한 장까지 가능합니다. 바이그램의 통계적 신뢰도를 확보하려면 1,000단어 이상, 트라이그램은 10,000단어 이상이 필요합니다. 그보다 적으면 순위가 크게 흔들립니다.

이 도구에서는 구분하지 않습니다. 세기 전에 항상 소문자로 바꾸므로 “The”와 “the”, “Apple”과 “apple”이 각각 한 행으로 합쳐집니다. 대소문자 구분 모드는 없으니, 고유명사나 코드를 따로 세어야 한다면 붙여넣기 전에 텍스트에 표시를 해 두세요.

단어 구분자로 작동하며 n-그램 안에는 절대 들어가지 않습니다. 다만 계산 창을 끊지는 못합니다. 앞 문장의 마지막 단어와 뒤 문장의 첫 단어가 여전히 하나의 바이그램으로 묶입니다. 문장 경계를 엄격히 지켜야 한다면 문장이나 문단을 따로따로 처리하세요.

한국어는 띄어쓰기를 하므로 바로 쓸 수 있습니다. 다만 어절 단위로 잡히기 때문에 “검색을”과 “검색이”가 서로 다른 항목이 됩니다. 조사를 떼고 싶다면 KoNLPy나 Mecab-ko로 형태소 분석을 한 결과를 붙여넣으세요. 중국어, 일본어, 태국어는 단어 사이를 띄지 않으므로 문장 전체가 한 단어로 들어옵니다. jieba(중국어), MeCab(일본어), 태국어 분절기로 띄어쓴 뒤에 붙여넣어야 결과가 의미를 갖습니다.

이 도구는 불용어 목록을 적용하지 않으므로 내려받은 뒤에 직접 걸러야 합니다. 영어에서 가장 널리 쓰이는 목록은 179개 단어로 이루어진 NLTK 세트로, 대부분의 SEO 도구가 채택하고 있습니다. Snowball, SpaCy, scikit-learn은 조금씩 다른 목록을 제공합니다. 한국어라면 KoNLPy 계열에서 쓰는 한국어 전용 불용어 목록을 사용하세요.

관련 도구

이 도구는 다른 언어로도 제공됩니다