N-gramとは
Nグラム
テキストを連続するN個の単語・文字の並びに区切って扱う、統計的言語モデルの基礎となる表現手法
ひとことで言うと
文章を連続するいくつかの単語や文字のまとまりで区切る、古くからある言語処理の方法。
概要
N-gramとは、テキストを連続するN個の単語(または文字)の並びの単位に区切って扱う手法。 Nが1の場合はUnigram(単語単体)、2の場合はBigram(2語の並び)、3の場合はTrigramと呼ばれる。 直前のN-1個の単語から次の単語の出現確率を推定する統計的言語モデル(N-gramモデル)の基礎単位として使われ、深層学習以前の自然言語処理において、機械翻訳・音声認識・文章生成等で広く用いられていた。 現在のLLMは主にニューラルネットワークベースの言語モデルを用いる一方、テキストの重複検出や簡易な言語モデルの構築等では今もN-gramの利用場面がある。
背景
コンピュータが自然言語のテキストを確率的に扱うには、単語の出現しやすさや並び方の傾向を数値化する必要があった。 N-gramは、直前の少数の単語列から次の単語の出現確率を推定するという単純化によって、統計的に言語をモデル化する手法として発展した。
利点
- モデルの構造が単純で、計算コストが低く実装しやすい
- 深層学習モデルと比べて、学習に必要なデータ量・計算資源が少なくて済む
欠点
- 直前のN-1個の単語しか参照しないため、より長い文脈の依存関係を捉えられない
- 学習データに出現しない単語列に対しては確率をうまく推定できない(データスパース性の問題)
比較
- トークナイゼーション — N-gramは、トークン化されたテキストを連続するN個の単位に区切って扱う手法
- LLM — N-gramモデルが直前の少数の単語のみを参照するのに対し、LLMはTransformerの自己注意機構により長い文脈全体を考慮できる