昨日のコードをprintしてみましたら、思っていたように動いてなかったので、修正します。
import numpy as np import pandas as pd import MeCab #辞書読み込み npjp = pd.read_csv('./akb_dic/np_jp.dic', sep=':', encoding='utf-8', names=('Tango','Yomi','Hinshi', 'Score')) #辞書の処理 tango_retu = npjp['Tango'] score_retu = npjp['Score'] npjp_dic = dict(zip(tango_retu, score_retu)) #ファイルの読み込み tweet = open('20180713.csv', 'r') string = tweet.read() lists = string.split('"\n"') #リスト毎に分割 nagasa = len(lists) list_bara = [lists[i:i+1] for i in range(0,nagasa,1)] #スコア処理 for list_keisiki in list_bara: tagger = MeCab.Tagger ("") string = ' '.join(list_keisiki) mecab = tagger.parse(string) kaigyou = mecab.split('\n') total_score = [] for tango_list in kaigyou: tab = tango_list.split('\t') if tab[0] in npjp_dic: pn_score = npjp_dic[tab[0]] total_score.append(pn_score) print(tab[0] + str(pn_score)) else: pn_score = 0 total_score.append(pn_score) total = sum(total_score) print(total)
昨日のコードですと、リストの中身を全てループしているようで、1文字1文字をスコア付していましたので、うまく集計ができていませんでした。 汚いコードになっちゃいましたが、これならうまく集計ができます。
今日勉強したこと
- リストの分割