現在自然言語処理の問題をしているのですが、エラーになる原因がわかりません。
どなたか教えていただいてもよろしいでしょうか?
python
1""" 230. 形態素解析結果の読み込み 3形態素解析結果(neko.txt.mecab)を読み込むプログラムを実装せよ. 4ただし, 5===== 6各形態素は表層形(surface), 7基本形(base), 8品詞(pos), 9品詞細分類1(pos1) 10==== 11をキーとするマッピング型に格納し, 121文を形態素(マッピング型)のリストとして表現せよ. 13第4章の残りの問題では,ここで作ったプログラムを活用せよ. 14 15表層形\t品詞,品詞細分類1,品詞細分類2,品詞細分類3,活用型,活用形,原形,読み,発音 16 17表層形,品詞,品詞細分類1 18 19当たる、ない:基本形 20""" 21 22import MeCab 23 24#ファイルのパス用 25text_from = "neko.txt" 26text_to = "neko.txt.mecab" 27 28def text_toMeCab(text_from,text_to): 29 ''' 30 convert mecab morphological analisis result and write it to text 31 32 Parameters 33 -------------- 34 35 mecab_tag: メカブオブジェクト 36 origin: 元のファイル先 37 as_mecab: メカブに変更するファイル先 38 39 Returns 40 -------- 41 parsed_text 42 ''' 43 # メカブタグ 44 mecab_tag = MeCab.Tagger('') 45 46 with open(text_from,'r') as origin,\ 47 open(text_to,'w') as as_mecab: 48 tmp_text = origin.read() 49 parsed_text = mecab_tag.parse(tmp_text) 50 as_mecab.write(parsed_text) 51 52 return parsed_text 53 54 55 56def maping_morphology(mecab_file): 57 ''' 58 mapping morphological analysis result 59 60 Parameters 61 ---------- 62 all_text:str 63 「吾輩は猫である」全文読み込み 64 raw_list:list 65 改行ごとにsplit されたもの(要素) 66 temporary_list,tmp_list:list 67 一時変換用リスト 68 # splitの分割によりsurface,word_classに分ける 69 morphological_dict:dict 70 形態素解析結果のマップ 71 72 Returns 73 -------- 74 morphological_dict:mapping dictionary 75 ''' 76 #先頭に改行があるので削除する 77 mecab_file = mecab_file.lstrip('\n') 78 # 一行ずつに分割 79 raw_list = mecab_file.splitlines() 80 morphological_dict = {} 81 82 for temporary_list in raw_list: 83 tmp_list = temporary_list.replace('\t',',').split(',') 84 morphological_dict.update({'surface':tmp_list[0], 85 'base':tmp_list[1], 86 'pos':tmp_list[2], 87 'pos1':tmp_list[-3]}) 88 return morphological_dict 89 90 91mecab_text = text_toMeCab(text_from,text_to) 92result = maping_morphology(mecab_text) 93print(result)
error
1Traceback (most recent call last): 2 File "n30_execise.py", line 90, in <module> 3 result = maping_morphology(mecab_text) 4 File "n30_execise.py", line 84, in maping_morphology 5 morphological_dict.update({'surface':tmp_list[0],'base':tmp_list[1],'pos':tmp_list[2],'pos1':tmp_list[-3]}) 6IndexError: list index out of range
回答1件
あなたの回答
tips
プレビュー