みなさんこんにちは!
イザナギです!
最近なのですが、Nuxtでアプリを作りながら並行でPython分析学習しております。
今まで、RubyとかJavaScriptとかを触ってきた分、Pythonは初め違和感を覚えますね。
本当に個人的な感想なのですが、endとか「}」などで文を囲まないのが、違和感でした。
しかし、ライブラリがしっかりしているので、慣れれば結構使いやすいですね!
さて!今回はタイトルにもあるとおり、「感情分析」をおこなっていきたいと思います!
感情分析とは!
簡単にいうと「感情分析」とは、テキストから感情などを読み取ることです。
なので、Twitterなどのツイートを相手がどんな気持ちでツイートしているか分析できるわけですね。
調べてみると、感情分析できるAPIはいろいろあるみたいですね。
テキストの感情分析をするためのクラウドサービス比較(2018年版) - Qiita
その中で、今回は日本語対応している「Google Cloud natural Language」を使ってみたいと思います!
Google Cloud natural Languageとは?
こちらも「感情分析API」ですね。
Google Cloud PlatformにてAPIキーを取得すれば、簡単に使えるようになります。
感情を表すものとして「score」「magnitude」があります。
公式サイトにも書いてありますが、私の方でも簡単に説明していこうと思います。
「score」について
「score」は感情を表しています。
1.0 ~ -1.0の数字で表され、正の数字であればポジティブ、負の数字であればネガティブとなります。
「magnitude」について
「magnitude」は感情の高まりを表しています。
数値は0以上で表されます。
どんな時に使うのかというと「score」が0に近かった時に
ポジティブとネガティブがテキスト内に混合していることを確認するために使用するそうです。
例えば「score」が0.0「magnitude」が5.0のときは混合しており、「score」が0.0「magnitude」が1.0なら混合はしていないということになるそうです。
早速使ってみる!
では早速使ってみましょう!
ちなみに、今回作成したファイル構成は以下の通りです。
- 親フォルダ
- data
- data.csv
- pythonファイル(実行用)
- config.py
import json, config #標準のjsonモジュールとconfig.pyの読み込み
import requests
# gcp感情分析
def emotion(text_emotion):
#APIキーの取得
key = config.gcp_api_key
url = 'https://language.googleapis.com/v1/documents:analyzeSentiment?key=' + key
header = {'Content-Type': 'application/json'}
body = {
"document": {
"type": "PLAIN_TEXT",
"language": "JA", #テキストの種類(ENにすれば英語を解読できる)
"content": text_emotion #ここに感情分析するテキストを挿入
},
"encodingType": "UTF8"
}
#json形式で結果を受け取る。
response = requests.post(url, headers=header, json=body).json()
#magnitudeとscoreを返す
return [response["documentSentiment"]["magnitude"],response["documentSentiment"]["score"]]