環境
そもそもMecabが入ってなかったら以下でインストールする
thr3a.hatenablog.com
echo おはよう|mecab
で表示されればOK
pip install mecab-python3
サンプル
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
バグ?っぽいので現状読み込み時の最初に空パースするのが安全だと思う