環境
そもそもMecabが入ってなかったら以下でインストールする
echo おはよう|mecab
で表示されればOK
pythonでMecabを使えるように
pip install mecab-python3
サンプル
# coding: utf-8 import MeCab text = '庭には二羽鶏がいる。' mecab = MeCab.Tagger('mecabrc') mecab.parse('') node = mecab.parseToNode(text) while node: print(node.surface, node.feature) node = node.next
結果
BOS/EOS,*,*,*,*,*,*,*,* 庭 名詞,一般,*,*,*,*,庭,ニワ,ニワ に 助詞,格助詞,一般,*,*,*,に,ニ,ニ は 助詞,係助詞,*,*,*,*,は,ハ,ワ 二 名詞,数,*,*,*,*,二,ニ,ニ 羽 名詞,接尾,助数詞,*,*,*,羽,ワ,ワ 鶏 名詞,一般,*,*,*,*,鶏,ニワトリ,ニワトリ が 助詞,格助詞,一般,*,*,*,が,ガ,ガ いる 動詞,自立,*,*,一段,基本形,いる,イル,イル 。 記号,句点,*,*,*,*,。,。,。 BOS/EOS,*,*,*,*,*,*,*,*
mecab.parse(‘’)の謎
先程のコードで mecab.parse('')
の空パースをせずにいきなり文章を投げるとエラーになる事がある。
BOS/EOS,*,*,*,*,*,*,*,* .7 名詞,一般,*,*,*,*,庭,ニワ,ニワ --------------------------------------------------------------------------- UnicodeDecodeError Traceback (most recent call last) <ipython-input-47-6ae1b4dc3c53> in <module>() 8 node = mecab.parseToNode(text) 9 while node: ---> 10 print(node.surface, node.feature) 11 node = node.next UnicodeDecodeError: 'utf-8' codec can't decode byte 0xfc in position 1: invalid start byte
バグ?っぽいので現状読み込み時の最初に空パースするのが安全だと思う