LoginSignup
15
23

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-03-05

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から解析してみる。

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という記事を見つけたので試す。

$ 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

ようやくできた。

参考にしたサイト

15
23
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
23