日本語を単語に分ける形態素解析
筆者が運用しているライフログシステムのうち,いくつかのモジュールには,文章から単語を取得するための日本語の形態素解析システムを組み込んでいます。
形態素解析は,英語のように単語を分けて表記しない日本語の文章を,単語に分割する処理をいいます。
たとえばニュースからトレンドを取得してリマインドするような場合には,形態素解析による単語の分析があるとよいのです。
ライフログシステム全体では日々,約100~200ファイル程度を形態素解析しています。この程度の規模で実用に使うために,奈良先端科学技術大学の開発した『茶筌』を使用しています。
奈良先端科学技術大学の開発した『茶筌』
![奈良先端科学技術大学の開発した『茶筌』 奈良先端科学技術大学の開発した『茶筌』]()
現在は,sourceforgeで入手できます。
ほかにもいくつか形態素解析システムはあるのですが,Windows用でインストール用のドキュメントがわかりやすいものというと,『茶筌』が筆頭でした。
『茶筌』,Yahoo!形態素解析
そのライフログシステムのうち,ごく一部分を一般用にフリーウェアでリリースもしています。
たとえば,形態素解析を使用したシステムには,あだ名をつける候補を多数表示してあだ名をつける作業をサポートするソフト『nicknameMaker』や『buautyWallpaper』などがあります。
『nicknameMaker』
![『nicknameMaker』 『nicknameMaker』]()
名前の解析にYahoo!形態素解析APIを使用しています。
『buautyWallpaper』
![『buautyWallpaper』 『buautyWallpaper』]()
こちらも名前の解析にYahoo!形態素解析APIを使用しています。
これらを作成する場合に悩んだ点は,普通のPCには『茶筌』をインストールしていることを期待できないことでした。だからといって,『茶筌』をインストールしてくださいと願うことはユーザーの負担となります。一般的に,形態素解析を必要とするのは,おおむね国語系か自然言語解析系の研究者に限られるものです。
そこで,インターネットにつながっていることを前提として,『茶筌』の代わりに,Yahoo!の提供するAPIサービスであるYahoo!形態素解析を使用することにしました。
補足するならば,インストールして利用する『茶筌』の場合は同時に扱える文書の容量などの制限はほとんどなく,限界はシステムのみに依存しないこと。APIサービスの場合はトラフィックなどの関係で,限界はかなり低めに抑えられることです。
ただし『nicknameMaker』や『buautyWallpaper』では,せいぜい名前を形態素解析する程度なので,限界が低くても事実上問題にはなりません。
変わる言葉と未知語
形態素解析にとっての大きな課題のひとつは,言葉が変わるものであることです。古典の言葉と近世の言葉,そして現代の言葉は,そのままでは意味も伝わらないほどに変貌しています。そこまでの年代を経ていなくても,言葉は日々変貌しつづけています。
形態素解析には巨大な辞書が必要ですが,そもそも言葉自体が変わっていることを前提にすると,その巨大辞書を日々メンテナンスしつづけなければならない,という大きな課題に直面しているわけです。
ライフログシステムとして運用していると,なるほどたしかに言葉は変貌しつづけ,言葉が対象としている文化事象も変貌しつづけていることを実感します。いやこれでは順番が逆ですね。現象が変貌し,それを表現する言葉も変貌している。現象を記録して活用するライフログシステムも当然のことながら変化を余儀なくされる,ということです。
それを「生きている」ことというのはたやすいのですが,困ったことに,このように変貌しつづけているライフログシステムには「終わり」がないのです。終わりも区切りもない。ただ変化だけがある状態です。
変化するのは悪いことではないのですが,問題なのは,変化に合わせたメンテナンスコストは,思った以上に高い,ということです。
辞書のメンテナンスコスト
新しいアイドルが出る,新しい政治家が出る,新しい友達ができる,新曲ができる,新しいサービスを使う,新しいコンピュータを使う,新番組を見る,知らなかった土地に行く,などなど。さまざまなときに新しい現象と直面する機会があり,そのたびに,その現象を表現するための言葉が必要となります。言葉が増えれば,形態素解析の辞書に登録しなければならないのです。
辞書の編纂者や国語学者でない一介のライフログシステムの運用者にとっては,これはなんとも手間のかかる話です。ある程度暇な時や気が向いたときには悪くない手作業なのですが,それにしても運用しつづけて成果を出すのには単調すぎます。
そこで,ふと思いついたのが,『茶筌』とYahoo!のYahoo!形態素解析を連動して,自動的に形態素解析辞書を生成できないか,というアイデアです。
『茶筌』では,辞書に登録されていない言葉を「未知語」に分類します。そこで,未知語があったら,それをYahoo!形態素解析で解析して,その結果を『茶筌』の辞書にフィードバックしようというわけです。未知語の数はある程度限られており,新語や造語が多いわけです。現代と切り結んでいるYahoo!の形態素解析には,未知語の登録を期待できるのではないか,と。
まあよく考えてみると,単にAPIを介して辞書をコピーしているだけのような気もしますが,これは少しばかり試してみるに値するアイデアだと感じています。
Yahoo!の辞書はYahoo!の内部で人手を介してメンテナンスしているのでしょうから,メンテナンスコストはかかっているはずです。しかしながら,そこをもし自動にできるとしたら,このようなシステムの運用で,辞書は自動的に学習するようになる可能性もあります。すくなくともYahoo!の辞書を使えるレベルからいうと,メンテナンスコストはなくなります。
ライフログシステムは,ある程度自律的な運用をする必要があります。いわばロボットを作っているようなものなのです。辞書を学習するロボットは,その自動的に向上するロボットに,一歩近づくことができるのかもしれません。