質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

3回答

2324閲覧

mecab 頻出語カウント

Uron-w

総合スコア1

Mecab

Mecabは、オープンソースの形態素解析エンジンです。 言語、辞書、コーパスに依存しない汎用的な設計を基本方針としています。 Mecabの由来は、開発者の好物である和布蕪(めかぶ)から名づけられました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/11/10 02:52

編集2021/11/10 06:09

プログラミング初心者です。
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/ツールのバージョンなど)

参考サイト:https://www.codexa.net/mecab-python/

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

jbpb0

2021/11/10 05:50

質問者さんが参考にしてる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ページのコードを参照してください)
Uron-w

2021/11/10 05:58

ありがとうございます。 再度全ての処理を行いました。 わかりづらく申し訳ありませんが、全ての処理をやった上で、名詞だけでなく、動詞・形容詞・形容動詞もカウントする場合はどのように編集すれば良いかを教えて頂けると非常にありがたいです。
jbpb0

2021/11/10 06:03

それでしたら、その部分も質問のコードを編集して追記してください すでに回答してる方々は、回答を見たら分かると思いますが、そこをやってないのを前提で回答してます
Uron-w

2021/11/10 06:10

ありがとうございます。 再度編集致しました。
guest

回答3

0

ベストアンサー

やりたいことを実現するには解析結果、および解析に利用した辞書について理解する必要があります。
たとえばNAIST-jdic/IPADICなどを参照ください。
これによると品詞形容動詞は現れないようですし品詞動詞品詞細分類1には一般は現れないようです。
これらの組み合わせから、適切な判定をおこなえばよいです。

投稿2021/11/10 07:49

can110

総合スコア38341

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

python

1K_parsed_words = [] 2 3#(やりたいこと)名詞・動詞・形容詞・形容動詞・一般に該当する単語をリストに格納 4for K_parsed_word in K_parsed_words: 5 ...

python

1for i in []: 2 print(i)

と同じですから、for文の本体が実行されることは決してありません。


(追記)
解析結果を自分の目で見てないだけですね。
(can110さんの回答で十分と判断します)

投稿2021/11/10 03:28

編集2021/11/10 08:37
quickquip

総合スコア11235

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

K_parsed_words = []
の直後に、このループを回せば、ループは一回も実行されないので、K_wordsは空リストのままでしょう。

投稿2021/11/10 03:24

ppaul

総合スコア24670

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問