n-gramとは

エヌグラム別名 Nグラム、N-gram

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の違いが問われます。

混同しやすい用語

用語意味
スキップグラムword2vecの2つのモデルのうち、中心の単語から周辺の単語を予測するように学習して、単語の分散表現を得るモデル

◯×チェック

  1. n-gram言語モデルでは、次の単語の確率を、文の先頭から直前までのすべての単語を条件として求める。

    答えを見る

    答え × 誤り

    条件にするのは直前のn−1語だけです。たとえばtri-gramなら直前の2語です。それより前の語の影響は扱えず、この限界はRNNやTransformerによる言語モデルで補われました。

  2. 語彙が1万語のとき、単語のtri-gramとしてありうる並びの数は、bi-gramの1万倍になる。

    答えを見る

    答え ◯ 正しい

    bi-gramは1万の2乗で1億通り、tri-gramは1万の3乗で1兆通りです。nを大きくするほど組み合わせが急増し、学習データに一度も現れない並びが増えます。

  3. 「人工知能」を文字単位のbi-gramに分けると、「人工」「工知」「知能」の3つになる。

    答えを見る

    答え ◯ 正しい

    1文字ずつずらしながら、連続する2文字を取り出します。4文字の語からは3つ、一般にm文字からはm−1個のbi-gramができます。

練習問題

n-gramの問題(3問)
  1. 統計的機械翻訳の訳文選択
  2. bi-gram言語モデルの確率
  3. 全文検索の索引の単位

AIで作成 人による確認:未 誤りを報告

出典と作成について

作成:ウカトレ編集部(AIで作成し、別のAIが一次資料と照合。手順は編集方針)

公開日: 最終更新日: 最終確認日:

対応シラバス:シラバス第1.4版 技術27

改訂履歴

表示設定

テーマ
文字の大きさ
問題演習