【mecab-python3】parseToNode で surface が正しく取得できないときの対処法。
公開日:
:
最終更新日:2019/01/17
テキストマイニング mecab-python3, parseToNode, python3, surface
python3 で mecab-python3 を使うと、parseToNode で surface(表層形)が正しく取得できずはまってしまったときのメモです。
なお、MeCab のバージョンは 0.966 で、mecab-python3 のバージョンは 0.996.1 でした。
具体的には、以下のようなコードで surface の値が正しくとれません。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
coding:utf-8 import MeCab text = "安倍晋三首相は、国会で施政方針演説を行った。" tagger = MeCab.Tagger("-Ochasen") tagger.parse('') node = tagger.parseToNode(text) while node: if node.surface == '': node = node.next continue word = node.surface pos = node.feature.split(',')[0] print(word+": "+pos) node = node.next |
以下のように、形態素ではなく文章が表示されてしまいます。
色々調べてみると、バグのようで、mecab-python3 のバージョンを下げると解決するようです。
まず、mecab-python3 をアンインストールします。
1 |
$ sudo python3 -m pip uninstall mecab-python3 |
Uninstalling mecab-python3-0.996.1:
Would remove:
/usr/local/lib/python3.5/dist-packages/MeCab.py
/usr/local/lib/python3.5/dist-packages/_MeCab.cpython-35m-x86_64-linux-gnu.so
/usr/local/lib/python3.5/dist-packages/mecab_python3-0.996.1-py3.5.egg-info
Proceed (y/n)? y
Successfully uninstalled mecab-python3-0.996.1
次に、再度、mecab-python3 をインストールします。
1 |
$ sudo python3 -m pip install mecab-python3==0.7 |
そして、先ほどのコードを実行すると、surface が正しく取得できました。
いやぁ、、結構はまっちゃいました。。
関連記事
-
【Python】形態素解析器 Mecab を Linux(Ubuntu)で使ってみた。
Linux の Ubuntu OS に、形態素解析器 Mecab をインストールし、使ってみたときの
-
【Python】NLTK(自然言語処理ライブラリ)を使ってみた。
Python の自然言語処理ライブラリである NLTK を Linux 環境にインストールして使って
-
【テキストマイニング】 bigram を用いて小説の書き手の識別をしてみる
「テキストマイニング入門」という本に書かれている内容に添って RMeCab を使った小説の分析を行っ