Edited at

Mecabインストールで文字化けた場合の対処法


この記事について


  • MecabをMacにインストールしようとしたときに、結果の文字化けで躓いたのでその対処の備忘録です

  • versionや日付表記の部分は適宜読み替えてください


Mecabを素直にインストールできるパターン

mecab公式サイトから、本体とIPA辞書データをダウンロードします

mecab.png


mecab本体をインストール

$ tar -xvf mecab-0.996.tar.gz 

$ cd mecab-0.996
$ ./configure
$ make
$ make check
$ sudo make install

$ mecab -v

mecab of 0.996


辞書データをインストール

$ tar -xvf mecab-ipadic-2.7.0-20070801.tar.gz

$ cd mecab-ipadic-2.7.0-20070801
$ ./configure
$ make
$ sudo make install


mecabを実行


  • 文字化けしないパターン

$ echo "mecabで遊ぼうと思ったら文字化ける" | mecab

mecab 名詞,一般,*,*,*,*,*
で 助詞,格助詞,一般,*,*,*,で,デ,デ
遊ぼ 動詞,自立,*,*,五段・バ行,未然ウ接続,遊ぶ,アソボ,アソボ
う 助動詞,*,*,*,不変化型,基本形,う,ウ,ウ
と 助詞,格助詞,引用,*,*,*,と,ト,ト
思っ 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,思う,オモッ,オモッ
たら 助動詞,*,*,*,特殊・タ,仮定形,た,タラ,タラ
文字 名詞,一般,*,*,*,*,文字,モジ,モジ
化ける 動詞,自立,*,*,一段,基本形,化ける,バケル,バケル


  • 文字化けするパターン

これに対処します

$ echo "mecabで遊ぼうと思ったら文字化ける" | mecab

mecab ̾??,??ͭ̾??,?ȿ?,*,*,*,*
? ????,????,*,*,*,*,*
?? ̾??,??ͭ̾??,?ȿ?,*,*,*,*
??? ????,????,*,*,*,*,*
?? ̾??,??ͭ̾??,??̾,̾,*,*,??,?參,?參
??と思? ????,????,*,*,*,*,*
?? ????,????ե??٥å?,*,*,*,*,??,????,????
??ら文 ????,????,*,*,*,*,*
? ̾??,????,*,*,*,*,?,?̥?,?̥?
?化ける ????,????,*,*,*,*,*


文字化けする場合の対処

こちらのページでほとんど解決できたのですが、一部だけ自分の環境とは手順が違っていました


解決策1

まず、mecab本体と辞書をインストールする際に--with-charset=utf8をつけると文字化けが解消することがあります


  • mecab本体

$ cd mecab-0.996

$ ./configure --with-charset=utf8
$ make
$ make check
$ sudo make install


  • 辞書データ

$ cd mecab-ipadic-2.7.0-20070801

$ ./configure --with-charset=utf8
$ make
$ sudo make install

自分の環境では、これでは解決しませんでした


解決策2

解決策1でだめな場合は、自分で辞書の文字コードを変換した上で、もう一度インストールします

mecab本体は、解決策1でインストール済みの想定です

$ cd mecab-ipadic-2.7.0-20070801

$ nkf -w --overwrite *.csv
$ nkf -w --overwrite *.def

mecab-ipadic-2.7.0-20070801/dicrcを編集

$ config-charset = EUC-JP


$ config-charset = UTF-8

再度、辞書をインストールしたところ、よくわからないエラーが発生しました

/usr/local/libexec/mecab/mecab-dict-index -d . -o . -f EUC-JP -t utf8

とあるので、他にもEUC-JP→UTF-8に書き換えなければいけない箇所があるのかと迷走しました

$ cd mecab-ipadic-2.7.0-20070801

$ ./configure --with-charset=utf8
$ make
/usr/local/libexec/mecab/mecab-dict-index -d . -o . -f EUC-JP -t utf8
reading ./unk.def ... iconv conversion failed. skip this entry
:
iconv conversion failed. skip this entry
0
make: *** [matrix.bin] Segmentation fault: 11

結論としては、--with-charset=utf8を付けずに、./configureを実行すると、エラーなくインストールできました

$ cd mecab-ipadic-2.7.0-20070801

$ ./configure
$ make
$ make install

文字化けも解消されています

$ echo "mecabで遊ぼうと思ったら文字化ける" | mecab

mecab 名詞,一般,*,*,*,*,*
で 助詞,格助詞,一般,*,*,*,で,デ,デ
遊ぼ 動詞,自立,*,*,五段・バ行,未然ウ接続,遊ぶ,アソボ,アソボ
う 助動詞,*,*,*,不変化型,基本形,う,ウ,ウ
と 助詞,格助詞,引用,*,*,*,と,ト,ト
思っ 動詞,自立,*,*,五段・ワ行促音便,連用タ接続,思う,オモッ,オモッ
たら 助動詞,*,*,*,特殊・タ,仮定形,た,タラ,タラ
文字 名詞,一般,*,*,*,*,文字,モジ,モジ
化ける 動詞,自立,*,*,一段,基本形,化ける,バケル,バケル