[python3] 英語及び日本語のテキストのポジネガを判定して見る
全て無料で見れますのでご安心ください!でも100円貰えれば僕がチューハイ飲めます!
はじめに
機械学習にテキストの特徴量を加えようと思ったことはないでしょうか。
僕の場合は金融市場の予測の際にSNSのテキスト情報を特徴量として入力して予測に使っていました。その際に分散表現やBowなど様々な特徴量の変換方法を試したのですがその中でも直感的に理解しやすい極性変換を紹介します。
金融市場の予測に扱う場合、海外ユーザーの影響力がかなり強く英文も多く扱うことが多いと思いますので英語と日本語のテキストを入力するケースを想定して作成しました。
最後に、pythonの全文のcodeとその使い方を載せてます。このcodeでテキストの翻訳・形態素解析・極性値付与を行えます!
極性辞書
極性とは要するにテキストがどれくらいポジティブかネガティブかを示す指標になります。
今回は単語極性辞書というものを扱います。単語極性辞書は単語毎にどれだけポジティブかネガティブかを表した数値を記入されている辞書です。
テキストの極性変換方法
1.入力されたテキストを日本語に変換
2.入力されたテキストを形態素解析して単語毎に分割する。
3.その各単語の極性値を極性辞書で調べて極性値を調べる。
4.各単語の極性値の合計値/ 単語の総数 の計算式によって1テキストの極性値を算出する。
必要なもの
・pythonの実行環境
・極性辞書
東工大の高村教授の公開している極性辞書を用いました。以下からダウンロードできます。
http://www.lr.pi.titech.ac.jp/~takamura/pndic_ja.html
必要なライブラリ
・MeCab・・・形態素解析をするためのライブラリ
・pandas・・・みんな大好きpandas
・GoogleTrance・・・Google翻訳使い翻訳するためのライブラリ
ない場合はpipでインストールしてください。
code
import pandas as pd
import MeCab as mcb
from googletrans import Translator
#極性辞書の読み込み
dic=pd.read_csv("PN-pojinega.csv",encoding='cp932') #極性変換
def texttokyokusei(text,dic):
m = mcb.Tagger('-Ochasen')
m.parse('')
node = m.parseToNode(text)
summ=0
count=0
while node:
if node.feature.split(",")[0] == u"名詞" or node.feature.split(",")[0] == u"形容詞" or node.feature.split(",")[
0] == u"動詞" or node.feature.split(",")[0] == u"副詞":
if len(dic.loc[dic['言葉'] == node.surface, '極性値']) == 1:
summ = summ + float(dic.loc[dic['言葉'] == node.surface, '極性値'].values.tolist()[0])
count = count + 1
node = node.next
if count != 0:
return summ/count
else:
return 0
#Google翻訳による英語の翻訳
def transjpeng(x):
flag=True
text=''
while(flag):
try:
text=translator.translate(x, dest="ja").text
flag=False
except:
print('error 10sleep')
time.sleep(10)
print(text)
return text
使い方
df=pd.read_csv('変換したいテキストファイル.csv',columns=['text']) #英文を日本語に翻訳
df['text']=df['text'].apply(transjpeng) #極性値を付与
df['polarity']=df['text'].apply(texttokyokusei,dic=dic)
ここから先は
¥ 100
この記事が気に入ったらサポートをしてみませんか?