RSS2.0

MeCab で UniDic 辞書を使ってみる

MeCab で使える形態素解析用の辞書は、IPA 辞書の他にもいくつか公開されています。そのひとつであるUniDic は、IPA 辞書よりも個々の単語を詳細に分類したもので、分割した形態素が文中で果たす役割をより精密に検出することができます。UniDic はメンテナンスが頻繁に行われているようで、最新版は 1 ヶ月ほど前の 2013/3/14 にリリースされた 2.1.2 になります。ライセンス形態は GPL、LGPL、BSD License のトリプルライセンスとなっていて、その点でも、エンジニアにとっても採用しやすい辞書となっています。

今回はこの UniDic を実際にビルドし、MeCab から使ってみることと、辞書の再学習までを試してみました。

MeCab で UniDic を使う

UniDic はバイナリ辞書も配布されていますが、ここではソースコードからビルドしてみようと思います。

UniDic をビルドする

UniDic のビルドは、付属の pdf に書かれている通り configure, make, make install でビルドできますが、mecab-dict-index を使ってみました。
IPA 辞書の文字コードは UEC JP ですが、UniDic は UTF8 で配布されているので、文字コードの変換は行っていません。
$ unzip unidic-mecab-2.1.2_src.zip
$ mkdir myUnidic
$ /usr/local/libexec/mecab/mecab-dict-index -d unidic-mecab-2.1.2_src -o myUnidic
$ cp unidic-mecab-2.1.2_src/dicrc myUnidic/
make でビルドした場合、辞書は /usr/local/lib/mecab/dic/unidic にインストールされますが、ここでは myUnidic ディレクトリを用意してそこにビルドしています。

UniDic で形態素解析する

ビルドした UniDic と IPA 辞書でそれぞれ形態素解析を行い、結果を見比べてみました。
こちらは UniDic での形態素解析の結果です。
$ echo "ジョジョの奇妙な冒険を第一部から第四部まで読破した" | mecab -d myUnidic/
ジョジョ	ジョジョ	ジョジョ	ジョジョ-外国	名詞-固有名詞-人名-一般		
の	ノ	ノ	の	助詞-格助詞		
奇妙	キミョー	キミョウ	奇妙	形状詞-一般		
な	ナ	ダ	だ	助動詞	助動詞-ダ	連体形-一般
冒険	ボーケン	ボウケン	冒険	名詞-普通名詞-サ変可能		
を	オ	ヲ	を	助詞-格助詞		
第	ダイ	ダイ	第	接頭辞		
一	イチ	イチ	一	名詞-数詞		
部	ブ	ブ	部	名詞-普通名詞-助数詞可能		
から	カラ	カラ	から	助詞-格助詞		
第	ダイ	ダイ	第	接頭辞		
四	ヨン	ヨン	四	名詞-数詞		
部	ブ	ブ	部	名詞-普通名詞-助数詞可能		
まで	マデ	マデ	まで	助詞-副助詞		
読破	ドクハ	ドクハ	読破	名詞-普通名詞-サ変可能		
し	シ	スル	為る	動詞-非自立可能	サ行変格	連用形-一般
た	タ	タ	た	助動詞	助動詞-タ	終止形-一般
EOS

そしてこちらは IPA 辞書での形態素解析結果です。
$ echo "ジョジョの奇妙な冒険を第一部から第四部まで読破した" | mecab 
ジョジョ	名詞,一般,*,*,*,*,*
の	助詞,連体化,*,*,*,*,の,ノ,ノ
奇妙	名詞,形容動詞語幹,*,*,*,*,奇妙,キミョウ,キミョー
な	助動詞,*,*,*,特殊・ダ,体言接続,だ,ナ,ナ
冒険	名詞,サ変接続,*,*,*,*,冒険,ボウケン,ボーケン
を	助詞,格助詞,一般,*,*,*,を,ヲ,ヲ
第	接頭詞,数接続,*,*,*,*,第,ダイ,ダイ
一部	名詞,副詞可能,*,*,*,*,一部,イチブ,イチブ
から	助詞,格助詞,一般,*,*,*,から,カラ,カラ
第	接頭詞,数接続,*,*,*,*,第,ダイ,ダイ
四	名詞,数,*,*,*,*,四,ヨン,ヨン
部	名詞,接尾,助数詞,*,*,*,部,ブ,ブ
まで	助詞,副助詞,*,*,*,*,まで,マデ,マデ
読破	名詞,サ変接続,*,*,*,*,読破,ドクハ,ドクハ
し	動詞,自立,*,*,サ変・スル,連用形,する,シ,シ
た	助動詞,*,*,*,特殊・タ,基本形,た,タ,タ
EOS

分割された形態素についてはほとんど違いがありませんが、品詞の種類にはいくつか差が見られます。
出力フォーマットが違うのは設定ファイル dicrc で output-format-type が設定されているためで、これをコメントアウトすれば IPA 辞書の出力フォーマットと揃えることができます。

UniDic を再学習させる

IPA 辞書同様 UniDic も学習済みモデルが配布されているので、これを使って辞書を再学習させることができます。

再学習用の辞書を作る

再学習手順は IPA 辞書への再学習方法と同じで、まずは再学習用の辞書を作ります。
ただし、IPA 辞書と UniDic では前述の output-format-type の違いがあるため、単語を CSV に記載する際に必要となる項目が増えています。表層形・左文脈ID・右文脈ID・コスト以降の各語彙項目が、IPA 辞書では 9 項目なのですが、UniDic では 17 項目と大幅に数が増えています。このため、CSV ファイルのフォーマットは以下のようになります。
表層形,左文脈ID,右文脈ID,コスト,品詞大分類,品詞中分類,品詞小分類,品詞細分類,活用型,活用形,語彙素読み,語彙素(語彙素表記 + 語彙素細分類),書字形出現形,発音形出現形,書字形基本形,発音形基本形,語種,語頭変化型,語頭変化形,語末変化型,語末変化形

マニュアルによればこの各語彙項目は、UniDic2 形態論辞書の基本属性に基づくそうなのですが、参照先として紹介されている UniDic2 形態論辞書マニュアルがざっと探したところでは見当たらず、ひとまず他の登録単語に倣いつつ書いていくしかないかなという状況です。

UniDic では、単語は lex.csv に書かれています。特徴的な単語をいくつか抜き出してみました。
暴れ龍,5145,5145,7380,名詞,普通名詞,一般,*,*,*,アバレリュウ,暴れ龍,暴れ龍,アバレリュー,暴れ龍,アバレリュー,混,*,*,*,*
英吉利斯,4793,4793,8423,名詞,固有名詞,地名,国,*,*,イギリス,イギリス-Inglez,英吉利斯,エゲレス,英吉利斯,エゲレス,固,*,*,*,*
これをもとに、以下のような感じで CSV ファイルを用意しました。
$ vi unidic-mecab-2.1.2_src/relearn.csv
ジョジョの奇妙な冒険,,,0,名詞,固有名詞,一般,*,*,*,ジョジョノキミョウナボウケン,ジョジョの奇妙な冒険,ジョジョの奇妙な冒険,ジョジョノキミョーナボウケン,ジョジョの奇妙な冒険,ジョジョノキミョーナボウケン,*,*,*,*
再学習時にこの単語を優先的に認識するように、コストは 0 としておきます。
左文脈 ID と右文脈 ID は自動判定してくれるので空で大丈夫です。

この単語を含めた再学習用の辞書を作成します。
$ /usr/local/libexec/mecab/mecab-dict-index -d unidic-mecab-2.1.2_src -o unidic-mecab-2.1.2_src

できあがった再学習用の辞書での形態素解析の結果がこちら。
$ echo "ジョジョの奇妙な冒険を第一部から第四部まで読破した" | mecab -d unidic-mecab-2.1.2_src
ジョジョの奇妙な冒険	ジョジョノキミョウナボウケン	ジョジョの奇妙な冒険	ジョジョの奇妙な冒険	名詞-固有名詞-一般		
を	オ	ヲ	を	助詞-格助詞		
第	ダイ	ダイ	第	接頭辞		
一	イチ	イチ	一	名詞-数詞		
部	ブ	ブ	部	名詞-普通名詞-助数詞可能		
から	カラ	カラ	から	助詞-格助詞		
第	ダイ	ダイ	第	接頭辞		
四	ヨン	ヨン	四	名詞-数詞		
部	ブ	ブ	部	名詞-普通名詞-助数詞可能		
まで	マデ	マデ	まで	助詞-副助詞		
読破	ドクハ	ドクハ	読破	名詞-普通名詞-サ変可能		
し	シ	スル	為る	動詞-非自立可能	サ行変格	連用形-一般
た	タ	タ	た	助動詞	助動詞-タ	終止形-一般
EOS

ちなみに、単語を登録した CSV のフォーマットが IPA 辞書のままビルドすると、UniDic 付属の dicrc がデフォルトでは unidic 用に設定されているため(output-format-type = unidic)、CSV から必要なカラムが見つからず、以下のエラーが表示されます。
$ echo "ジョジョの奇妙な冒険を第一部から第四部まで読破した" | mecab -d unidic-mecab-2.1.2_src
given index is out of range

学習用コーパスを作る

再学習用辞書での例文の形態素解析結果を、学習用コーパスとして利用します。
ただし、学習用コーパスのフォーマットは UniDic の出力フォーマットではなく、標準の出力フォーマットにする必要があります。output-format-type を指定しないように、mecab コマンドの -O オプションに空文字列を指定して実行します。
$ echo "ジョジョの奇妙な冒険を第一部から第四部まで読破した" | mecab -d unidic-mecab-2.1.2_src -O "" > relearn.copus
$ cat relearn.copus 
ジョジョの奇妙な冒険	名詞,固有名詞,一般,*,*,*,ジョジョノキミョウナボウケン,ジョジョの奇妙な冒険,ジョジョの奇妙な冒険,ジョジョノキミョーナボウケン,ジョジョの奇妙な冒険,ジョジョノキミョーナボウケン,*,*,*,*
を	助詞,格助詞,*,*,*,*,ヲ,を,を,オ,を,オ,和,*,*,*,*
第	接頭辞,*,*,*,*,*,ダイ,第,第,ダイ,第,ダイ,漢,*,*,*,*
一	名詞,数詞,*,*,*,*,イチ,一,一,イチ,一,イチ,漢,*,*,チ促,基本形
部	名詞,普通名詞,助数詞可能,*,*,*,ブ,部,部,ブ,部,ブ,漢,*,*,*,*
から	助詞,格助詞,*,*,*,*,カラ,から,から,カラ,から,カラ,和,*,*,*,*
第	接頭辞,*,*,*,*,*,ダイ,第,第,ダイ,第,ダイ,漢,*,*,*,*
四	名詞,数詞,*,*,*,*,ヨン,四,四,ヨン,四,ヨン,和,*,*,*,*
部	名詞,普通名詞,助数詞可能,*,*,*,ブ,部,部,ブ,部,ブ,漢,*,*,*,*
まで	助詞,副助詞,*,*,*,*,マデ,まで,まで,マデ,まで,マデ,和,*,*,*,*
読破	名詞,普通名詞,サ変可能,*,*,*,ドクハ,読破,読破,ドクハ,読破,ドクハ,漢,*,*,*,*
し	動詞,非自立可能,*,*,サ行変格,連用形-一般,スル,為る,し,シ,する,スル,和,*,*,*,*
た	助動詞,*,*,*,助動詞-タ,終止形-一般,タ,た,た,タ,た,タ,和,*,*,*,*
EOS

UniDic を再学習させる

配布されている UniDic 辞書の学習済みモデルをダウンロードし、再学習を行います。
$ unzip unidic-mecab-2.1.2_model.zip
$ /usr/local/libexec/mecab/mecab-cost-train -c 1.0 -M unidic-mecab-2.1.2_model/model.def -d unidic-mecab-2.1.2_src relearn.copus relearn.model
ここでは再学習させた学習済みモデルを relearn.model として出力させています。

再学習後の辞書を作る

再学習させた学習済みモデルから、再学習後の辞書を作ります。
$ mkdir relearnDictSrc
$ /usr/local/libexec/mecab/mecab-dict-gen -d unidic-mecab-2.1.2_src -m relearn.model -o relearnDictSrc
これをバイナリ辞書にビルドします。
$ mkdir relearnDict
$ /usr/local/libexec/mecab/mecab-dict-index -d relearnDictSrc -o relearnDict
$ cp unidic-mecab-2.1.2_src/dicrc relearnDict

自動計算によって単語に割り当てられた文脈 ID とコストは relearnDictSrc 内の CSV ファイルから確認できます。
$ cat relearnDictSrc/relearn.csv 
ジョジョの奇妙な冒険,4785,4785,14473,名詞,固有名詞,一般,*,*,*,ジョジョノキミョウナボウケン,ジョジョの奇妙な冒険,ジョジョの奇妙な冒険,ジョジョノキミョーナボウケン,ジョジョの奇妙な冒険,ジョジョノキミョーナボウケン,*,*,*,*

再学習した辞書で形態素解析をする

再学習させた UniDic 辞書で、登録した単語を含む文章を形態素解析してみます。
$ echo "町の本屋で文庫化されたジョジョの奇妙な冒険を買った" | mecab -d relearnDict
町	マチ	マチ	町	名詞-普通名詞-一般		
の	ノ	ノ	の	助詞-格助詞		
本屋	ホンヤ	ホンヤ	本屋	名詞-普通名詞-一般		
で	デ	デ	で	助詞-格助詞		
文庫	ブンコ	ブンコ	文庫	名詞-普通名詞-一般		
化	カ	カ	化	接尾辞-名詞的-サ変可能		
さ	サ	スル	為る	動詞-非自立可能	サ行変格	未然形-サ
れ	レ	レル	れる	助動詞	助動詞-レル	連用形-一般
た	タ	タ	た	助動詞	助動詞-タ	連体形-一般
ジョジョの奇妙な冒険	ジョジョノキミョーナボウケン	ジョジョノキミョウナボウケン	ジョジョの奇妙な冒険	名詞-固有名詞-一般		
を	オ	ヲ	を	助詞-格助詞		
買っ	カッ	カウ	買う	動詞-一般	五段-ワア行	連用形-促音便
た	タ	タ	た	助動詞	助動詞-タ	終止形-一般
EOS
ご覧のとおり、1 つの固有名詞として形態素解析されました。
  MeCab  コメント (2)  2013/04/23 22:53:04


公開範囲:
2014/05/12 19:40:35   s.saga (182.165.245.95) 公開範囲: すべて, 承認済み
参考にさせていただきました。
ありがとう御座います。
2014/05/12 21:36:17   momokan 公開範囲: すべて, 承認済み
ありがとうございます!
お役に立てましたら何よりです!
プロフィール HN: ももかん
ゲーム作ったり雑談書いたり・・・していた時期が私にもありました。
カレンダー
<<2018, 7>>
1234567
891011121314
15161718192021
22232425262728
2930311234