MeCabでつまずいた事について
このnoteを見てほしい人
・PythonでMeCabを使おうと思って参考にするサイトを探している人
・MeCabのコードをネットからコピペして、parse()やparseToNode()がどのような動きをしているのかわからず調べている人
自己紹介
筆者は、機会に恵まれて名詞を数えて数の多い名詞を返すAPIを建てようとした際に、MeCabでつまずき、見つけたサイトにあったコードをコピペすることで難を逃れた後、振り返り学習として、このnoteを書いた次第だ。筆者は、プログラミングまだまだこれから星人なので。あやふやな点が多いが悪しからず。
本題
parseとparseToNodeについて解説していこうと思う。おそらく、用法については、ネット上にたくさんあると思うので。ここでは、省略させてもらいます。
どのような値が返ってくるのか
# サンプルコード
import MeCab
tagger = MeCab.Tagger()
text = "出来る出来ないの問題じゃない、やるしかなければやるだけだ。"
node = tagger.parseToNode(text)
while node:
print("%s %s" % (node.surface, node.feature))
node = node.next
node = tagger.parse(text)
print(node)
これを見れば、大体察する方もいるかもしれませんが、解説します。
形態素解析機として手動で軽く使う分にはそのままprintできるparseはいいかもしれません。正直parseはつまずくというより、使い道が少ないので、解説することもあまりありません。
次に、parseToNodeです。上のコードを見るとわかりますが、この関数の返り値は、単語分けされたsurfaceとその単語の特徴値featureに分けられます。特にfeatureは、カンマ区切りで(リストではなくstr)0,1番目が品詞、狭義の品詞名、5,6番目が活用形、7番目以降にはよくわからない類似文字列の羅列があった。よって、sprit(',')を行った望むような特徴量を持つx番目を指定して処理を行うとよいだろう。
以上でこのnoteの締めとさせてもらう。