myfinderの技術や周辺的活動のblog

2008年12月23日火曜日

LeopardのMeCabで独自に出力フォーマットを設定する

CodeReposで粛々と書いているプログラムで、MeCabを使ったのだけども、そのときに出力フォーマットを独自定義にする方法を知ったので記録。

LeopardでMeCabをビルドしてインストールした場合、
解析結果の出力フォーマットは「/usr/local/lib/mecab/dic/ipadic/dicrc」に記述されている。
このファイルに、以下のように記述を追加することで、-Ohogeのように指定ができる。

node-format-KEY = STR # 形態素
unk-format-KEY = STR # 未知語形態素
eos-format-KEY = STR # EOS(解析結果フッタ)
bos-format-KEY = STR # BOS(解析結果ヘッダ)

例えば下記のように設定してみる。
とりあえずヘッダもフッタも未知語も設定しない。

node-format-myfinder = %m\t%F-[0,1,2,3]\n # 「表層文字列\tハイフン区切りの品詞情報」

これをコードで呼び出すときには、下記のようにする。

@mecab = MeCab::Tagger.new("-Omyfinder")

こうして呼び出したMeCabオブジェクトで解析をすると、出力は下記のようになる。

# コード
text = "すもももももももものうち"
puts @mecab.parse(text)
# 出力結果
すもも 名詞-一般
も 助詞-係助詞
もも 名詞-一般
も 助詞-係助詞
もも 名詞-一般
の 助詞-連体化
うち 名詞-非自立-副詞可能

# コード
text = "浜岡原発:廃炉・新設計画決定 地元に戸惑いも 菊川市長ら、中電と面会拒否 /静岡"
puts @mecab.parse(text)
# 出力結果
浜岡原発 名詞-固有名詞-一般
: 記号-一般
廃 名詞-サ変接続
炉 名詞-接尾-一般
・ 記号-一般
新設 名詞-サ変接続
計画 名詞-サ変接続
決定 名詞-サ変接続
地元 名詞-一般
に 助詞-格助詞-一般
戸惑い 名詞-一般
も 助詞-係助詞
菊川 名詞-固有名詞-人名-姓
市長 名詞-一般
ら 名詞-接尾-一般
、 記号-読点
中 名詞-固有名詞-地域-国
電 名詞-接尾-一般
と 助詞-格助詞-一般
面会 名詞-サ変接続
拒否 名詞-サ変接続
/ 記号-一般
静岡 名詞-固有名詞-地域-一般

こうやっておけば、BOSをいちいちカットする処理を書かなくてもよくなるし、「名詞かつ固有名詞」や「名詞かつサ変接続」といったワード判定が簡単に実装できる。

おわり。

0 件のコメント: