1行定義
n-gramとは、文章中で連続するn個の文字や単語の並びと、その並びを単位として文章を扱う考え方のことです。
くわしく
n-gramは、文章を「連続するn個の要素」に区切って扱う考え方です。要素は文字のことも、単語のこともあります。nが1ならuni-gram、2ならbi-gram、3ならtri-gramと呼びます。
たとえば「猫/が/魚/を/食べる」と単語に区切った文の単語bi-gramは、「猫/が」「が/魚」「魚/を」「を/食べる」の4つです。
n-gram言語モデル
文章がどれくらい自然かを確率で表すのが言語モデルです。n-gram言語モデルは、「次の単語は直前のn−1語だけで決まる」と単純化します。この単純化をマルコフ性の仮定と呼びます。bi-gramならP(食べる | を)のように直前の1語だけを条件にし、その確率をコーパスでの出現回数から求めます。文全体の確率は、これらの確率の積で近似します。
統計的機械翻訳や音声認識では、訳文や認識結果の候補がどれだけ自然かを評価するのに、長く使われてきました。古くは1948年に、Shannonが文字や単語のn-gramを使って英語らしい文を作る例を示しています。
弱点
nを大きくすると長い文脈を見られます。しかし、ありうる並びの数は語彙の数のn乗で増えます。学習データに一度も現れない並びの確率が0と推定される問題が起きやすく、確率を少しずつ割り振り直すスムージングで対処します。また、n−1語より前の情報は使えません。この限界を超えるために、RNNやTransformerによるニューラル言語モデルが発展しました。
言語モデル以外の使い道
- 特徴量:BoWで数える単位をbi-gramなどに広げ、近くの語順を一部とり込みます。
- 文字n-gram:単語に区切らずに文字の並びのまま扱えるため、全文検索の索引に使われます。fastTextは、単語を文字n-gramの集まりとして表し、未知語にもベクトルを与えます。
覚え方
「n個ずつ、1つずらしで切り出す」と覚えます。
G検定での出題
出題のされ方
nの値とuni-gram・bi-gram・tri-gramの対応、直前のn−1語から次の語の確率を求めるn-gram言語モデルの考え方、nを大きくすると学習データが足りなくなる問題、文字n-gramと単語n-gramの違いが問われます。
混同しやすい用語
| 用語 | 意味 |
|---|---|
| n-gramこのページの用語 | 文章中で連続するn個の文字や単語の並びと、その並びを単位として文章を扱う考え方 |
| スキップグラム | word2vecの2つのモデルのうち、中心の単語から周辺の単語を予測するように学習して、単語の分散表現を得るモデル |
◯×チェック
次の文が正しいか、誤りかを選んでください。
-
n-gram言語モデルでは、次の単語の確率を、文の先頭から直前までのすべての単語を条件として求める。
答えを見る
答え × 誤り
条件にするのは直前のn−1語だけです。たとえばtri-gramなら直前の2語です。それより前の語の影響は扱えず、この限界はRNNやTransformerによる言語モデルで補われました。
-
語彙が1万語のとき、単語のtri-gramとしてありうる並びの数は、bi-gramの1万倍になる。
答えを見る
答え ◯ 正しい
bi-gramは1万の2乗で1億通り、tri-gramは1万の3乗で1兆通りです。nを大きくするほど組み合わせが急増し、学習データに一度も現れない並びが増えます。
-
「人工知能」を文字単位のbi-gramに分けると、「人工」「工知」「知能」の3つになる。
答えを見る
答え ◯ 正しい
1文字ずつずらしながら、連続する2文字を取り出します。4文字の語からは3つ、一般にm文字からはm−1個のbi-gramができます。
この用語の練習問題
出典
- G検定 試験出題範囲(シラバス2024)第1.4版 (技術分野 項目27 自然言語処理)
- Daniel Jurafsky, James H. Martin, Speech and Language Processing(3rd ed. draft) (Chapter 3 N-gram Language Models)
- Claude E. Shannon, A Mathematical Theory of Communication, Bell System Technical Journal 27(3), 379–423 (1948)
- Piotr Bojanowski, Edouard Grave, Armand Joulin, Tomas Mikolov, Enriching Word Vectors with Subword Information (2016)