前提・実現したいこと
テキストファイルから指定した品詞を頻出順に抽出したいです.
プログラムの条件分のところで以下のエラーが出たのですが対処法がわかりません.
ご指摘いただきたいです.
なお, 参考にしたサイトでは名詞のみでしたが, 対象追加として動詞, 形容詞, 形容動詞も同時に処理したいと思っています.
発生している問題・エラーメッセージ
Traceback (most recent call last): File "count.py", line 21, in <module> for item in items File "count.py", line 23, in <listcomp> item[1] == '名詞' or item[2] == '動詞' or item[3] == '形容詞' or item[4] == '形容動詞' and item[5] == '一般')] IndexError: list index out of range
該当のソースコード
Python
1import MeCab 2import sys 3import re 4from collections import Counter 5 6# ファイル読み込み 7cmd, infile = sys.argv 8with open(infile) as f: 9 data = f.read() 10 11# パース 12mecab = MeCab.Tagger() 13parse = mecab.parse(data) 14lines = parse.split('\n') 15items = (re.split('[\t,]', line) for line in lines) 16 17 18 19# 名詞をリストに格納 20words = [item[0] 21 for item in items 22 if (item[0] not in ('EOS', '', 't', 'ー') and 23 item[1] == '名詞' or item[2] == '動詞' or item[3] == '形容詞' or item[4] == '形容動詞' and item[5] == '一般')] 24 25# 頻度順に出力 26counter = Counter(words) 27for word, count in counter.most_common(): 28 print("{word}: {count}") 29
試したこと
orにて処理を試みたがうまくいきませんでした.
補足情報(FW/ツールのバージョンなど)
参考文献
【Python3】MeCabでテキストファイルから名詞を頻出順に抽出
https://qiita.com/reima21/items/cb73aeb569af48877261
回答2件
あなたの回答
tips
プレビュー