N-gram 抽出ツール

n-gram とは、テキスト中で連続する n 個の単語の並びのことです。このツールは入力されたテキストを小文字に変換し、スペースと句読点で単語に区切ったうえで、選んだ長さ(1〜8)の n-gram をすべて数え上げ、出現回数の多い順に並べた CSV の頻度表を返します。SEO のキーワード密度チェック、言語モデルのスムージング、剽窃検出のいずれもが、この表を土台にしています。日本語をお使いの方へ: 本ツールはスペースで単語を区切るため、日本語のテキストはあらかじめ分かち書きにする必要があります(下記参照)。

n-gram を抽出する手順

  1. 1

    テキストを貼り付ける

    記事、文字起こし、商品説明文などを入力します。常識的な長さであれば文字数の制限はありません。

  2. 2

    n を選ぶ

    ユニグラム(1)、バイグラム(2)、トライグラム(3)から最大 8 まで。1 回につき 1 つの長さを処理します。

  3. 3

    抽出する

    テキストは小文字に変換されてから単語に分割され、句読点は区切り文字として扱われて取り除かれます。

  4. 4

    頻度表を読む

    各 n-gram が出現回数とともに、多い順に並んで表示されます。

  5. 5

    CSV をコピーする

    出力はカンマ区切り(N-gram,Count)なので、そのまま表計算ソフトに貼り付けられます。

n-gram の長さごとにわかること

N 名称 用途
1 ユニグラム キーワード密度、トピックの把握
2 バイグラム フレーズ(“search intent”、“page speed”)、共起表現
3 トライグラム ロングテールのフレーズ、特徴抽出
4+ 4-gram 以上 重複コンテンツの検出、剽窃の疑いの検知

このツールがテキストを区切る仕組み

  • すべて小文字に変換します。 そのため “The” と “the” は同じ行にまとまります。
  • 単語とは、文字・数字・アポストロフィが続いたかたまりです。 それ以外の文字(句読点、記号、改行)はすべて区切り文字とみなされ、取り除かれます。
  • 文の境界は保持されません。 前の文の最後の単語と次の文の最初の単語が 1 つの n-gram になることがあります。文をまたいだ組み合わせは割り引いて読み、厳密さが必要なら文単位・段落単位で分析してください。
  • ストップワードはそのまま残ります。 自動では除外しないので、意味のあるフレーズだけがほしい場合は CSV から該当行を削除してください。
  • 単語はスペースと句読点で見つけます。 つまり、単語をスペースで区切る言語でしか単語単位の n-gram にはなりません。日本語は分かち書きをしません(中国語・タイ語も同様)。スペースのない日本語の文は、そのまま「1 つの単語」として扱われてしまいます。まず形態素解析器(MeCab、Sudachi、Janome など)で分かち書きにし、単語がスペースで区切られた状態にしてから貼り付けてください。文字単位の n-gram がほしい場合は、専用のツールをお使いください。

ストップワードを除くべきとき

ストップワードとは、英語の “the”、“a”、“of”、“and” のように高頻度で現れる機能語です。日本語では「の」「は」「する」「こと」などがこれにあたります。残したままだと “of the” や「の の」のような無意味な組み合わせがバイグラムの一覧を埋め尽くします。このツールは除外しないので、意味のあるフレーズだけがほしいときは書き出した表から該当行を削除してください。逆に、文体の分析、著者推定、機能語そのものが手がかりになる言語モデルの研究では残しておくほうが有用です。

SEO での使い方

“nginx config generator” を狙う記事なら、次の点を確認します。

  • 狙ったバイグラム・トライグラムが上位 20 位に入っているか。 “nginx config” が 40 位なら、その語の使用が足りていない可能性が高いです。
  • キーワードを詰め込みすぎていないか。 圧倒的な差で 1 位になっている場合、その記事はスパムのように読まれます。
  • 意味的に近い語が一緒にあるか。 “server block”、“proxy pass”、“ssl certificate” といった関連バイグラムがあることで、検索エンジンはトピックが十分に扱われていると判断します。

NLP・学術分野での利用

  • 言語モデルは、スムージングとバックオフに n-gram の頻度を使います(Kneser-Ney、Good-Turing)。
  • 著者推定の研究では、著者候補ごとのトライグラム分布を比較します。
  • 機械翻訳の評価(BLEU)は、出力訳と参照訳のあいだの n-gram の一致度で採点します。

よくある質問

ツイート 1 本(この長さでは n-gram はほとんど意味を持ちません)から書籍の 1 章まで対応できます。バイグラムで統計的な信頼性を確保するには 1,000 語以上、トライグラムなら 10,000 語以上が目安です。それ未満では順位が大きくぶれます。

あらかじめ分かち書きにした場合にかぎり使えます。本ツールは区切り文字にはさまれた文字と数字のかたまりを「単語」とみなしますが、日本語・中国語・タイ語は単語のあいだにスペースを入れないため、1 文がまるごと 1 単語として入ってきてしまいます。MeCab や Sudachi、Janome(日本語)、jieba(中国語)、タイ語の分かち書きツールで単語をスペース区切りにしてから、その結果を貼り付けてください。

このツールでは区別しません。集計前に必ず小文字化するため、“The” と “the”、“Apple” と “apple” はそれぞれ同じ 1 行にまとまります。大文字・小文字を区別するモードはないので、固有名詞やコードを分けて数えたい場合は、貼り付ける前にテキスト側で目印を付けてください。

単語の区切りとして働き、n-gram の中に入ることはありません。ただし集計の窓を切るわけではないため、前の文の最後の単語と次の文の最初の単語は、やはり 1 つのバイグラムとして数えられます。文の境界を厳密に守りたい場合は、文または段落ごとに分けて処理してください。

本ツールはストップワードのリストを適用しないので、書き出したあとにご自身で絞り込んでください。英語で最も広く使われているのは 179 語からなる NLTK のリストで、多くの SEO ツールが採用しています。Snowball、SpaCy、scikit-learn は少しずつ異なるリストを提供しています。日本語なら SlothLib の日本語ストップワードなどが使えます。

関連ツール

このツールは他の言語でも利用できます