前提・実現したいこと
MeCabを使用した自然言語処理を行おうとしております。
Twitterから取得したテキストデータをMeCabにて単語ごと区切り、
元から保存している(辞書+極性値)テキストと合致する単語の極性値を取得します。
最終的に、tweetごとにどの程度極性値を持っているのかテキストに保存させたいと思っております。
発生している問題・エラーメッセージ
現在発生している問題が、dict型で取り込んだ(辞書+極性値)テキストが、tweet文章と合致するか条件分岐処理を行ったときに極性値をうまく取り出せていない問題が発生しております。
※(辞書+極性値)テキストは、単語ごとに1.0~-1.0の値を持っており、現在処理を行うと取り出す値がすべて-1.0のなってしまう問題(数値が丸められてしまっている?)が発生しております。
# -*- coding: utf-8 -*- #MeCabをimport import MeCab #アウトプット設定 outputfile = open('test-kekka.txt', 'w', encoding ='utf-8') #ツイートテキストを読み込み tweetfile = open('negaposit.txt', encoding = 'utf-8') #negaposi辞書を読み込み nega_posi = open('negaposi.txt', encoding = 'utf-8') #Mecabの辞書設定 tagger = MeCab.Tagger("-Ochasen") tagger.parse("") dic = {} result = "test" score = 0 goal = {} base_form = "a" base_value = 0 #行ごとに辞書の読み込み⇒検索とdicに保存 for line in nega_posi: line = line.rstrip() columns = line.split(':') base_form = columns[0] base_value = float(columns[3])*10000 dic[base_form] = str(base_value) #print(dic) for line in tweetfile: line = line.rstrip() node = tagger.parseToNode(line) while node is not None: #品詞情報取得 #Node.featureのフォーマット:品詞、品詞細分類1、品詞細分類2、品詞細分類3、活用形、原形、読み、発音 hinsi = node.feature.split(",")[0] if hinsi in["名詞"]: result = node.surface #print(result) elif hinsi in["動詞","形容詞"]: result = node.feature.split(",")[6] #print(result) else: result = "" if result in dic: print(result) score += float(dic[base_form]) else: score += 0 node = node.next goal[line] = score score = 0 #出力 for word in goal: print(word +'\t'+str(goal[word]), file = outputfile) ```Python3.x
試したこと
少数以下が丸められてしまっていると思っておりますので、
取り出した値をfloat型に変更したりは試しております。
補足情報(FW/ツールのバージョンなど)
回答1件
あなたの回答
tips
プレビュー