MeCabの辞書を鍛える
今日もまたMeCabのお話です。
%mecab -d ~/local/lib/mecab/dic/ipadic-utf8
東京タワーに遊びに行こう
東京 名詞,固有名詞,地域,一般,*,*,東京,トウキョウ,トーキョー
タワー 名詞,一般,*,*,*,*,タワー,タワー,タワー
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
遊び 名詞,一般,*,*,*,*,遊び,アソビ,アソビ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
行こ 動詞,自立,*,*,五段・カ行促音便,未然ウ接続,行く,イコ,イコ
う 助動詞,*,*,*,不変化型,基本形,う,ウ,ウ
EOS
東京タワーは「東京」「タワー」ではなく
「東京タワー」として認識して欲しいところです。
MeCabの辞書を鍛えてみましょう。
Mecab: 単語の追加方法が参考になります。
http://mecab.sourceforge.net/dic.html
ふむふむ。
今回は"ユーザ辞書への追加"を参考にします。
伏字検索で使用しているはてなキーワードとWikipediaのデータ
を転用して辞書登録用のcsvファイルを作りました。
117万語です。
早速辞書を作ってみましょう。
語数が多いのは大丈夫でしょうか...
%/usr/local/libexec/mecab/mecab-dict-index -d$HOME/local/lib/mecab/dic/ipadic-utf8 -u userdic.dic -f utf8 -t utf8 user.csv
%ls -l userdic.dic
rw-r--r-- 1 onone users 169425205 Jun 5 22:41 userdic.dic
169MByteのデカイ辞書があっさりと出来てしまいました。
.mecabrcでユーザ辞書の設定ができるようです。
cp /usr/local/etc/mecabrc ~/.mecabrc
chmod +w ~/.mecabrcdicdir = /home/onone/local/lib/mecab/dic/ipadic-utf8
userdic = /home/onone/local/dic/hatena.dic
さて試してみましょう
%mecab
Killed
(T-T)
辞書が大きすぎたのでしょうか。
はてなキーワードのみで辞書を作ってみます。
24万語。
%ls -l userdic.dic
rw-r--r-- 1 onone users 32822058 Jun 5 22:50 userdic.dic
32MByte程度に減りました。
もう一度試してみます。
%mecab
東京タワーに遊びに行こう
東京タワー 名詞,固有名詞,人名,名,*,*,*,*,*
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
遊び 名詞,一般,*,*,*,*,遊び,アソビ,アソビ
に 助詞,格助詞,一般,*,*,*,に,ニ,ニ
行こ 動詞,自立,*,*,五段・カ行促音便,未然ウ接続,行く,イコ,イコ
う 助動詞,*,*,*,不変化型,基本形,う,ウ,ウ
EOS
おお、ちゃんと「東京タワー」が固有名詞として認識されました。
人名になってしまっているのはuser.csvを作成する際に手を抜いたためです。
#!/usr/bin/ruby -Ku
$: << "/home/onone/local/lib/ruby"
require 'MeCab'
m = MeCab::Tagger.new("-d /home/onone/local/lib/mecab/dic/ipadic-utf8")
print m.parse("すもももももももものうち")
~/.mecabrcの設定が有効になるようです。
userdic を設定しないと場合の結果
%ruby mecab_test.rb
すもも 名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
も 助詞,係助詞,*,*,*,*,も,モ,モ
もも 名詞,一般,*,*,*,*,もも,モモ,モモ
の 助詞,連体化,*,*,*,*,の,ノ,ノ
うち 名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
userdic を設定した場合の結果
%ruby mecab_test.rb
すもももももももものうち 名詞,固有名詞,人名,名,*,*,*,*,*
EOS
「すもももももももものうち」がはてなキーワードにあるようです。
注意点
CGIで使用する場合は.mecabrcが読み込まれないので
とする必要があります。
ではでは。