中道 健一
nkmc****@souya*****
2011年 11月 26日 (土) 13:40:42 JST
近藤様 創屋株式会社 中道と申します。 以前にまとめておいた、システム辞書とユーザ辞書の作り方です。 お役に立つかもしれません。参考までに。 ======================== Linuxサーバ(文字コードがUTF-8)上での辞書コンパイル ※CentOS5を利用しています システム辞書は以下に配置する /usr/local/src/mecab/mecab-ipadic-2.7.0-20070801 ipdicのCSVはEUCになっているのでutf8に変換する # yum install nkf nkf -Ew --overwrite *.csv left-id.def pos-id.def rewrite.def right-id.def unk.def も変換 nkf --utf8 --overwrite left-id.def nkf --utf8 --overwrite right-id.def nkf --utf8 --overwrite pos-id.def nkf --utf8 --overwrite rewrite.def nkf --utf8 --overwrite unk.def ・辞書のソース(システム辞書) /usr/local/src/mecab/mecab-ipadic-* へ 追加したい単語のファイルを上記フォルダにコピー wikipedia_jp.csv ※ファイルの文字コードはUTF8(BOMなし) % cd /usr/local/src/mecab/mecab-ipadic-2.7.0-20070801 % /usr/local/mecab/libexec/mecab/mecab-dict-index -f utf8 -t utf8 ------------------------------------------------------------------------------- reading ./unk.def ... 40 emitting double-array: 100% |###########################################| empty word is found, discard this line empty word is found, discard this line empty word is found, discard this line reading ./wikipedia_jp.csv ... 1060151 reading ./Adverb.csv ... 3032 reading ./Noun.adjv.csv ... 3328 reading ./Noun.number.csv ... 42 reading ./Noun.proper.csv ... 27327 reading ./Filler.csv ... 19 reading ./Noun.place.csv ... 72999 reading ./Noun.csv ... 60477 reading ./Noun.org.csv ... 16668 reading ./Prefix.csv ... 221 reading ./Conjunction.csv ... 171 reading ./Suffix.csv ... 1393 reading ./Postp.csv ... 146 reading ./Postp-col.csv ... 91 reading ./Verb.csv ... 130750 reading ./Noun.adverbal.csv ... 795 reading ./Auxil.csv ... 199 reading ./Noun.demonst.csv ... 120 reading ./Noun.name.csv ... 34202 reading ./Interjection.csv ... 252 reading ./Adnominal.csv ... 135 reading ./Others.csv ... 2 reading ./Adj.csv ... 27210 reading ./Symbol.csv ... 208 reading ./Noun.verbal.csv ... 12146 reading ./Noun.nai.csv ... 42 reading ./Noun.others.csv ... 151 emitting double-array: 100% |###########################################| reading ./matrix.def ... 1316x1316 emitting matrix : 100% |###########################################| done! ------------------------------------------------------------------------------- % su # make -n install <--テスト # make install 以下に辞書がインストールされる ------------------------------------------------------------------------------- make[1]: ディレクトリ `/usr/local/src/mecab-ipadic-2.7.0-20070801' に 入ります make[1]: `install-exec-am' に対して行うべき事はありません. /bin/sh ./mkinstalldirs /usr/local/mecab-0.98/lib/mecab/dic/ipadic /usr/bin/install -c -m 644 ./matrix.bin /usr/local/mecab-0.98/lib/mecab/dic/ipadic/matrix.bin /usr/bin/install -c -m 644 ./char.bin /usr/local/mecab-0.98/lib/mecab/dic/ipadic/char.bin /usr/bin/install -c -m 644 ./sys.dic /usr/local/mecab-0.98/lib/mecab/dic/ipadic/sys.dic /usr/bin/install -c -m 644 ./unk.dic /usr/local/mecab-0.98/lib/mecab/dic/ipadic/unk.dic /usr/bin/install -c -m 644 ./left-id.def /usr/local/mecab-0.98/lib/mecab/dic/ipadic/left-id.def /usr/bin/install -c -m 644 ./right-id.def /usr/local/mecab-0.98/lib/mecab/dic/ipadic/right-id.def /usr/bin/install -c -m 644 ./rewrite.def /usr/local/mecab-0.98/lib/mecab/dic/ipadic/rewrite.def /usr/bin/install -c -m 644 ./pos-id.def /usr/local/mecab-0.98/lib/mecab/dic/ipadic/pos-id.def /usr/bin/install -c -m 644 ./dicrc /usr/local/mecab-0.98/lib/mecab/dic/ipadic/dicrc make[1]: ディレクトリ `/usr/local/src/mecab-ipadic-2.7.0-20070801' か ら出ます ------------------------------------------------------------------------------- ・ユーザ辞書の作成方法 ※euc-jp,LFのcsvファイル user.csvを辞書にします。 元ファイルがUTF-8であればオプションを変えればいいかと % /usr/local/mecab/libexec/mecab/mecab-dict-index \ -d/usr/local/mecab/lib/mecab/dic/ipadic -u 辞書名.dic \ -f euc-jp -t utf-8 user.csv 以上です -- 創屋 株式会社 http://www.souya.biz/ 中道 健一 > Message: 1 > Date: Thu, 24 Nov 2011 20:14:25 -0800 > From: "kondo****@vivin*****"<kondo****@vivin*****> > Subject: [mecab-users 440] ユーザー辞書作成エラーの件 > To: mecab****@lists*****, "kondo****@vivin*****" > <kondo****@vivin*****> > Message-ID:<4ECF1****@vivin*****> > Content-Type: text/plain; charset=ISO-2022-JP > > 初めて投稿致します。 > > 実はmecabのユーザー辞書を作成しようとしたのですが以下のエラーになりました。 > context_id.cpp(97) [it != left_.end()] cannot find LEFT-ID for 名詞,名 > 詞,*,*,*,*,* > ネットで調べて > nkf --utf8 left-id.def> left-id.1 > rm left-id.def > mv left-id.1 left-id.def > もやってみましたが残念ながら同じエラーが発生しユーザー辞書が出来ません。 > ちなみにmecabと辞書は以下の通りです。 > mecab 0-98 > mecab辞書:mecab-ipadic-2.7.0-20070801 > またユーザー辞書に記述した内容は以下の通りです。(辞書内はUTF-8です) > > 一丁,-1,-1,500,名詞,固有名詞,*,*,*,*,一丁,いっちょう,イッチョウ > > どうすれば解決できるのかどなたかご教授頂ければ幸いです。 > よろしくお願いします。 > > 以上 > 近藤 >