見出し画像

[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)

ここから先は

0字

¥ 100

この記事が気に入ったらサポートをしてみませんか?