はじめに
MeCabの辞書といえばipadicが定番ですが、unidicという辞書もあります。
ちょっとこれを使いたくなったので、使ってみることにしました。
なお、MeCabおよびmecab-pythonはすでにipadic等で使える状況になっているものとします。
目次
unidicのいいところ
- 語彙や単語の分割(これに関しては良し悪しの世界・・・ipadicにはmecab-ipadic-NEologdがあるし)
- 話し言葉、古文版の辞書がある
- 分類語彙表(シソーラス)と組み合わせて使える。
unidicをmecabで使えるようにする
とりあえず落としてきます。
最新版ダウンロードのページからダウンロードできます。ファイルサイズがでかいので、気長に落とします(相手サーバの回線は速いらしく、私が落としたときは十分程度で終わりました)。
ダウンロードが終わったら、解凍してディレクトリを作ってください。場所はどこでも構いませんが、わかりやすい場所にしておくことをおすすめします*1。
できあがったディレクトリの中には、けっこう色々なファイルが入っています。が、その中身がすべて必要かというとそうでもなく、確認していませんが、
- char.bin
- matrix.bin
- sys.dic
- unk.dic
- dicrc
あたりがあればとりあえず動くはずです。この他には、ライセンスファイル等と、自分でビルドするときに必要になるファイルが同包されています。ビルドするのは大変なので、今回はバイナリ版を素直に使うことにします*2。なお、ビルド手順についてはこちらが参考になります。
MeCab で UniDic 辞書を使ってみる / 桃缶食べたい。
なお、実行する前に、こちらを参考にしてunidicのdicrcを編集し、出力フォーマットを整えておきます。
デフォルトの出力フォーマットは、何かうまくいっていないような感じだからです。
;以下の2行をコメントアウトする(連続しているとは限らない) ;bos-feature = BOS/EOS,*,*,*,*,*,*,*,*,*,*,*,*,*,*,*,* ;node-format-unidic22 = %m\t%f[0],%f[1],%f[2],%f[3],%f[4],%f[5],%f[6],%f[7],%f[8],%f[9],%f[10],%f[11],%f[12],%f[13],%f[14],%f[15],%f[16],%f[17],%f[18],%f[19],%f[20],%f[21],%f[22],%f[23],%f[24],%f[25],%f[26],%f[27],%f[28]\n ;以下の2行を追加 bos-feature = BOS/EOS,*,*,*,*,*,*,*,* node-format-unidic22 = %m\t%f[0],%f[1],%f[2],%f[3],%f[4],%f[5],%f[10],%f[9],%f[11]\n
2018年7月現在では上記リンクとは微妙に設定ファイルの書式が変わっているようですが、そんなに困惑するほどの違いはないのでそのまま書き換えます。
書き換えたら、コマンドラインで以下のように打ってみます。
$ mecab -d 解凍してできたディレクトリのパス 適当な日本語 適当 名詞,普通名詞,サ変形状詞可能,,,,適当,テキトー,テキトー な 助動詞,,,,助動詞-ダ,連体形-一般,だ,ナ,ダ 日本 名詞,固有名詞,地名,国,,,日本,ニホン,ニホン 語 名詞,普通名詞,一般,,,,語,ゴ,ゴ EOS
上のように出力されれば成功です。
unidicをデフォルトにしたければ、mecabrcなどを書き換えるという作業がこの後に続きますが、私はデフォルトはipadicでいいのでそのままにします。
mecab-pythonから呼ぶ
コマンドライン引数をMeCab.Taggerの引数に渡すだけ。
>>> import MeCab >>> tagger = MeCab.Tagger("-d 解凍してできたディレクトリのパス") >>> print(tagger.parse("何らかの日本語")) 何 代名詞,,,,,,何,ナン,ナン ら 接尾辞,名詞的,一般,,,,ら,ラ,ラ か 助詞,副助詞,,,,,か,カ,カ の 助詞,格助詞,,,,,の,ノ,ノ 日本 名詞,固有名詞,地名,国,,,日本,ニホン,ニホン 語 名詞,普通名詞,一般,,,,語,ゴ,ゴ EOS
簡単でいいですね。