MeCabをWindows 10 (64-bit)上のPythonで使う
この記事のまとめ
- 64-bit版Windows環境上でMeCab用Pythonモジュールをインポートするまでの手順をまとめます。
背景
日本語解析を少しやってみようと思って、形態素解析ツールのMeCabをWindows (64-bit)上のPythonで使ってみようと思ったのですが、これがなかなかの曲者でした。Windows 64-bit環境でPythonからMeCabを使うのはとてもめんどくさいです。とりあえずMeCab用Pythonモジュールをインストールして、それをインポートするところまではできたので、私のケースの対処法を書いておきます。
MeCabをPythonで使えるようにするための流れ
- MeCab本体(32-bit)をインストールする
- MeCab本体を64-bitでコンパイルし直し、関連ファイルを64-bit版に更新する
- MeCabのPythonモジュールをビルドし、インストールする
- MeCabの動作確認
実行環境
- Windows 8.1 64-bit
- Python 3.4 (64-bit版Anacondaの仮想環境上)
MeCabのインストール
まずはMeCab本体(32-bit)をインストールします。
下記のURLを開き、"Binary package for MS-Windows"にある"mecab-0.996.exx"をダウンロードし、インストールします。 インストール時に文字フォーマットを聞かれますので、UTF-8を選択します。
http://taku910.github.io/mecab/#download
MeCab本体の64-bit化
ここからが少し手間がかかります。
先ほどインストールしたMeCabは32-bit版なので64-bitアプリケーション化します。
Visual Studio 2015のインストール
64-bitアプリケーションにするために、64-bitコンパイラでコンパイルを行います。MeCabはC++で記述されているようなので64-bit版VC++コンパイラを使います。そのVC++コンパイラをインストールするために、Visual Studioをインストールします。
Visual Studio 2017ではうまくMeCabをインストールできませんでしたので、バージョンはVisual Studio 2015にした方が良いです。
Visual Studio 2015は下記URLからダウンロードできます。 https://www.visualstudio.com/vs/older-downloads/
インストール時にVC++のパッケージ類にチェックを入れて、VC++のパッケージ類をインストールします。
Makefile.msvcの作成と修正
再度、下記のMeCabのダウンロードページを開き、"Source"にある"mecab-0.996.tar.gz"をダウンロードし、解凍します。 http://taku910.github.io/mecab/#download
解凍したフォルダーの中にsrc
というフォルダーがあります。この中のMakefile.msvc.in
をコピーして、Makefile.msvc
に名前を変更します。
さらにこのファイルを開き、下記の通りに変更します。
▼ 6行目
/MACHINE:X86
を/MACHINE:X64
に変更します。
▼ 8-9行目
-DDIC_VERSION
、-DVERSION
を使用するバージョンに変更します。
feature_index.cppの修正
次にfeature_index.cpp
を開き、下記の通りに変更します。
▼ 356行目
size_t
型からunsinged int
型に変更します。
writer.cppの修正
最後にwriter.cpp
を開き、下記の通りに変更します。
▼ 260行目
変数lattice
をunsigned int
型にキャストします。
MeCabを64-bitでコンパイル
Visual Studio 2015をインストールすると、スタートメニューに"VS2015 x64 Native Tools Command Prompt"がインストールされているはずですので、これを実行します。
先ほどのsrc
フォルダーまで移動し、Make.bat
を実行します。
いくつかWarningが出るかもしれませんが、エラー終了しなければ問題ないです。
MeCab本体の関連ファイルの更新
先ほどコンパイルによって生成したいくつかのファイルをMeCab本体にコピーして上書きします。
src
フォルダー内にあるすべての.exeファイルとlibmecab.dllをC:\Program Files (x86)\MeCab\bin
にコピーして上書きします。
※MeCabのインストール時にインストールフォルダーを変更された場合は変更先のフォルダーを対象となります。
また、src
フォルダー内にあるすべての.libファイルをC:\Program Files (x86)\MeCab\sdk
にコピーして上書きします。
そして、C:\Program Files (x86)\MeCab\bin
を環境変数のPATHに追加します。
環境変数が有効化されるのはPCの再起動後なのでPCを再起動します。
MeCab本体の64-bit化はこれで終了です。
Python用MeCabモジュールのインストール
3度目になりますが、下記のMeCabのダウンロードページを開き、"perl/ruby/python/java バインディング"の"ダウンロード"を開き、"mecab-python-0.996.tar.gz"をダウンロードし、解凍します。
http://taku910.github.io/mecab/#download
setup.pyの修正
解凍したフォルダーの中にあるsetup.py
を開き、下記の通りに変更します。
▼ 13行目
version
を実際の数値を直接代入します。
▼ 18~20行目
include_dirs
とlibrary_dirs
をsdkフォルダーの値に直接代入します。また、libraries
にこちらも直接ファイル名を代入します。
これらはすべてWindowsではmecab-config
というものが入っていないための対処です。
mecab.hに追記
C:\Program Files (x86)\MeCab\sdk\mecab.h
を下記の通りに1行追記をします。
▼ 775行目辺り
Python用MeCabモジュールのビルドとインストール
コマンドプロンプトなどを開き、Anacondaでの仮想環境をアクティベートします。 ※Anacondaを使用していなければこの作業は無視して次に進んでください。
先ほど編集したsetup.py
があるフォルダーに移動します。
python setup.py build
とその後にpython setup.py install
を実行します。その実行例は下記のようになります。
インストール確認
MeCab用Pythonモジュールが問題なくインストールできていれば、下記のPython構文が通るはずです。
これが通ればインストールは完了です。
ビルド失敗時のトラブルシューティング
いままでVisual Studio 2015以外にインストールしたことがなければおそらく問題なく、ビルドが通るはずですが、他のバージョンなどを以前入れていたりすると余計な環境変数が残っており、失敗する可能性があります(私がVisual Studio 2017ではじめに試したためそうなっていました)。
私の場合は、vcvarsall.bat
ファイルが見つからないというエラーが発生しました。
この原因は、Anacondaの仮想環境の設定ファイルが入っているフォルダ内のLib/distutils/msvc9compiler.py
のファイルもしくは環境変数を追加すれば解決しました。
私の場合は下記のディレクトリーに保存されていました。
msvc9compiler.py
ファイルの231行目辺りにある下記の構文で問題が起こっていました。
上記は環境変数であるVS140COMNTOOLS
(Visual Studio 2015の場合)を読むためにversion
という変数には140
という値が入っていなければならないのですが、私の場合Visual Studio 2017の値である100
という値が入ってしまっており、このversion
という変数が正しい値が入らないことが原因となっていました。なお、VS140COMNTOOLS
には、Visual C++のインストールフォルダー(デフォルト設定の場合:C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC
)を示す値が入っており、その配下にvcvarsall.bat
ファイルがあります。そのため、VS100COMNTOOLS
という誤った環境変数を読み込んでしまい、正しくvcvarsall.bat
にたどり着けないということが起こっていました。
このversion
という変数がどこでどのように読み込まれているかまでは追っていないので真因まではわかっていないのですが、下記のいずれかの方法で暫定対処が可能です。
- 環境変数
VS100COMNTOOLS
を作り、VS140COMNTOOLS
と同じ値を代入する msvc9compiler.py
の当該構文を下記のように直接VS140COMNTOOLS
とする。
なお、Visual Studio 2017ではVisual Studio 2015以前とフォルダー構成が大きく変わっているようで正しくファイルを読み込めないエラーが発生していたため、うまくいかないということがわかっています。
MeCabの動作確認
インストール確認に続いて、動作確認をします。
下記を実行して、下記の通りの結果を得られていれば正しく動いています。
MeCab実行時のトラブルシューティング
ただし、環境によっては下記のようなエラーが出る場合があります。 (何の差分によってこのエラーが出たり、出なかったりするのかまでは調べていません。)
この場合には、新しくMECABRC
という環境変数を追加します。値は、C:\Program Files (x86)\MeCab\etc\mecabrc
とします。
環境変数を有効化させるためにPCを再起動します。
これで正しく動作しているはずです。
参考
この記事を書くために下記のサイトを参考にさせていただきました。
- http://onlybrain.exblog.jp/25402951/
- http://qiita.com/o__mura/items/31fb75df6183199e95b6 ★
- http://www.ipentec.com/document/document.aspx?page=mecab-compile-for-x64-windows-use-x64-windows
- http://seesaawiki.jp/spz/d/Windows��mecab-python��Ƴ��
- http://taku910.github.io/mecab/#download
- http://tadaoyamaoka.hatenablog.com/entry/2017/04/24/205509
関連記事
Linuxで開発できる方は断然Linux環境でのMeCabの利用がおすすめです。というかMeCab用の新語辞書・固有表現に強いシステム辞書であるmecab-ipadic-NEologdを使いたい場合はLinuxでしか対応していないので、Linuxでの利用をオススメします。
今回は以上です。 最後まで読んでいただき、ありがとうございます。
コメント
コメントを投稿