環境
Mac BidSur Anaconda Jupyter
やりたいこと
MeCabの辞書にUnidicを指定して,文章中の語種をカウントしたい
# 内容
以下のコードで,品詞(動詞,助詞)に関してはカウントできるのですが,語種(漢語,和語)に関して,カウントができません。
parseで確認したところ,各単語に語種が割り当てられていることが確認できました(調べた限りでは語種に関しては自ら追加する必要がありそうでしたが,自分が確認した限りではデフォルトで語種が付与されていたと思います。)。
インデックスを見ると,品詞のインデックスが0なのに対して,語種のインデックスは12であると確認しました。
しかし,node.feature.split(",")に対して12を指定するとlist index out of rangeが出てしまいます。
試したこと
品詞を示すインデックス0から順番にインデックスを試したところ, 以下のようになりました。
0~5:実行はでき,語種以外のものと一致するかどうかを見ているようで和語と漢語のカウントはそれぞれ0となる
6以降:error:list index out of rangeが出る
#コード
unidic_tagg = MeCab.Tagger("-d /usr/local/lib/mecab/dic/unidic-cwj-3.1.0-full")
node = unidic_tagg.parseToNode(text)
total_count = 0
kango_count = 0
wago_count = 0
doushi_count = 0
joshi_count = 0
while node:
total_count = total_count + 1
if node.feature.split(",")[12] == "漢": kango_count = kango_count + 1 elif node.feature.split(",")[12] == "和": wago_count = wago_count + 1 if node.feature.split(",")[0] == "動詞": doushi_count = doushi_count + 1 elif node.feature.split(",")[0] == "助詞": joshi_count = joshi_count + 1 node = node.next
print(total_count)
print(kango_count)
print(wago_count)
print(doushi_count)
print(joshi_count)
質問
どのように指定すれば語種情報が得られるでしょうか?
また,上記のコードに限らず,語種ごとの出現頻度をカウントする良い方法がありましたら,ご教授いただけると幸いです。
質問の不備などのご指摘も含め,よろしくお願いいたします。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/10/25 16:21
2021/10/26 00:07 編集
退会済みユーザー
2021/10/26 04:16
2021/10/29 22:21 編集
退会済みユーザー
2021/10/31 14:42