Pythonでテキストマイニングに挑戦。(Python3系対象)
以下のステップで取り組む。
①形態素解析(本記事)
②Word Cloudで可視化(次回)
前回、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から解析してみる。
# 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という記事を見つけたので試す。
$ 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
ようやくできた。
#参考にしたサイト