PythonとMeCabで形態素解析(on Windows)

#はじめに
Windowsでの形態素解析環境の構築を手伝うことが多くなってきたので、
一連の流れをまとめて備忘録的に書き留めておくことにしました。

以下、Python上で形態素解析器MeCabを使って
形態素の一覧出力が出来るようになることを目標に話を進めていきます。

#導入するもの一覧
Anaconda3 64bit
MeCab 0.996 64bit
mecab-python-windows

#Anacondaのインストール
Pythonの統合環境であるAnacondaのインストールを行います。
Anacondaは、以下のURLからダウンロードできます。

https://www.continuum.io/downloads

ダウンロードする際は、3.x の最新バージョンを使用OSのbit数に応じて選択してください。
本記事においては、3.xの64bit版の環境を想定して話を進めていきます。
なお、2.xの古いバージョンを使うことも出来ますが、サポートが限定されているので、
2.xでしか動かないプログラムがある場合など以外はインストールの推奨はしません。

インストールの手順については画面通りに実行しますが、
インストールする場所を決める際は、必ずインストールする場所をメモしておいてください。
また、Pathの確実な追加のため、
インストール途中のオプション"add Path"にはチェックを入れないことを推奨します。

インストールが終了したら、”環境変数の編集”を開き"Path"を選択し、
”編集”の"新規"でメモに書き留めておいたパスを追加、追加したパスを一番上に設定します。

以上の手順が済んだら、確認のためにPowerShell・CommandPromptを起動し、

```
python --version
```

と入力しエンターを押してみましょう。
”Python3.x :: Anaconda”のようなログが出力されれば、
Anaconda環境の導入は完了です。

#MeCabの導入
Pythonにおいて、形態素解析をする際のモジュールには複数選択肢があります。
JanomeやJumanやMeCab、Esanpyを利用してのkuromojiなどがありますが、
今回は比較的実行速度も精度も高いと言われているMeCabを使って環境を組んでいきます。

MeCabの実行プログラム本体をダウンロードします。
今回は公式の32bit版ではなく、有志がビルドした64bit版を使います。
以下のURLよりダウンロードできます。
https://github.com/ikegami-yukino/mecab/releases/tag/v0.996

上記のページから”mecab-0.996-64.exe”を選択してダウンロードしてください。
インストールする際に辞書の文字コードの指定がある場合はUTF-8を選択してください。

インストールが終わった後、
Anacondaの時と同じく”環境変数の編集”で"Path"を選択し、”編集”の"新規"で

```
(システムドライブ名):\Program Files\MeCab\bin
```

などMeCabのインストール先のパスを追加します。
追加出来たらPowerShell・CommandPromptを起動し、

```
mecab
```

と入力し、その後に適当に文章を入力してみましょう。
例えば、”形態素解析”と打ってみたら、

```
形態素解析
        險伜捷,荳闊ｬ,*,*,*,*,*
`       蜷崎ｩ・繧ｵ螟画磁邯・*,*,*,*,*
態      險伜捷,荳闊ｬ,*,*,*,*,*
f       蜷崎ｩ・蝗ｺ譛牙錐隧・邨・ｹ・*,*,*,*
解析    險伜捷,荳闊ｬ,*,*,*,*,*
EOS
```

こんな感じになるはずです。
文字化けしていますが、
PowerShell・CommandPromptがUTF-8に対応していないだけで、
実際は出力が出来ているので、ここではあまり気にしなくて大丈夫です。

このような出力が出来るようになれば、
とりあえずMeCab実行環境は導入完了です。

#mecab-pythonの導入
次に、MeCabをPython上で使えるようにします。
そのためには、Python上のMeCabバインディングを導入する必要があります。
バインディングとは、外部プログラムを利用できるようにするライブラリみたいなものです。
今回はWindows用のmecab-python-windowsというバインディングを導入します。
導入はAnaconda環境に対してなので、
アプリ一覧からAnaconda Promptを起動し、インストール作業を行います。

起動したら、

```
pip install ipykernel
```


```
pip install mecab-python-windows
```

この二つをそれぞれ入力します。
インストール中に必要パッケージがない、もしくはバージョンが合わないなど、
エラーを吐く場合は、pip installコマンドでそれぞれ順番にインストールしてください。

インストールが完了したら、

```
(MeCabのインストール先)/bin
```

にある"libmecab.dll"というファイルを

```
(Anacondaのインストール先)/Lib/site-packages
```
にコピー＆ペーストしてください。

ここまで出来たらPowerShell・CommandPromptを起動し、

pythonを実行状態("python"を入力してEnter)にして、

```python
import MeCab
```
と打ってみてください。このコードを打ってエンターを押してみてエラーが出なければ、
pythonバインディングの導入は完了です。

#Pythonで形態素解析
それでは実際にPythonで形態素解析してみましょう。

入力文は"すもももももももものうち"で、
コードは以下のような感じに。

```python
import sys
import MeCab
m = MeCab.Tagger ("-Ochasen")
print(m.parse ("すもももももももものうち"))
```

これをpythonに通してみると

```python
>>> import sys
>>> import MeCab
>>> m = MeCab.Tagger ("-Ochasen")
>>> print(m.parse ("すもももももももものうち"))
すもも  スモモ  すもも  名詞-一般
も      モ      も      助詞-係助詞
もも    モモ    もも    名詞-一般
も      モ      も      助詞-係助詞
もも    モモ    もも    名詞-一般
の      ノ      の      助詞-連体化
うち    ウチ    うち    名詞-非自立-副詞可能
EOS
```


こんな感じで文章の分析が出来るようになります。

ちなみに-Ochasenの部分はmecabの出力モードで
mecabrc: (デフォルト)
-Ochasen: (ChaSen 互換形式)
-Owakati: (分かち書きのみを出力)
-Oyomi: (読みのみを出力)
以上の4つのモードがあります。
色々変えて試してみると良いかもです。

#最後に
mecabで出力される結果は一見リストっぽいですが、文字の固まりです。
なので、大規模なデータ処理をするには、
改行記号・タブ記号などを判別して各要素を分割してリスト化する必要があります。
そこらへんは、時間あれば次の記事とかに書こうかなと思います。

追記:リスト化は↓
https://qiita.com/menon/items/2b5ad487a98882289567