Windows環境でのMeCab(Python)のインストール


## はじめに

自然言語処理を学ぼうと思い、PythonにMeCabをインストールしようと考える人は多くいると思う。
MacやLinux環境では比較的簡単に(HomeBrewやapt-getを使用して)インストールすることが可能だが、Windows環境では一筋縄ではいかない。(現に2,3日ハマった)
多くの先人達がブログの記事にしているが、個人によって環境は異なるので、私がインストールに成功した方法を記事にしたいと思う。

## インストール(に試して成功した)環境

OS:Windows10, Windows7
Pythonの環境:Anaconda3系

## 先にダウンロードしておくべきもの

https://www.visualstudio.com/vs/older-downloads/
VS2015 Community
(私の手元ではVS2017だと失敗した)

http://taku910.github.io/mecab/
mecab-0.996.exe
mecab-python-0.996.zip

http://neu101.seesaa.net/article/272153413.html
mecab-python-0.993.win-build.zip

## 導入手順
    
### 1. まずはじめにMeCabをインストールする
	
	mecab-0.996.exeを起動し、インストールする
	
	※インストールする際に文字コードをutf-8にしておく

### 2. ダウンロードしておいたmecab-python-0.996.zipを解凍する

解凍して作成されたmecab-python-0.996フォルダ内のsetup.pyを編集する
	
```python:setup.py(修正前)
#!/usr/bin/env python

from distutils.core import setup,Extension,os
import string

def cmd1(str):
    return os.popen(str).readlines()[0][:-1]

def cmd2(str):
    return string.split (cmd1(str))

setup(name = "mecab-python",
	version = cmd1("mecab-config --version"),
	py_modules=["MeCab"],
	ext_modules = [
		Extension("_MeCab",
			["MeCab_wrap.cxx",],
			include_dirs=cmd2("mecab-config --inc-dir"),
			library_dirs=cmd2("mecab-config --libs-only-L"),
			libraries=cmd2("mecab-config --libs-only-l"))
			])
```	

MeCabのインストール先によって一部(include_dirs, library_dirs)異なるが、デフォルトから変更していない限りは以下でよい。

```python:setup.py(修正後)
#!/usr/bin/env python

from distutils.core import setup, Extension

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

### 3. VS2015 Communityをインストールする

**インストールする際に必ずVC++にチェックを入れる**

### 4. Pythonがビルドされた環境を確認する

```python
from distutils.msvc9compiler import *
get_build_version()
```

>14.0と出力されればOK

### 5. レジストリを書き換える

スタート/検索/"regedit"を開き、
値を以下の場所に書き込む

	キー名： HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\(Python の MSVC のバージョン)\Setup\VC 
	値名：ProductDir 
	値：（現在使っている Visual Studio の VC フォルダへのパス）

	Ex.Python3.5を使っていて、Vs Community2015を入れたので次のようになる
	キー名： HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\VisualStudio\14.0\Setup\VC 
	値名：ProductDir 
	値：C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC

### 6. mecab.hを編集する

C:\Program Files(x86)\MeCab\sdk\mecab.hの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;

```

### 7. mecab-python-0.996に戻りbuildする

mecab-python-0.996フォルダ内で以下を実行すると

```
python setup.py build
```
	error: command '"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\link.exe"' failed with exit status 1120
のようなエラーが出力される

### 8. mecab-python-0.933.win-build.zipを解凍し、ファイルを移動する

ダウンロードしておいたファイルを解凍し、mecab-python-0.933.win-buildフォルダ内の
**libmecab.dllとlibmecab.lib**
をmecab-python-0.966に移動する

### 9. mecab-python-0.966フォルダ内でコマンドを実行する

```
python setup.py build
python setup.py install
```

これで、mecab-python-0.966フォルダ内でMeCabをimport出来るようになった

### 10. MeCabを別ディレクトリからimportする方法

実行環境によってファイルのコピーする先が異なる

**anaconda3を使用している場合**

\Anaconda3\Lib\site-package
にmecab-python-0.996にあるlibmecab.dllにコピーする。


## とても参考になったURL

http://baito1024.blog.jp/archives/10201616.html
http://y-mattu.hatenablog.com/entry/2016/01/06/030929