自然言語処理100本ノック の30問目を こちら のサイトのコードを参考にして(というかそのまま書いて)
python
1path = 'neko.txt.mecab' 2with open(path) as f: 3 text = f.read().split('\n') 4result = [] 5for line in text: 6 if line == 'EOS': 7 continue 8 ls = line.split('\t') 9 d = {} 10 tmp = ls[1].split(',') 11 d = {'surface':ls[0], 'base':tmp[6], 'pos':tmp[0], 'pos1':tmp[1]} 12 result.append(d)
という文を実行するとおそらく
python
1if line == 'EOS': 2 continue: 3ls = line.split('\t')
のところのせいで ls の一番最後に [' '] が生成されてしまい(そもそも最後にEOSが2行連続で出てしまうからこうなっているという認識であってますか?), li[1] のところで
Traceback (most recent call last):
File "NLP30.py", line 11, in <module>
tmp = ls[1].split(',')
IndexError: list index out of range
となっています. 例えば
python
1path = 'neko.txt.mecab' 2with open(path) as f: 3 text = f.read().split('\n') 4result = [] 5d = {} 6for line in text: 7 if line == 'EOS': 8 continue 9 if line != '': 10 ls = line.split('\t') 11 tmp = ls[1].split(',') 12 d = {'surface':ls[0], 'base':tmp[6], 'pos':tmp[0], 'pos1':tmp[1]} 13 result.append(d)
という文に書き換えて実行すればうまくいきますが, そもそも [' '] が生成されない書き方をしたいのですが, わからないです. なにかアドバイスをいただけるでしょうか
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/06 08:22 編集