四季報の文章をネガポジ分析で評価して、株価のパフォーマンスを調べてみたいなあと、その手順についてまとめておきます。
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に記載ある通り、処理を進めたのですが行き詰まりました。。。 一つづつエラーを解消していったのですが、結局Pythonでmecabモジュールを利用できず、ちなみにPythonのバージョンは3.5.2でした。。。
どんな罠だよとうんざりしていたところ、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