「Googleの頭脳」

modmasa2006-11-24

N-gram言語モデル

入力された文章を「N文字の文字列として区切る」という方式のこと。文章に含まれる単語を無視して文字列単位で分解し、それを単語として認識する方法。N-gram の長所として、検索漏れがない、文法解析をしていないので多言語展開が容易などがあり、漏れがないという利点を利用して特許情報の全文検索に用いられたりすることがある。短所としては、単語に基づく方式に比べ、索引のサイズが大きくなることがあげられる。

突然ですが、穴埋めクイズです。下線部に入る単語はなんでしょう?

グーグルで_____

おそらく、「検索」「調べる」「探す」といった単語を思いつくのではないでしょうか? 実際に、Webにあるドキュメントをくまなく調べ、「グーグルで」の後にくる単語を調べると、「検索」が1位であるとがわかります。

一般に、直前の(N-1)個の単語を見て、次の単語を予測するモデルをN-gram言語モデルといいます。さきほどは、「グーグル」 と 「で」の2単語から次を予想しているので、3-gram言語モデルの例となります。現時点の単語が、直前の(N-1)個のみに影響を受けるという仮説は、一見現実離れしているようですが、実際には非常に有効な場合も多く、かな漢字変換OCRのエラー訂正、機械翻訳音声認識などに広く用いられています。たとえば、音声認識の場合、ノイズ等で現時点の単語をシステムが聞き取れなくても、言語モデルを使って過去の単語から予測することができます。

このたび、Web から抽出した約200億文(約2550億単語)の日本語データから作成したn-gramデータ(1〜7 gram)を公開致しました。データの配布にあたっては特定非営利活動法人 言語資源協会(以下、GSK)の言語資源流通サービスを利用させて頂いており、団体・個人の区別なく御利用頂けます。詳しくはこちらのページを御覧下さい。(なおデータ配布についてのお問い合わせはGSKへお願い致します。)
Google Japan Blog: 大規模日本語 n-gram データの公開

さて、実際のデータの中身ですが次のようになっています。

総単語数: 255,198,240,937 (2550億)
総文数: 20,036,793,177 (200億)
異なり 1-gram 数: 2,565,424
異なり 2-gram 数: 80,513,289
異なり 3-gram 数: 394,482,216
異なり 4-gram 数: 707,787,333
異なり 5-gram 数: 776,378,943
異なり 6-gram 数: 688,782,933
異なり 7-gram 数: 570,204,252

以下が 7-gram データの例です。7つの単語の並びのあとに、その並びの出現頻度が記録されています。

グーグル で 検索 し て い た 39
グーグル で 検索 し て い たら 143
グーグル で 検索 し て い て 45
グーグル で 検索 し て いる と 33
グーグル で 検索 し て おく べき 27
グーグル で 検索 し て ください 。 92
グーグル で 検索 し て こちら の 37
グーグル で 検索 し て しまい まし 24
グーグル で 検索 し て たら さぁ 50
グーグル で 検索 し て たら 見つけ 37
グーグル で 検索 し て で て 26
グーグル で 検索 し て み た 639
グーグル で 検索 し て み たら 450


そもそも、今回のデータ公開はある大学の先生との雑談をきっかけとして、工藤と賀沢が「20%ルール」を使っておこなった成果です。(Google の「20%ルール」とは、勤務時間の20%を自分の好きなことに使ってよい、という社内ルールです。)

実は英語に関しては Googlen-gramデータを既に公開しています。今回の日本語n-gramデータは、英語データを作成したシステムに次のような日本語独自の処理を加えて構築しています。(データの作成はGoogleの大規模分散処理システムMapReduceを用いて、数千台規模の計算機クラスタを使って行いました。)

文字の正規化 : 日本語には半角全角や特殊文字といった文字のバリエーションがあるため、Unicode NFKC に基づいた正規化を行いました。
単語分割: 日本語は英語のようにスペースで単語が分割されていません。そこで、工藤が開発に携わっているオープンソース形態素解析エンジンMeCabを使用して単語に分割しました。(余談ですが、個人的に関わっているソフトウェアがWeb全体を解析するのに使われたのは、とてもエキサイティングな経験で、 エンジニア冥利に尽きます。(工藤))

データ自体はとてもシンプルなものですが、使い方次第で色々と面白いことができると思います。是非お試し下さい。

なお今回の言語資源協会を通じたデータ公開にあたっては、北陸先端科学技術大学院大学の白井清昭先生に多大な御尽力を頂きました。この場を借りて御礼申し上げます。