Pythonでテキストマイニング　①形態素解析(再：Linux版)

Pythonでテキストマイニングに挑戦。(Python3系対象)
以下のステップで取り組む。

①形態素解析(本記事)
②Word Cloudで可視化(次回)

[前回](http://qiita.com/furipon/items/6a0ad7b38a3bec4c63f1)、WindowsでMeCabを使おうとしてPythonバインディングのインストールで躓いて断念したので環境をLinuxにして再開。

---

*この記事はトライ＆エラーをそのまま記載しています。後日、不要な部分を省いたまとめ記事を書く予定です。*

---

#MeCabのインストール
(おさらい)
MeCabをPythonで使えるようにするためには、
・MeCab本体のインストール
・辞書のインストール
・Pythonバインディングのインストール
が必要。

Windows版はMeCab本体に辞書が付属していたが、Linux版では別にインストールする必要がある。ただし、パッケージで一緒にインストールすればよし。

##MeCab本体と辞書のインストール
aptでインストールするだけ。辞書はIPA(推奨)のUTF-8版を選択。

```
sudo apt-get install mecab mecab-ipadic-utf8
```

例によって「すもももももももものうち」で動作確認。

```
$ mecab
すもももももももものうち
すもも	名詞,一般,*,*,*,*,すもも,スモモ,スモモ
も	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
も	助詞,係助詞,*,*,*,*,も,モ,モ
もも	名詞,一般,*,*,*,*,もも,モモ,モモ
の	助詞,連体化,*,*,*,*,の,ノ,ノ
うち	名詞,非自立,副詞可能,*,*,*,うち,ウチ,ウチ
EOS
```

##MeCab Pythonバインディングのインストール
こちらもaptでインストールするだけ。

```
sudo apt-get install python-mecab
```

「すもも…」をPythonから解析してみる。

```python3:mecab_sample.py
# coding: utf-8
import sys
import MeCab

mecab = MeCab.Tagger("-Ochasen")

print(mecab.parse("すもももももももものうち"))
```

```
$ python3 mecab_sample.py
Traceback (most recent call last):
  File "mecab_sample.py", line 3, in <module>
    import MeCab
ImportError: No module named 'MeCab'
```

MeCabがないと言われる…
試しにpython2.xで動かしてみる。

```
$ python mecab_sample.py
すもも	スモモ	すもも	名詞-一般		
も	モ	も	助詞-係助詞		
もも	モモ	もも	名詞-一般		
も	モ	も	助詞-係助詞		
もも	モモ	もも	名詞-一般		
の	ノ	の	助詞-連体化		
うち	ウチ	うち	名詞-非自立-副詞可能		
EOS
```

こっちはちゃんと動く。
ググッてみると、どうやらaptで入れたものはPython2.x系でしか動かなさそう。Python3系で使うにはWindows版でやったようにソースを持ってきてsetup.pyでbuildして…というのが必要そうだが、それもPython2系を前提にしていてPython3系で動かすにはパッチを当てる必要があるっぽく、一筋縄ではいかなさそう。

うぅ、面倒くさい…と思っていたらpipでPython3向けのライブラリを入れればOKという[記事](http://qiita.com/grachro/items/4fbc9bf8174c5abb7bdd)を見つけたので試す。

```
$ pip3 install mecab-python3
Collecting mecab-python3
  Using cached mecab-python3-0.7.tar.gz
    Complete output from command python setup.py egg_info:
    /bin/sh: 1: mecab-config: not found
    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-gsw8fi5f/mecab-python3/setup.py", line 41, in <module>
        include_dirs=cmd2("mecab-config --inc-dir"),
      File "/tmp/pip-build-gsw8fi5f/mecab-python3/setup.py", line 21, in cmd2
        return cmd1(strings).split()
      File "/tmp/pip-build-gsw8fi5f/mecab-python3/setup.py", line 18, in cmd1
        return os.popen(strings).readlines()[0][:-1]
    IndexError: list index out of range
    
    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-gsw8fi5f/mecab-python3/
```

Windowsの時のようにmecab-configがなくてエラーになる。
最初にMeCab本体を入れるときにいらないと思ってlibmecab-devを指定しなかったので入っていないっぽい。aptで入れる。

```
sudo apt-get install libmecab-dev
```
で、pipでPython3系用バインディングを入れる。

```
sudo pip3 install mecab-python3
```
※sudoでやらないとパーミッションエラーになる

そして、Python3でサンプルを実行。

```
$ python3 mecab_sample.py 
すもも	スモモ	すもも	名詞-一般		
も	モ	も	助詞-係助詞		
もも	モモ	もも	名詞-一般		
も	モ	も	助詞-係助詞		
もも	モモ	もも	名詞-一般		
の	ノ	の	助詞-連体化		
うち	ウチ	うち	名詞-非自立-副詞可能		
EOS
```
ようやくできた。

#参考にしたサイト
- [Python3で形態素解析エンジンMeCabを使えるようにする(2016年3月版)](http://qiita.com/grachro/items/4fbc9bf8174c5abb7bdd)
- [\[Python\]\[Mecab\]ubuntu環境にmecabをインストールする方法](https://gist.github.com/YoshihitoAso/9048005)
- [Ubuntu14.04とPython3でMeCabを使う方法](http://www.trifields.jp/how-to-use-mecab-in-ubuntu-14-04-and-python-3-1196)