自然言語処理100本ノック #041 を仕上げ、形態素解析辞書 UniDic を導入した。
やったこと
100本ノック #041
コードを整理した
数週間ぶりで、何をしていたのか思い出すのに時間がかかってしまった。 右上の "knock040" は、"knock041" の誤り。
191028の記録では、
係り元文節インデックス番号のリスト(srcs)は、まだ。
と書いているが、どうも済んだらしい。
完成
「恐しいとも」が、「恐ろし/いとも」と形態素分割されているのが良くない。 MeCab のユーザー辞書に「恐しい」を追加したらいいのかな。
# knock_041.py * cid: dst, srcs morph surface, base, pos, pos1 * 0: 9, [] しかし, しかし, 接続詞, * * 1: 2, [] その, その, 連体詞, * * 2: 5, [1] 当時, 当時, 名詞, 副詞可能 は, は, 助詞, 係助詞 * 3: 4, [] 何, 何, 名詞, 代名詞 という, という, 助詞, 格助詞 * 4: 5, [3] 考, 考, 名詞, 一般 も, も, 助詞, 係助詞 * 5: 9, [2, 4] なかっ, ない, 形容詞, 自立 た, た, 助動詞, * から, から, 助詞, 接続助詞 * 6: 7, [] 別段, 別段, 副詞, 助詞類接続 * 7: 9, [6] 恐し, 恐い, 形容詞, 自立 * 8: 9, [] いとも, いとも, 副詞, 一般 * 9: -1, [0, 5, 7, 8] 思わ, 思う, 動詞, 自立 なかっ, ない, 助動詞, * た, た, 助動詞, * 。, 。, 記号, 句点
形態素解析用の辞書をIPA から UniDic に変更
「UniDic」国語研短単位自動解析用辞書|最新版ダウンロード から unidic-cwj-2.3.0 を入手し、 /usr/local/lib/mecab/dic/
に置いた。
設定ファイルは2つ変更する。1つは UniDic、もうひとつは MeCab。
UniDicの出力を編集
MeCab で使用する際、デフォルトでは出力が他の辞書と違うようなので、統一するために /usr/local/lib/mecab/dic/unidic-cwj-2.3.0/dicrc
を編集した。
参考:MeCab+Pythonでunidicを使う - 静かなる名辞
;以下の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
確認
さきほどの100本ノックの文をMeCabで形態素解析してみた。 UniDic を使ったほうでは、思った通りに解析されている。
# MeCab + IPA しかしその当時は何という考もなかったから別段恐しいとも思わなかった。 しかし 接続詞,*,*,*,*,*,しかし,シカシ,シカシ その 連体詞,*,*,*,*,*,その,ソノ,ソノ 当時 名詞,副詞可能,*,*,*,*,当時,トウジ,トージ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 何 名詞,代名詞,一般,*,*,*,何,ナニ,ナニ という 助詞,格助詞,連語,*,*,*,という,トイウ,トユウ 考 名詞,一般,*,*,*,*,考,コウ,コー も 助詞,係助詞,*,*,*,*,も,モ,モ なかっ 形容詞,自立,*,*,形容詞・アウオ段,連用タ接続,ない,ナカッ,ナカッ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ から 助詞,接続助詞,*,*,*,*,から,カラ,カラ 別段 副詞,助詞類接続,*,*,*,*,別段,ベツダン,ベツダン 恐し 形容詞,自立,*,*,形容詞・アウオ段,文語基本形,恐い,コワシ,コワシ いとも 副詞,一般,*,*,*,*,いとも,イトモ,イトモ 思わ 動詞,自立,*,*,五段・ワ行促音便,未然形,思う,オモワ,オモワ なかっ 助動詞,*,*,*,特殊・ナイ,連用タ接続,ない,ナカッ,ナカッ た 助動詞,*,*,*,特殊・タ,基本形,た,タ,タ 。 記号,句点,*,*,*,*,。,。,。 EOS
# MeCab + UniDic しかしその当時は何という考もなかったから別段恐しいとも思わなかった。 しかし 接続詞,,,,,,しかし,シカシ,シカシ その 連体詞,,,,,,その,ソノ,ソノ 当時 名詞,普通名詞,副詞可能,,,,当時,トージ,トージ は 助詞,係助詞,,,,,は,ワ,ワ 何 代名詞,,,,,,何,ナン,ナン と 助詞,格助詞,,,,,と,ト,ト いう 動詞,一般,,,五段-ワア行,連体形-一般,いう,イウ,イウ 考 名詞,普通名詞,一般,,,,考,カンガエ,カンガエ も 助詞,係助詞,,,,,も,モ,モ なかっ 形容詞,非自立可能,,,形容詞,連用形-促音便,ない,ナカッ,ナイ た 助動詞,,,,助動詞-タ,終止形-一般,た,タ,タ から 助詞,接続助詞,,,,,から,カラ,カラ 別段 副詞,,,,,,別段,ベツダン,ベツダン 恐しい 形容詞,一般,,,形容詞,終止形-一般,恐しい,オソロシー,オソロシー と 助詞,格助詞,,,,,と,ト,ト も 助詞,係助詞,,,,,も,モ,モ 思わ 動詞,一般,,,五段-ワア行,未然形-一般,思う,オモワ,オモウ なかっ 助動詞,,,,助動詞-ナイ,連用形-促音便,ない,ナカッ,ナイ た 助動詞,,,,助動詞-タ,終止形-一般,た,タ,タ 。 補助記号,句点,,,,,。,, EOS
違いとかメモ
- IPA辞書は新しいことばが得意で、UniDic は書きことばが得意らしい(話しことば用、古典用の辞書は別に用意されている)
- UniDic は国立国語研究所規定の「短単位」という単位を使用している。
- 「という」は、IPAでは1単位、UniDicでは2単位
- 「何」(「ナニ」 vs. 「ナン」)
- 「考」(「コウ」 vs. 「カンガエ」)
- 「恐しい」
MeCab のデフォルト辞書を設定
MeCab をターミナルから立ち上げる時は、$ mecab -d 辞書のディレクトリpath
で使う辞書を指定できる。
デフォルト辞書は /usr/local/etc/mecabrc
で指定する。
ユーザー辞書は後でいいや
UniDicを入れ直したので、昨年作ったUniDic用の辞書もコンパイルし直さなければならないような気がする。後でいいや。
以前にやったやつを記録に残していたけど、UniDic は2.3以降ディレクトリ形式が変わったように見える? このままではダメっぽい?
100本ノック #041 の結果は
neko.txt
の係り受け解析を出力 $ cat neko.txt | cabocha -f1 > neko.txt.unidic.cabocha
し、同じプログラムで解析。
# knock_041.py * cid: dst, srcs morph surface, base, pos, pos1 * 0: 5, [] しかし, シカシ, 接続詞, * * 1: 2, [] その, ソノ, 連体詞, * * 2: 3, [1] 当時, トウジ, 名詞, 普通名詞 は, ハ, 助詞, 係助詞 * 3: 4, [2] 何, ナニ, 代名詞, * と, ト, 助詞, 格助詞 いう, イウ, 動詞, 一般 考, カンガエ, 名詞, 普通名詞 も, モ, 助詞, 係助詞 なかっ, ナイ, 形容詞, 非自立可能 た, タ, 助動詞, * から, カラ, 助詞, 接続助詞 * 4: 5, [3] 別段, ベツダン, 副詞, * 恐しい, オソロシイ, 形容詞, 一般 と, ト, 助詞, 格助詞 も, モ, 助詞, 係助詞 * 5: -1, [0, 4] 思わ, オモウ, 動詞, 一般 なかっ, ナイ, 助動詞, * た, タ, 助動詞, * 。, *, 補助記号, 句点
なんやえらい文節減ったやん。かなり辞書に依存するんやな。ここらへんがどんな仕組みで動いているのかも気になってくる。