MeCabでつまずいた事について

このnoteを見てほしい人

・PythonでMeCabを使おうと思って参考にするサイトを探している人
・MeCabのコードをネットからコピペして、parse()やparseToNode()がどのような動きをしているのかわからず調べている人

自己紹介

筆者は、機会に恵まれて名詞を数えて数の多い名詞を返すAPIを建てようとした際に、MeCabでつまずき、見つけたサイトにあったコードをコピペすることで難を逃れた後、振り返り学習として、このnoteを書いた次第だ。筆者は、プログラミングまだまだこれから星人なので。あやふやな点が多いが悪しからず。

pythonで形態素解析エンジンMeCabを使って名詞の出現回数を数える
https://python-man.club/python_morphological_analysis_noun/

コピペしたコード元

本題

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)


プリント結果(なんでReplitのShellコピーできないの?)

これを見れば、大体察する方もいるかもしれませんが、解説します。
形態素解析機として手動で軽く使う分にはそのままprintできるparseはいいかもしれません。正直parseはつまずくというより、使い道が少ないので、解説することもあまりありません。
次に、parseToNodeです。上のコードを見るとわかりますが、この関数の返り値は、単語分けされたsurfaceとその単語の特徴値featureに分けられます。特にfeatureは、カンマ区切りで(リストではなくstr)0,1番目が品詞、狭義の品詞名、5,6番目が活用形、7番目以降にはよくわからない類似文字列の羅列があった。よって、sprit(',')を行った望むような特徴量を持つx番目を指定して処理を行うとよいだろう。
以上でこのnoteの締めとさせてもらう。


この記事が気に入ったらサポートをしてみませんか?