人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Ubuntu12.04にインストールしたMeCabのデフォルト辞書の変更方法を教えて下さい。
http://q.hatena.ne.jp/1343137403 で回答して頂き、MeCabが文字化けする問題は解消できたつもりでしたが、デフォルトの辞書?をUTF-8のものにできずに困っています。上記リンク先で頂いた回答でも辞書の変更方法をご指導頂いたのですが、変更が反映されませんでした。

$ sudo update-alternatives --config mecab-dictionary
alternative mecab-dictionary (/var/lib/mecab/dic/debian を提供) には 4 個の選択肢があります。

選択肢 パス 優先度 状態
------------------------------------------------------------
* 0 /var/lib/mecab/dic/ipadic-utf8 80 自動モード
1 /var/lib/mecab/dic/ipadic 70 手動モード
2 /var/lib/mecab/dic/ipadic-utf8 80 手動モード
3 /var/lib/mecab/dic/juman 30 手動モード
4 /var/lib/mecab/dic/juman-utf8 40 手動モード


おそらく、現在mecabのデフォルト辞書は下記の設定になっているように思います。これをUTF8のものに変更する方法をご教授下さい。

$ mecab -D
filename:/usr/local/lib/mecab/dic/ipadic/sys.dic
version:102
charset:euc-jp
type:0
size:392126
left size:1316
right size:1316

●質問者: fenrifja
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● mjy
●100ポイント ベストアンサー

まず、あなたのシステムには二つのmecabコマンドが存在しているということに注意して下さい。これが混乱の原因です。

一つは、Ubuntuの公式パッケージの物です。
synapticやapt-getなどでインストールしたはずです。
インストール先は /usr/ 以下になります。

二つ目は、あなたが自分でコンパイルしてインストールした物です。
インストール先は おそらく /usr/local/ 以下でしょう。

Ubuntuパッケージのmecabを実行するには、

/usr/bin/mecab

とし、自分でコンパイルしたmecabを実行するには、

/usr/local/bin/mecab

とします。

パスを指定せずに、単に"mecab"とした場合どこのmecabコマンドが実行されるかは、$PATH という環境変数によって決定されます。

echo $PATH

を実行するとわかりますが、あなたのシステムでは、/usr/local/bin が /usr/bin より先に指定されていると思います。

つまり、単に"mecab"と打てば、/usr/local/bin/mecab が実行されるはずです。
しかし、update-alternativesであなたが変更しているのは、Ubuntuの公式パッケージのmacab(/usr/bin/mecab)が参照している辞書です。

/usr/bin/mecab -D

とすれば、変更が反映されているのが分かるでしょう。

問題の解決方法はいくつか考えられますが、LinuxやUbuntuに慣れるまでは、複数のmecabを共存させるのではなく、どちらかを削除しましょう。
公式パッケージの物を使うことをお勧めします。


mjyさんのコメント
ちなみに、公式パッケージのmecabが参照する辞書は、"/var/lib/mecab/dic/debian"の物です。 "/var/lib/mecab/dic/debian"は"/etc/alternatives/mecab-dictionary"へのリンクです。 alternativesシステムは"/etc/alternatives/mecab-dictionary"のリンク先を変更する事でデフォルトの辞書を変更します。 こういう仕組みですので、update-alternativesで設定を変更しても、 >|sh| mecab -D ||< の出力の"filename:"欄は変わらない事になります。 これも混乱の元だと思うのでご注意下さい。

fenrifjaさんのコメント
mjyさん ご回答頂きありがとうございます。 ご指摘の通りの状況でした。現在、mecabは2種類存在しており、 1.手動でインストールしたmecab0.994 2.apt-getでインストールしたmecab0.98 の2種です。 1は/usr/local/bin以下に、 2は/usr/bin以下にあります。 アドバイスの通り、1の方を削除したいのですが、適切な方法がわかりません。 今まではソフトウェアセンターで削除していたのですが、ソフトウェアセンターから削除できるのはmecab0.98の方で、おそらくapt-get removeで削除するのも0.98の方だろうと思います。 「Ubuntu ソフト 削除」等でぐぐってみたのですが解決には至りませんでした。 単にファイルを削除すればよいのでしょうか?本題の質問とは異なってしまい恐縮ですが、もしご存じでしたらご教授ください。

mjyさんのコメント
パッケージシステムの管理外にあるソフトウェアは、インストール、アップデート、アンインストールなどに統一された方法がありません。 /usr/local/ 以下は無法地帯です。 インストールに関しては、"make install"で行えるのが大半ですが、"make uninstall" は効かないことが大半です。 (https://www.google.co.jp/search?q=make%20install%20%E3%82%A2%E3%83%B3%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB) おっしゃる通り、単にファイルを削除すればよいです。 >|sh| find /usr/local/ -name '*mecab*' ||< などで関係があるファイルを探して、削除しましょう。 とりあえず、 >|sh| rm /usr/local/bin/mecab ||< だけでも大丈夫でしょう。

fenrifjaさんのコメント
mjyさん 解決しました! アドバイス通りにファイルの削除を行ったところ、文字化けが消えました。 前回の質問も含めまして、丁寧に教えて頂き大変感謝しております。 誠にありがとうございました。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ