ページの本文へ

Hitachi

ソフトウェア

第2回 単語に分けるには?

今回は日立が日本語の文章をどうやって 「単語」 に分解しているのかをお話します。

日本語の文章を 「単語」 に分割する方法には大雑把に2種類あります。

単語を 「単語」 として取り扱う方法
 文章に含まれる単語を辞書データと照らし合わせながら単語に分解する方法

単語を 「単語」 と思わない方法
 文章に含まれる単語を無視して無理やり分解する方法

日立の全文検索では、後者である無理やり分解してしまう方式をとっています。
この方式を 「n-gram方式」 といいます。

n-gram の "n" は数字を意味し、n-gram の "gram" は文字列を意味します。
つまり n-gramn文字の文字列 として無理やり分解するという意味なのです。
これでは少しわかりにくいので、具体的に例をあげてみましょう。

「明日は遠足です」 という例文を n = 2 で分解してみましょう。
n = 2 なので、文章を 2文字ずつ に分割していきます。すると、

「明日」 「日は」 「は遠」 「遠足」 「足で」 「です」

のようになります。このようにして日本語の文章をいわゆる 「単語」 の形に分解して
キーワードとして認識できるようにしているのです。

この方式の最大の特長は 「単語辞書がいらない」 ということです。

日本語の文章を 単語 として分解するためには、
単語として判断するための情報」=「単語辞書」が必要となります。
まぁでも 単語辞書 があればちゃんと 単語 に分解できるんだから
問題ないだろうと思う人も少なくないでしょう。
しかし、そこに大きな落とし穴があるのです。

もし今まで聞いたこともないような 単語 がでてきたらさあどうしましょう?
おや?こんな 単語 はぼくの辞書には載っていないからきっと 単語 ではないんだな。
そうか、それじゃぁこれは飛ばしてしまおう・・・ってなことになってしまって大変です。

こうならないためにも常に 単語辞書 のお手入れをしておく必要があります。
お手入れを怠った場合は先ほどのような落とし穴に落ちてしまいます。

しかし、n-gram方式 の場合は新しい 単語 が出てきても
お構いなしに 単語 に分割してしまうので手間いらずです。
その上、単語辞書 と照らし合わせたりしないので
処理スピードも速いというおまけがついた 「単語分解の方式」 なのです。

このようにして日本語の文章を 「単語」 に分解することができましたが、
まだまだ日本語には日本語独特の 「ワナ」 があります。
次回はその日本語独特の 「ワナ」 である 「異表記」 についてお話します。