goodbyegangsterのブログ

備忘録的な

mecabのインストール

四季報の文章をネガポジ分析で評価して、株価のパフォーマンスを調べてみたいなあと、その手順についてまとめておきます。

WEBスクレイピングで取得してきた四季報のデータを、「MeCab」で形態素解析して、「単語感情極性対応表」という辞書で文章内の単語のネガポジ判定をしようと思います。Pythonで処理書きます。

とりあえず、今回はmecabに関する部分をまとめておきます。 環境はCentOS7.2.1511です。

mecabのサイトに記載ある通り進めていきます。

MeCab: Yet Another Part-of-Speech and Morphological Analyzer

事前に、サイトからmecab本体とIPA辞書をダウンロードしておきます。 mecab本体のインストールは以下の通り。ダウンロードしておいたtarを解凍してmakeしてます。

# tar zxfv ./mecab-0.996.tar.gz
# cd mecab-0.996
# ./configure
# make
# make check
# make install

configureの部分で以下の通り怒られたので、

checking if g++ environment provides all required features... no
configure: error: Your compiler is not powerful enough to compile MeCab. If it should be, see config.log for more information of why it failed.

g++のコンパイラをインストールしました。

# yum install gcc-c++

以下のコマンドでバージョン確認。簡単にインストールできますね。

# mecab -v
mecab of 0.996

続いて解析処理時に参照される辞書データもインストールします。IPA辞書ってのが推奨らしいので、こいつをインストールします。手順は本体と同様。

なお、configure実行時になにもオプションを指定しないと、文字コードeuc」での辞書となります。utf8やsjis文字コードで解析したい場合は、configure時に指定してあげる必要があります。以下の手順ではutf8を指定してます。

# tar xvfz mecab-ipadic-2.7.0-20070801.tar.gz
# cd mecab-ipadic-2.7.0-20070801
# ./configure --with-charset=utf8
# make
# make install

入ったどうか確認。

# mecab -D
filename:       /usr/local/lib/mecab/dic/ipadic/sys.dic
version:        102
charset:        utf8
type:   0
size:   392126
left size:      1316
right size:     1316

実際に解析してみます。

# mecab
ゼロから始める異世界生活
ゼロ    名詞,数,*,*,*,*,ゼロ,ゼロ,ゼロ
から    助詞,格助詞,一般,*,*,*,から,カラ,カラ
始める  動詞,自立,*,*,一段,基本形,始める,ハジメル,ハジメル
異      接頭詞,名詞接続,*,*,*,*,異,イ,イ
世界    名詞,一般,*,*,*,*,世界,セカイ,セカイ
生活    名詞,サ変接続,*,*,*,*,生活,セイカツ,セイカツ

ちゃんとできてますね。

プログラムからmecabを利用したい場合、そのための橋渡し?をしてくれるバインディングモジュールが公開されています。今回はPythonで解析処理を書きたいので、Python用のバインディングモジュールをインストールします。

公式サイトより、今回インストールしたmecabと同一バージョンのものをダウンロードしてきます。

スクリプト言語のバインディング

READMEに記載ある通り、処理を進めたのですが行き詰まりました。。。 一つづつエラーを解消していったのですが、結局Pythonmecabモジュールを利用できず、ちなみにPythonのバージョンは3.5.2でした。。。

どんな罠だよとうんざりしていたところ、qiitaに解答がありました。ネットは偉大ですね。

Python3でmecabを使う - Qiita

そもそもpipのsearchで見つかるよと話で。

$ pip search mecab
neologdn (0.2)               - Japanese text normalizer for mecab-neologd
c2.splitter.mecabja (1.0b2)  - This product is Japanese splitter by Mecab for Plone
mecab-python (0.993)         - UNKNOWN
mecab-python3 (0.7)          - python wrapper for mecab: Morphological Analysis engine
natto-py (0.8.0)             - A Tasty Python Binding with MeCab(FFI-based, no SWIG or compiler necessary)

mecab-python3」てやつをインストールします。

$ pip install mecab-python3

あっさりできたー。setup.pyからインストールするのはすげえしんどかったのに。。。

$ python
Python 3.5.2 (default, Sep 29 2016, 06:29:57)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-4)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import MeCab
>>>
>>> t = MeCab.Tagger()
>>> print(t.parse("ゼロから始める異世界生活"))
ゼロ    名詞,数,*,*,*,*,ゼロ,ゼロ,ゼロ
から    助詞,格助詞,一般,*,*,*,から,カラ,カラ
始める  動詞,自立,*,*,一段,基本形,始める,ハジメル,ハジメル
異      接頭詞,名詞接続,*,*,*,*,異,イ,イ
世界    名詞,一般,*,*,*,*,世界,セカイ,セカイ
生活    名詞,サ変接続,*,*,*,*,生活,セイカツ,セイカツ
EOS