teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

再度、全てのコードを記載いたしました。

2021/11/10 06:09

投稿

Uron-w
Uron-w

スコア1

title CHANGED
File without changes
body CHANGED
@@ -3,42 +3,52 @@
3
3
  参考にしているサイトが名詞のみですが、動詞、形容詞、形容動詞についても頻出カウントしたいと思っています。
4
4
  参考サイト:https://www.codexa.net/mecab-python/
5
5
 
6
- 尚、テキストデータは喋り言葉の書き起こしを利用しているため、かなり長い文章を使っています。
7
-
8
- 過去質問を見て、色々試していますが結果がエラーになか、結果が変わらないです。
6
+ 参考にしているコード
9
-
10
7
  ```
8
+ # 小池百合子氏の政策ページ解析
9
+ # ファイル読み込み
10
+ Koike = r'Yuriko_Koike_Policy.txt'
11
+ with open(Koike) as K:
12
+ K_text = K.read()
13
+ #テキストデータの確認
14
+ print(K_text)
15
+ # Mecab で形態素解析
16
+ K_parsed = mecab.parse(K_text)
17
+ #解析結果の確認
18
+ K_parsed
19
+ #行単位に分割
20
+ K_parsed_lines = K_parsed.split('\n')
11
21
  #処理に使うリストを作成
12
22
  K_parsed_words = []
13
23
  K_words = []
14
-
24
+ #各行のタブ(\t)を除去
25
+ for K_parsed_line in K_parsed_lines:
26
+ K_parsed_words.append(re.split('[\t,]', K_parsed_line))
27
+
15
- #(やりたいこと)名詞・動詞・形容詞・形容動詞・一般に該当する単語をリストに格納
28
+ #名詞・一般に該当する単語をリストに格納
16
29
  for K_parsed_word in K_parsed_words:
17
- if ( K_parsed_word[0] not in ('EOS', '')
30
+ if ( K_parsed_word[0] not in ('EOS', '')
18
- and K_parsed_word[1] in ('名詞','動詞','形容詞','形容動詞')
31
+ and K_parsed_word[1] == '名詞'
19
32
  and K_parsed_word[2] == '一般'):
20
33
 
21
34
  K_words.append(K_parsed_word[0])
22
-
35
+
23
36
  # 出現頻度上位15語を抽出して表示
24
37
  K_counter = Counter(K_words)
25
38
  for K_word, K_count in K_counter.most_common(15):
26
39
  print('%s : %s' % (K_word, K_count))
40
+ ```
41
+ 本来やりたいこと:名詞以外も、動詞・形容詞・形容動詞をカウントしたい。過去質問に似たようなコードを下記のように編集するも、元コードと結果が変わりません。
27
42
 
28
43
  ```
29
- エラー:下記コードと結果が変わりません。
30
- ```
31
- #処理に使うリストを作成
32
- K_parsed_words = []
33
- K_words = []
34
-
35
- #名詞・一般に該当する単語をリストに格納 (参考サイトより。)
44
+ #名詞・動詞・形容詞・形容動詞・一般に該当する単語をリストに格納
36
45
  for K_parsed_word in K_parsed_words:
37
46
  if ( K_parsed_word[0] not in ('EOS', '')
38
- and K_parsed_word[1] in ('名詞')
47
+ and K_parsed_word[1] in ('名詞','動詞','形容詞','形容動詞')
39
48
  and K_parsed_word[2] == '一般'):
49
+
40
- K_words.append(K_parsed_word[0])
50
+ K_words.append(K_parsed_word[0])
41
-
51
+
42
52
  # 出現頻度上位15語を抽出して表示
43
53
  K_counter = Counter(K_words)
44
54
  for K_word, K_count in K_counter.most_common(15):