« ^ »

N-gramについて少しだけ考える

所要時間: 約 2分

N-gramとは

テキストや音声などの連続したデータから、N個の要素を順番に抽出する事をN-gramと言う。この要素は、文字、単語だけでなく、文章や、指定した範囲の要素でも良い。

このNが1、2、3の時は、以下のように呼ばれる。

N=1
ユニグラム(uni-gram)
N=2
バイグラム(bi-gram)
N=3
トライグラム(tri-gram)

N-gramの例

「今日は良い天気ですね」という文章を例に、N-gramによってデータを切りわけてみる。

ユニグラムの場合

文字の場合
「今」「日」「は」「良」「い」「天」「気」「で」「す」「ね」
単語の場合
「今日」「は」「良い」「天気」「です」「ね」

バイグラムの場合

文字の場合
「今日」「日は」「は良」「良い」「い天」「天気」「気で」「です」「すね」
単語の場合
「今日は」「は良い」「良い天気」「天気です」「ですね」

トライグラムの場合

文字の場合
「今日は」「日は良」「は良い」「良い天」「い天気」「天気で」「気です」「ですね」
単語の場合
「今日」「は」「良い」「天気」「です」「ね」

N-gramが何の役に立つのか

  • N-gramモデルを扱う前提として、文字列や単語の発生確率が直前の文字列や単語に依存すると仮定します。

    • 実際の言葉や文字は、直前の文字列だけに拘束される事はありません。
  • しかし、現実的にはかなりな有効性を示します。

    • そのため、自然言語学の確率・統計的な分野でよく利用されますが、仕組みが非常に単純なために多くの欠点も存在します。
「N-gramモデルを利用したテキスト分析」から引用

引用元1

これはどういう事なのか考えてみる。「今日」という単語があった時、それに続く単語は「は」が登場する事が多そうだ。逆に「猿」なんて単語が続く可能性は低そうだ。これは何となく直感で理解できる。

N-gramはこの要素(上記の例では単語)の繋がりを定量化する方法なのだと理解した。それらを定量化する事で、それぞれの語の繋がりが濃いのか薄いのかという事を比較できる。

上記で参考にした解説には「欠点も多く存在する」とあり、その欠点についても一段掘り下げて説明されている。それについては、また別の機会に勉強してみたい。