1. 定義と概要
N-gram(Nグラム)とは、テキストを構成する要素(単語または文字)を連続するn個ひとまとまりとして切り出し、テキストの特徴を捉える手法です。nの値によって呼び方が変わり、次のように対応します。
| nの値 | 呼び名 | 切り出し方 |
|---|---|---|
| n=1 | ユニグラム(unigram) | 要素を1つずつ単独で扱う |
| n=2 | バイグラム(bigram) | 要素を2つ連続でひとまとめにする |
| n=3 | トライグラム(trigram) | 要素を3つ連続でひとまとめにする |
それ以上のnにも、同じ命名の考え方が続きます。たとえば「私は朝食を食べた」という文を文字単位でn=3として切り出すと、「私は朝」「は朝食」「朝食を」のように1文字ずつずらしながら3文字ずつの組を作ります。単位を単語に変えても、同じ考え方で単語の連続した組み合わせが得られる仕組みです。
従来の素朴なテキスト処理は、文中にどの単語が含まれるか、何回出現するかにだけ注目する発想が中心でした。この発想では単語の並び、つまり語順の情報をまったく使わないため、語順によって意味が変わる表現を区別しにくいという課題があります。
Nグラム、つまり連続するn個の要素をひとまとまりとして扱う発想は、この語順の情報の一部を取り込む手段として整理されています。
2. 試験対策ポイント
まず整理しておきたいのは、nの値と呼称の対応です。n=1はユニグラム、n=2はバイグラム、n=3はトライグラムと呼ばれ、この対応関係はNグラムを理解するうえでの基本になります。
あわせて、要素の単位による分類も押さえておきたいところです。単語を単位とする場合の呼び名が「単語N-gram」、文字を単位とする場合の呼び名が「文字N-gram」で、それぞれの使い分けや個々の得失は関連する用語の解説に譲りますが、名前と大枠の位置づけとしてここで整理しておきます。
nの大小についても、もう一つの論点として押さえておきたい点があります。nを大きくするほど前後のつながり、つまり文脈を捉えやすくなる一方、出現しうる組み合わせの種類が急激に増えていきます。
組み合わせが増えると、個々の組み合わせが実際に出現する回数は相対的に少なくなり、データがスパース(疎な状態、つまり組み合わせのパターンが多すぎて個々の出現回数がまばらで少なくなっている状態)になりやすい性質があります。この文脈把握力とスパース性のトレードオフは、Nグラムを理解するうえでの中心的な論点です。
Nグラムは、文章をベクトル(数値の並び)として表現する手法の一つに位置づけられます。文中に含まれるNグラムの出現状況を並べてベクトル化(文章を数値の並びに変換し、コンピュータが計算できる形にすること)することができます。この手法は、テキスト分類や言語モデル(単語や文字の並びがどれくらい自然かを確率で表すモデル)の基礎技術として教材で扱われます。
この考え方をさらに拡張し、複数のNグラムの出現状況をまとめてベクトルとして扱う「Bag-of-n-grams」という手法も、関連する用語として整理されます。呼称、単位による分類、スパース性のトレードオフは、まとめて押さえておきたい基本の3点です。
3. 関連概念との比較・相違点
nの大小を比較したときの最大の違いは、文脈把握力とデータのスパース性のどちらを優先するかにあります。両者を軸ごとに並べると、次のような関係になります。
| 観点 | nが小さい場合 | nが大きい場合 |
|---|---|---|
| 文脈の把握 | 前後の文脈情報は乏しくなる | より広い範囲の文脈を反映しやすい |
| 組み合わせの種類 | 少なく抑えられる | 急激に増える |
| データの疎密 | 個々の組み合わせの出現頻度を多く保てる | 出現がまばらになり疎になりやすい |
この二つの性質はどちらか一方だけを追い求めればよいものではなく、扱うテキストの分量や目的に応じてnを選ぶ、という関係にあります。
もう一つ整理しておきたいのが、Bag-of-Words(BoW。文中の単語の出現有無や頻度だけに注目し、語順を無視してテキストを表現する手法)との違いです。BoWは語順を保持するかどうかという点でNグラムと大きく異なります。
BoWは文中にどの単語が何回出現したかだけに注目し、単語が並ぶ順序の情報を完全に捨てる表現方法です。これに対してNグラムは、連続するn個の要素をひとまとめにすることで、局所的な語順の情報を保持します。
n=1のNグラム、つまりユニグラムは、BoWと同じ発想の特殊なケースとして整理されることがあります。単語が一つずつ独立して扱われる点で、両者は事実上同じ扱いになるためです。
4. ビジネス・実務での活用シナリオ
検索エンジンや情報検索の分野では、文字単位のNグラムでインデックス(索引)を作る仕組みが広く使われています。単語単位でインデックスを作ると、表記ゆれ(送り仮名や漢字とひらがなの違いなど、同じ意味の言葉が異なる形で書かれること)や辞書に登録されていない未知の単語をうまく拾えないことがあります。
文字単位のNグラムであれば、単語のまとまりではなく文字の連続した並びで索引を作るため、単語の一部が一致するだけでも検索対象として拾うことができ、検索漏れを抑える効果が期待できます。
入力補完やIME(かな漢字変換の仕組み)でも、Nグラムの考え方が使われています。直前に入力された単語の並び、つまり単語単位のNグラムをもとに、次に来やすい単語を統計的に予測し、変換候補や予測変換として提示する仕組みです。
過去の膨大な文章から単語の連なりの出現傾向を学習しておくことで、文脈に沿った変換候補を先回りして示すことができ、入力にかかる手間が減ります。
スパムフィルタや文書分類の分野でも、Nグラムは特徴量(機械学習のモデルに入力する、データの特徴を数値化した項目)として活用されています。迷惑メールに頻出するNグラムのパターンを手がかりに文章をベクトル化し、正常なメールと迷惑メールを判別したり、文章のジャンルを自動で分類したりする仕組みです。
単語の出現有無だけでなく、連続する単語や文字の並び方まで特徴として取り込めるため、単純な単語の一致だけでは見分けにくい巧妙な迷惑メールの判定にも役立ちます。
5. 要点まとめ
- Nグラムは連続するn個の要素(単語または文字)をひとまとまりとして扱う手法で、n=1はユニグラム、n=2はバイグラム、n=3はトライグラムと呼ばれます。
- 単位が単語か文字かで「単語N-gram」・「文字N-gram」に分かれ、nを大きくすると文脈を捉えやすくなる一方でデータが疎(スパース)になるというトレードオフがあります。
- BoWが語順を捨てて単語の出現有無・頻度だけを見るのに対し、Nグラムは連続する並びをひとまとめにすることで局所的な語順の情報を保持します。
6. 確認問題
問1Nグラムにおいて、n=2の場合はバイグラム、n=3の場合はトライグラムと呼ばれる。
解答・解説をみる
○ 正しい
nの値と呼称の対応は、基本用語として押さえておくとよい関係にあります。n=1はユニグラムと呼ばれ、要素を1つずつ単独で扱う単位にあたります。
問2Nグラムの単位は単語に限られ、文字を単位として区切ることはできない。
解答・解説をみる
× 誤り
正しくはNグラムは単語単位・文字単位のどちらでも定義でき、「単語N-gram」と「文字N-gram」に分かれます。単位を単語のみに限定する記述は誤りです。
問3Nグラムのnを大きくするほど、前後のつながり(文脈)を捉えやすくなる一方、出現しうる組み合わせの種類が増えてデータが疎になりやすい。
解答・解説をみる
○ 正しい
nの大小は、文脈把握力とデータのスパース性のトレードオフとして整理される関係にあります。

