2014年5月19日月曜日

忍殺語形態素解析辞書「チャドー」をLinux(UTF-8)環境で使う

「チャドー」のリリースから少し経っているので多分情報はあると思いますが、ちょっと試してみるつもりが、思ったより時間がかかってしまったのでメモしておきます。

UTF-8環境で試したところ、いくつか素直に行かない点がありました。
まず配布物のzipに格納されているファイルの名前がShiftJISで保存されていること。SJIS/複数文字コード対応のunzipがあるならそれを使えばいいですが、とりあえずPythonで書きました。
まあ単純なスクリプトですが、cp437じゃないと戻せないのにハマりました。最初は展開したのをrenameしようとしましたが、そこでもpathlib.Path.globがSJISなファイル名をstr(Python3なのでUnicode文字列)にしてくれるので、encodeで素直にbytesに出来ずにハマり、PEP383 - Non-decodable Bytes in System Character Interfacesを読んで解決しました。str.encode('utf-8', 'surrogateescape').decode('cp932')みたいにすればいいだけ。

で、あとは改行コードがCRLFなのでLFにしたり、ユーザー辞書用のchado.csvの末尾にCtrl-Zがついてる(copyコマンドで /b なしで連結してるからだと思うけど)のを除去すれば使えるはず。

やった手順(ユーザー辞書ではなくシステム辞書に統合)
mecab-ipadic-2.7.0-20070801.tar.gzを展開して、その中に「チャドー」のMecabシステム辞書/*と、忍殺語辞書/chado.csvを移す。

改行コードと文字コードを変更。とりあえずすぐ使えたnkfとsed(GNU sed)で処理。
nkf --overwrite -e -Lu -d *.csv *.def
sed -i '/\x1a/d' chado.csv

後はいつもどおり、./configure --with-charset=utf-8 && makeすれば辞書が出来る。

試す
[hideaki@archbox mecab-ipadic-2.7.0-20070801]$ echo ドーモ。ニンジャスレイヤー=サン。ダークニンジャです。 | mecab -d .
ドーモ  感動詞,*,*,*,*,*,ドーモ,ドーモ,ドーモ,アイサツ,,
。      記号,一般,*,*,*,*,*
ニンジャスレイヤー      名詞,固有名詞,人名,名,*,*,ニンジャスレイヤー,ニンジャスレイヤー,ニンジャスレイヤー,主人公,ニンジャ,名鑑No.1,
=サン  名詞,接尾,人名,*,*,*,=サン,サン,サン
。      記号,句点,*,*,*,*,。,。,。
ダークニンジャ  名詞,固有名詞,人名,名,*,*,ダークニンジャ,ダークニンジャ,ダークニンジャ,宿敵,ニンジャ,名鑑No.2,
です    助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
。      記号,句点,*,*,*,*,。,。,。
EOS

0 件のコメント:

コメントを投稿