形態素解析器として日本語を扱う上で有名なMeCabですが、Windows環境でPythonから使えるようにするのは結構大変でした。Web上に色々な情報が散乱していますが、なかなか上手く行かなかったため、備忘録として残しておきます。
(本記事は2022/4/13時点での最新版であるmecab-python3 1.0.5
に合わせたものとなっています。バージョンが異なる場合、他の方法が必要となる可能性がありますが、予めご了承ください)
基本的には MecabをインストールしてPythonから使ってみた の記事を参考に進めます。
1. MeCab本体のインストール
まず、公式ページ からMeCab本体を入手し、インストールしてください。Windowsの場合は自己解凍型のインストーラーがあるため、それを使えばインストールは簡単です。
注意点として、Pythonから利用するためには、インストーラーから聞かれる文字コードをUTF-8にしておく必要があるようです。
その後、(MeCabインストール先)\bin
ディレクトリを環境変数PATHに設定してください。
ここでコマンドラインからmecab
コマンドを叩いて実行できれば成功です。(失敗している場合は、「コマンドが存在しない」的なエラーになります)
実行すると入力待ち状態になるため、見かけ上は何も表示されません。また、文字コードの問題で、日本語文を入力しても実行結果の出力が文字化けしますが、どちらも問題ありません。
(コマンドから使いたい場合は、mecab <in.txt >out.txt
など、ファイルを介して入出力すれば正常に使えるはずです)
2. mecab-python3のインストール
普通にpip install mecab-python3
をするとエラーが発生しました。Windowsの場合は自分でビルドが必要とのことです。
2.1. mecab-python3ソースコードの入手と書き換え
まず、PyPIのページ からソースコードを入手しましょう。
ダウンロードしたファイルを適当な場所で展開すると、直下にsetup.pyが見つかります。こちらを開いてください。
こちらのファイルの177行目に定義されている変数WIN_MECAB_DIR
に、MeCabのインストール先を指定します。この時、インストールしたフォルダ内sdk
ディレクトリを指定してください。
(このファイルは参考サイトと異なっています。ご注意ください)
// 175行目から引用
# Windows requires special prep
if os.name == 'nt':
WIN_MECAB_DIR = r'(MeCabインストール先)\MeCab\sdk' // ここを変更
include_dirs = [WIN_MECAB_DIR]
library_dirs = [WIN_MECAB_DIR]
libraries = ['libmecab']
data_files = [("lib\\site-packages\\MeCab\\",
["{}\\libmecab.dll".format(WIN_MECAB_DIR)])]
MECAB_EXTENSION = Extension("MeCab._MeCab",
["src/MeCab/MeCab_wrap.cpp"],
libraries=libraries,
include_dirs=include_dirs,
library_dirs=library_dirs)
# We use a prebuilt MeCab so this is taken care of
cmdclass = {}
else:
// ...
2.2. MeCab本体側スクリプトの書き換え
最初にインストールしたMeCabのスクリプトも一部書き換えが必要です。(MeCabインストール先)\sdk
フォルダにあるmecab.h
をテキストエディタで開いてください。C++のコードですが、内容は理解できなくても大丈夫なのでご安心ください。
ここで、779行目の後にvirtual void set_result(const char *str) = 0;
という行を追加します。
// 775行目から
/**
* Lattice class
*/
class MECAB_DLL_CLASS_EXTERN Lattice {
public:
virtual void set_result(const char *str) = 0; //追加
/**
* Clear all internal lattice data.
*/
virtual void clear() = 0;
// ...
2.3. dllファイルのコピー
(MeCabインストール先)\bin
フォルダにはlibmecab.dll
ファイルが存在していますが、インストール段階でうまく参照されません。このファイルを(MeCabインストール先)\sdk
フォルダにコピーしてください。
ファイルを移動すると、インストールできても実行の際に失敗してしまうため、bin
ディレクトリとsdk
ディレクトリの両方にlibmecab.dll
ファイルがある状態にしてください。
2.4. インストール
以上で準備は完了です。最後に、コマンドラインからインストールを行います。
まず、コマンドラインでsetup.py
があるディレクトリに移動します。そこで
python setup.py install
を実行します。上手く行けばインストールが成功するはずです。
赤文字で何かエラーが出た方はインストールに失敗しています。MeCabのインストールとパス設定などを見直してみてください。
2.5. 動作確認
Pythonを起動して、以下のスクリプトを実行してみてください。(MecabをインストールしてPythonで使う【Windows】より拝借しました)
import MeCab
mecab = MeCab.Tagger()
target_str = "DOS窓では、基本的には日本語がアウトです"
print(mecab.parse(target_str))
ImportError等のエラーなく、形態素に分解された情報が出力されればインストール完了です。
2.6. 後始末
追加した諸々のファイルのうち、不要なものを削除します。(削除しなくても使用上は問題ありません)
まず、2.1.でダウンロードした、mecab-python3のソースは、全く必要ありません。フォルダごと削除しましょう。
また、2.3.でコピーしたsdk\libmecab.dll
についても削除して構いません。通常使用時はbin
ディレクトリのものが使用されます。(間違えて.libファイルまで削除しないよう気を付けてください)