土佐弁で「いやー雨がふっちゅう」という言葉がある。これを標準語に翻訳すると「おお、私が気づかないうちに雨が降り始め、そして降り止んだようだ」という感じかな。過去完了形なんて標準語にないので正しく翻訳が難しいのだが、方言にはこういう言葉が結構あるものだ。
さて、そんなわけで(どんなわけだ)形態素解析エンジンの話。
その昔、ケータイ画像投稿掲示板を作った時に検索要素の吸いだしにChasenを使った事がある。が、今はMeCabというのがあるらしいので使ってみた。
Debian lennyなので簡単に入る。ただしそのままだとEUC-JPエンジンになってしまう。うちにあわせてUTF-8辞書をインストールした。(わざわざ変換する必要はありません)
# aptitude install mecab mecab-jumandic-utf8
あとは、こんな感じで実行できる。
$ echo "セリオはつぶやいた。「その任務は貴方のマテバで実行可能と思われます」"|mecab セリオ 名詞,人名,*,*,*,*,* は 助詞,副助詞,*,*,は,は,* つぶやいた 動詞,*,子音動詞カ行,タ形,つぶやく,つぶやいた,補文ト 代表表記:呟く 。 特殊,句点,*,*,。,。,* 「 特殊,括弧始,*,*,「,「,* その 指示詞,連体詞形態指示詞,*,*,その,その,* 任務 名詞,普通名詞,*,*,任務,にんむ,代表表記:任務 は 助詞,副助詞,*,*,は,は,* 貴方 名詞,普通名詞,*,*,貴方,あなた,代表表記:あなた の 助詞,接続助詞,*,*,の,の,* マテバ 名詞,普通名詞,*,*,*,*,* で 助詞,格助詞,*,*,で,で,* 実行 名詞,サ変名詞,*,*,実行,じっこう,代表表記:実行 可能 形容詞,*,ナ形容詞,語幹,可能だ,かのう,代表表記:可能だ と 助詞,格助詞,*,*,と,と,* 思わ 動詞,*,子音動詞ワ行,未然形,思う,おもわ,補文ト 代表表記:思う れ 接尾辞,動詞性接尾辞,母音動詞,基本連用形,れる,れ,* ます 接尾辞,動詞性接尾辞,動詞性接尾辞ます型,基本形,ます,ます,* 」 特殊,括弧終,*,*,」,」,* EOS $
うまくいっているようだが、固有名詞である「セリオ」「マテバ」がちょっと違う。これは未登録の単語であるため前後関係から類推しているようだ。さっそくであるがひとつ登録してみよう。
MeCabは、活用形のある言葉の登録については自力の解析が必要なので大変めんどくさい。しかし人名程度ならば簡単である。
こちらを参考にさせていただき、以下の辞書を作る。
* userdic.csv * セリオ,1223,1223,223,名詞,固有名詞,人名,名,*,*,せりお,セリオ,セリオ
これを、以下の方法でバイナリ化。
$ /usr/lib/mecab/mecab-dict-index -d/var/lib/mecab/dic/juman-utf8 -u .mecab.dic -f utf8 -t utf8 userdic.csv /var/lib/mecab/dic/juman-utf8/pos-id.def is not found. minimum setting is used reading userdic.csv ... 1 emitting double-array: 100% |###########################################| done! $
さらに、/etc/mecabrc に以下を書き込む。
userdic = /置き場/だよ〜ん/.mecab.dic
んで、以下を実行してみる。
『セリオ』は固有名詞である。出現頻度を223と意図的に高くしてみた事もあり、ばっちり拾ってます。
セリオ 名詞,固有名詞,人名,名,*,*,せりお,セリオ,セリオ は 助詞,副助詞,*,*,は,は,* つぶやいた 動詞,*,子音動詞カ行,タ形,つぶやく,つぶやいた,補文ト 代表表記:呟く 。 特殊,句点,*,*,。,。,* 「 特殊,括弧始,*,*,「,「,* その 指示詞,連体詞形態指示詞,*,*,その,その,* 任務 名詞,普通名詞,*,*,任務,にんむ,代表表記:任務 は 助詞,副助詞,*,*,は,は,* 貴方 名詞,普通名詞,*,*,貴方,あなた,代表表記:あなた の 助詞,接続助詞,*,*,の,の,* マテバ 名詞,普通名詞,*,*,*,*,* で 助詞,格助詞,*,*,で,で,* 実行 名詞,サ変名詞,*,*,実行,じっこう,代表表記:実行 可能 形容詞,*,ナ形容詞,語幹,可能だ,かのう,代表表記:可能だ と 助詞,格助詞,*,*,と,と,* 思わ 動詞,*,子音動詞ワ行,未然形,思う,おもわ,補文ト 代表表記:思う れ 接尾辞,動詞性接尾辞,母音動詞,基本連用形,れる,れ,* ます 接尾辞,動詞性接尾辞,動詞性接尾辞ます型,基本形,ます,ます,* 」 特殊,括弧終,*,*,」,」,* EOS $
同様にマテバも固有名詞として登録してしまえば、こちらも正しく判定するようになる。