プログラミング初心者です。
google colaborotary でmecab を利用して形態素解析、頻出後カウントをしたいです。
参考にしているサイトが名詞のみですが、動詞、形容詞、形容動詞についても頻出カウントしたいと思っています。
参考サイト:https://www.codexa.net/mecab-python/
参考にしているコード
# 小池百合子氏の政策ページ解析 # ファイル読み込み Koike = r'Yuriko_Koike_Policy.txt' with open(Koike) as K: K_text = K.read() #テキストデータの確認 print(K_text) # Mecab で形態素解析 K_parsed = mecab.parse(K_text) #解析結果の確認 K_parsed #行単位に分割 K_parsed_lines = K_parsed.split('\n') #処理に使うリストを作成 K_parsed_words = [] K_words = [] #各行のタブ(\t)を除去 for K_parsed_line in K_parsed_lines: K_parsed_words.append(re.split('[\t,]', K_parsed_line)) #名詞・一般に該当する単語をリストに格納 for K_parsed_word in K_parsed_words: if ( K_parsed_word[0] not in ('EOS', '') and K_parsed_word[1] == '名詞' and K_parsed_word[2] == '一般'): K_words.append(K_parsed_word[0]) # 出現頻度上位15語を抽出して表示 K_counter = Counter(K_words) for K_word, K_count in K_counter.most_common(15): print('%s : %s' % (K_word, K_count))
本来やりたいこと:名詞以外も、動詞・形容詞・形容動詞をカウントしたい。過去質問に似たようなコードを下記のように編集するも、元コードと結果が変わりません。
#名詞・動詞・形容詞・形容動詞・一般に該当する単語をリストに格納 for K_parsed_word in K_parsed_words: if ( K_parsed_word[0] not in ('EOS', '') and K_parsed_word[1] in ('名詞','動詞','形容詞','形容動詞') and K_parsed_word[2] == '一般'): K_words.append(K_parsed_word[0]) # 出現頻度上位15語を抽出して表示 K_counter = Counter(K_words) for K_word, K_count in K_counter.most_common(15): print('%s : %s' % (K_word, K_count))
補足情報(FW/ツールのバージョンなど)
質問者さんが参考にしてるWebページでは、
# 小池百合子氏の政策ページ解析
# ファイル読み込み
Koike = r'Yuriko_Koike_Policy.txt'
with open(Koike) as K:
K_text = K.read()
# Mecab で形態素解析
K_parsed = mecab.parse(K_text)
#行単位に分割
K_parsed_lines = K_parsed.split('\n')
#処理に使うリストを作成
K_parsed_words = []
K_words = []
#各行のタブ(\t)を除去
for K_parsed_line in K_parsed_lines:
K_parsed_words.append(re.split('[\t,]', K_parsed_line))
をやってますけど、質問に掲載されてるコードには、それに相当する処理は見当たりません
質問のコードには書いてないけど、実際はやってるのでしょうか?
(上記はインデントが無くなって見えると思いますが、それは参考Webページのコードを参照してください)
ありがとうございます。
再度全ての処理を行いました。
わかりづらく申し訳ありませんが、全ての処理をやった上で、名詞だけでなく、動詞・形容詞・形容動詞もカウントする場合はどのように編集すれば良いかを教えて頂けると非常にありがたいです。
それでしたら、その部分も質問のコードを編集して追記してください
すでに回答してる方々は、回答を見たら分かると思いますが、そこをやってないのを前提で回答してます
ありがとうございます。
再度編集致しました。
回答3件
あなたの回答
tips
プレビュー