数式を一切使わない、テキストマイニング技術の分かりやすい解説 「第一回、形態素解析」

2013年12月25日

ビッグデータを扱う際に、テキストマイニングが重要となってきました。

どうすれば膨大なテキストデータから、意味のある情報を取り出せるかは、少し自然言語処理の理論とアルゴリズムの知識が必要です。

弊社は長年、日本語のテキストマイニングのシステム開発に関わってきました。
クチコミ収集から、意味解析文章要約知識表現まで、色々の領域で自然言語処理の技術開発を手伝わせて頂きました。

その経験から、応用例を挙げながら、何回かにわたって基本となる技術を紹介したいと思います。


「応用例1」検索エンジン

検索エンジンは、文字列検索より少し賢いことをやらないといけません。

例えば、以下の文章を含めてページがあるとします。

ページ①

  昨日、島に出かけました。

ページ②

  会社に忘れ物をしてしまいました。

そこで、ユーザが「しま」というキーワードで検索するとします。

常識だと、ページ①の「島」がヒットしないといけません。
また、ページ②の「しまいました」「しま」はヒットしてはいけません。

但し、単なる文字列検索だと、①はヒットせず、②はヒットしてしまいます。

この問題を解決するためには、形態素解析が必要です。


「形態素解析」

形態素解析とは、文章を意味のある単語に切り分ける処理です。

例えば、

  昨日、島に出かけました。

  昨日 / 、 / 島 / に / 出かけました / 。 /

となります。

同じく、

  会社に忘れ物をしてしまいました。

  会社 / に / 忘れ物 / を / して / しまいました / 。 /

となります。

この切り分けの処理は、「わかち書き」とも呼びます。

但し、形態素処理には、もう一つの重要な処理があります。「品詞付け」です。
それぞれの単語は、どのような単語なのかを解析する処理です。

結果として、

表記 読み 品詞 基本形
昨日 きのう 時相名詞
読点
しま;とう 普通名詞
助詞
出かけました でかけました 動詞 出かける
句点
表記 読み 品詞 基本形   
会社 かいしゃ 普通名詞
助詞
忘れ物 わすれもの 普通名詞
助詞
して して 動詞 する
しまいました しましました 動詞性接尾辞 しまう
句点

となります。

注)説明のため出力を一部編集しました。実際のエンジンの生の出力とは多少異なりますので、ご注意ください。

このように、単語に分かられますと、読みと基本形の欄に、厳密の文字列検索すれば、
「しま」「島」の読みの欄とマッチし、「しまいました」とマッチしないようになり、問題が解決されます。


「形態素解析エンジンの例」

無償: ChaSenMeCabSenLucene Gosen

有償: Perceptrons EngineSemanticFinder

などがあります。


「おまけ(エンジニア向け)」どうやって実装されているの?

簡単に言えば、意味のある単語(とのその品詞)のテーブルを用意し、そのテーブルの中に検索すれば良いです。
そのテーブルは「辞書」とも呼ばれます。

実際のパーサ処理は色々ありますが、イメージ的には

  1. 文章の頭から順番に眺めて
  2. テーブルの中から引いて、現在眺めている文字列がテーブルの中にびったり合う単語があれば、それを出力する
  3. 1.に戻ってその後の文字列を引き続き処理する。

のような処理です。

問題は、

しまいました

/しまいました [しまう] /

にするか

/しま [島] / いました [居る]/

にするのかです。

(両方とも、辞書に存在する意味のある単語から成しています。)

一番長いマッチイングが一番良いマッチングとは限りません。

普通、「島居ました」と言わないのですね。「島」の後に、「に」とか「で」とか「を」とかが無いと意味が成り立ちない、という人間の事前知識があります。
このような「普通は、○○△△と言わない」
「○○の後に、△△が付く」などの事前知識を
形態素解析エンジンに与える必要があります。

その知識の与え方として、「コーパスから学習する」という手法がよく用いられます。


「コーパス」とは?

コーパスとは、人間が予め文章の中の単語に、手動で品詞などの情報を付与したテキストの大集合です。
つまり、色々な文章の形態素解析結果を人間が予め用意をし、エンジンがそれを学習するためのものです。

コーパスの中にある正解を確率モデルなどで学習すれば、形態素解析エンジンは、「しまいました」「島居ました」より「しまいました(しまう)」の方が正しい、と判断できるようになる訳です。

コーパスは購入できます。コーパス制作に専念している日本の会社・研究機関もいくつかあります。
有名なのは、国立国語研究所です。
他もありますので、検索してみてください。

———————————————————————————————————

以上、第一回の「形態素解析」でした。
第2回は近日に掲載する予定です。ご期待下さい。