以前Windowsの環境でPythonでMeCabを使おうと思ったら上手くいかず諦めてUbuntuを使っていたのですが、今回久しぶりに挑戦してみるとあっさりできたので環境構築方法をまとめました。


動作確認

本記事における動作環境は下記の通りになります。
  • Windows10 Home
  • anaconda
  • Python 3.6.7
今回はanacondaを使っていますがanacondaを使ってなくても手順通り進めればインストールすることができます。


MeCab(64bit版)のインストール
1. MeCab(64bit版)のインストーラのダウンロードする。

MeCabのインストーラは下記のページからダウンロードできるのでダウンロードしてください。

https://github.com/ikegami-yukino/mecab/releases

2. mecab-0.996.exeを実行する



環境変数の設定
MeCabを無事インストールすることができたら次は環境変数の設定を行います。

1. 環境変数に「MeCabのインストール先\bin」を設定する。

インストール先を特に指定せずデフォルトの設定でインストールしたのなら下記の例と同じもので問題ありません。

環境変数の例:C:\Program Files\MeCab\bin

2. 環境変数が正しく通せているか確認する。

環境変数を設定できたら設定を正しく行えているか確認します。

コマンドプロンプトを起動してMeCabと入力した後に好きな文章を入力して形態素解析が実行されたら正しく環境変数を設定できています。

この際文字化けがおきますがそれはコマンドプロンプトがUTF-8に対応していないのが原因で起きるので気にしなくて大丈夫です。
MeCab1


mecab-python-0.996のセットアップ

1. mecab-python-0.996.tarのダウンロード。

mecab-python-0996.tarは下記のページのperl/ruby/python/java バインディングの下にあるダウンロードリンクからダウンロードができます。

ダウンロードの際様々なバージョンのものがありますが0.996のものをダウンロードしてください。

2. mecab-python-0.996.tarを解凍する。

mecab-python-0.996.tarをダウンロードすることができたら好きな場所に解凍してください。

3. setup.pyの編集

mecab-python-0.996のフォルダ内にあるsetup.pyはpython2.xxに合わせて書かれているものなのでpython3で利用できるように中身を少し書き換える必要があります。

下記に編集後のコードを乗せておくのでこれをそのままコピーしたらほぼほぼ大丈夫です。

ただMeCabのインストール先をデフォルトとは別の場所にした場合その部分だけインストール先に合わせて修正してください。
#!/usr/bin/env python

from distutils.core import setup,Extension,os

setup(name = "mecab-python",
	version = '0.996',
	py_modules=["MeCab"],
	ext_modules = [
		Extension("_MeCab",
			["MeCab_wrap.cxx",],
			include_dirs=[r'C:\Program Files\MeCab\sdk'],
			library_dirs=[r'C:\Program Files\MeCab\sdk'],
			libraries=['libmecab'])
			])


4. ビルドとインストール

Anaconda Promptを起動してmecab-python-0.996のフォルダに移動してください。

移動できたら下記のコマンドを入力してビルドしてください。
python setup.py build
ビルドができたら下記のコマンドを入力してインストールしてください。
python setup.py install

5. 実行確認

インストールができたら最後に実行できるか確認を行います。

下記のコードを実行して形態素解析の結果がかえってきたら作業は終了です。
import MeCab
mecab = MeCab.Tagger("-Ochasen")
print(mecab.parse("すもももももももものうち"))
実行結果は下記の通りになります。
MeCab2



最後に
環境を構築中にVisual Studioをインストールしていない場合はそれ関連のエラーが出るかもしれませんが適宜対応してください。

もし何か分からないことがあればコメントをもらえれば返しますのでコメントしてください。