さくら共有サーバー、UTF-8の辞書でmecabを使う方法

(mecab本体のインストールはこちら。ただしさくら共用にはあらかじめ mecab がインストールされているので不要。php-mecab を使用する場合も不要。)
さくら共用サーバーにmecabをインストールする

さくらインターネットにはmecabが最初からインストールされている。
しかし辞書の文字コードがEUC-JPなので自分の環境では文字化けしてしまう。

これを解決するためには、UTF-8の辞書をインストールする。以下、その方法。

まず、インストール先を決める。さくら共有サーバーでインストール権限があるのは、ホームディレクトリ以下。
自分でコンパイルしたアプリケーションをインストールする場所は、ホームディレクトリ以下のlocalフォルダが一般的のよう。

0.インストールするディレクトリを作成しておく
————————————————
/home/username/local/mecab-dic/ipadic-utf8 ←localディレクトリはないので新規作成
————————————————

1.辞書のダウンロードと解凍を行う
————————————————
(ポデローサで打ったコマンド)
cd local ←ローカルディレクトリに移動(ダウンロード先)

wget http://sourceforge.net/projects/mecab/files/mecab-ipadic/2.7.0-20070801/mecab-ipadic-2.7.0-20070801.tar.gz ← 辞書をダウンロード

tar xvzf mecab-ipadic-2.7.0-20070801.tar.gz ←解凍
————————————————

2.「configure」の実行

2-1
————————————————
cd mecab-ipadic-2.7.0-20070801 ←configureファイルのあるディレクトリに移動
————————————————

2-2
————————————————
自前のmecabがある場合
./configure with-charset=utf8
※「/home/username/local/lib/mecab/dic/」以下に ipadic フォルダがインストール先される

インストール先としてipadic-utf8というフォルダが作ってある場合
./configure with-charset=utf8 with-dicdir=~/local/mecab-dic/ipadic-utf8 ←実行。
————————————————
※インストール先を、今後辞書を追加する可能性も考慮し「~/local/mecab-dic/ipadic-utf8」にする場合、フォルダはあらかじめ作っておく必要がある。
ホームディレクトリ以下に自前のmecabをインストールしている場合「with-dicdir=~/local/mecab-dic/ipadic-utf8」を書くとmake install時にエラーになった。その場合は、インストールは指定しないことでやり過ごせる。

※「configure」というシェルスクリプトを実行することでMakefileが作成される。Makefileは、ソースファイルをコンパイルする前にインストール対象となるシステム特有の機能/情報をチェックし、チェック状況を記述したファイル。

以下の2ファイルは元々ある
————————————————
Makefile.in
Makefile.am
————————————————

configureを実行すると3つファイル増える
————————————————
config.log
config.status
Makefile
————————————————

3.インストールの実行
————————————————
make ←「configure」の実施で作られた「Makefile」を元にコンパイルを実行
make install ← インストールを実行
————————————————

4.動作テスト
————————————————
mecab -d ~/local/mecab-dic/ipadic-utf8 ←辞書を指定
これはテストです
————————————————

結果
————————————————
これ 名詞,代名詞,一般,*,*,*,これ,コレ,コレ
は 助詞,係助詞,*,*,*,*,は,ハ,ワ
テスト 名詞,サ変接続,*,*,*,*,テスト,テスト,テスト
です 助動詞,*,*,*,特殊・デス,基本形,です,デス,デス
————————————————

↓ターミナル経由でmecabを実行して解析結果が空欄だった場合、ターミナルの文字コードが違う可能性が考えられる。
自分の場合、辞書をUTF-8にしてもターミナルの文字列はEUC-JPに設定する必要があった。
————————————————
これはテストです
これは ̾,,*,*,*,*,*
テスト ̾,,*,*,*,*,*
です ̾,,*,*,*,*,*
————————————————

mecab -d ~/local/mecab-dic/ipadic-utf8 -D
これで辞書情報が確認できる。charsetがutf8であればOK

問題なく動くことを確認する。

mecabを終了するときは、「Ctrl + D」

本来ここまでの作業でUTF-8化した辞書がインストールできているはず。が、別アカウントのサクラサーバーで同じように辞書をインストールするとうまくいかない。手順どおり辞書のインストールを行うと滞りなく進むのだが、いざmecabで形態素解析を行うと、UTF-8を認識しない。EUC-JPで辞書がインストールされているようだ。
いろいろ調べたが根本的理由はわからず。バグかな?
下記の方法を行えばとりあえずUFT-8でmecabを動かせるようになります。

辞書インストール時、辞書のフォルダを解凍した後(configure実行の前)に2つのことを行う。

1.辞書フォルダ内の「csv」と「def」の拡張子のファイルをUTF-8に変換して上書きする。

テキストファイルで保存しなおしてもいいし、コマンドラインなら次のように打つ(cshellの場合)。

//まず、今の文字コードを確認
————————————————
cd mecab-ipadic-2.7.0-20070801 ← 辞書フォルダ内に移動

nkf -g Noun.csv ← とりあえずひとつのファイルの文字コードを確認してみる。gオプションは文字コードを出力。この時点ではEUC-JPが返るはず。
————————————————

//「csv」のファイルをUTF-8に変更
————————————————
foreach f ( *csv ) ← フォルダ内のcsvファイルに対して繰り返す(fは何の文字でもいい)

nkf -w –overwrite $f ← UTF-8に変更して上書き

end ← 「foreach?」と出てるはずなので終える
————————————————

//UTFになっていることを確認
——————
foreach f ( *csv )
nkf -g $f
end
——————

//「def」も同じようにUTF-8に変更する
————————————————
foreach f ( *def )

nkf -w –overwrite $f ← UTF-8に変更して上書き

end ← 「foreach?」と出てるはずなので終える
————————————————

2.dicrcファイルを書き換える

dicrcファイルは辞書フォルダ内にある
————————————————
config-charset = EUC-JP ← 書き換え前

 ↓↓↓

config-charset = UTF-8 ← 書き換え後
————————————————

この後は、configure → make → make install の順でインストールを済ませばいい。

タイトルとURLをコピーしました