2018年6月25日月曜日

感情分析のサンプルプログラム

import requests

#APIキーを入力
key = "YourAPIkey"

#感情分析したいテキスト
text = "こんにちは、今日もいい天気ですね。明日も晴れるといいなあ。でも最近晴れてるのに寒いですよね。"

#APIのURL
url = 'https://language.googleapis.com/v1/documents:analyzeSentiment?key=' + key

#基本情報の設定 JAをENにすれば英語のテキストを解析可能
header = {'Content-Type': 'application/json'}
body = {
"document": {
"type": "PLAIN_TEXT",
"language": "JA",
"content": text
},
"encodingType": "UTF8"
}

#json形式で結果を受け取る。
response = requests.post(url, headers=header, json=body).json()

#分析の結果をコンソール画面で見やすく表示
print("総合magnitude:",response["documentSentiment"]["magnitude"])
print("総合score:",response["documentSentiment"]["score"])
for i in response["sentences"]:
print(i["text"]["content"],"magnitude:",i["sentiment"]["magnitude"],", score:",i["sentiment"]["score"])

プログラムを使う際には、"YourAPIkey"の部分に自分で発行したAPIkeyを入力してください。


実行結果
総合magnitude: 2.1
総合score: 0.3
こんにちは、今日もいい天気ですね。 magnitude: 0.8 , score: 0.8
明日も晴れるといいなあ。 magnitude: 0.7 , score: 0.7
でも最近晴れてるのに寒いですよね。 magnitude: 0.5 , score: -0.5

magnitudeは、感情の強さであり、socreが感情の点数です。socreは-1.0~1.0の範囲で表示され、マイナスの値がネガティブな感情、プラスの値がポジティブな感情です。magnitudeの方は必ず0以上の値がつけられます。

今回の例でいうと最初の2文はポジティブな内容であると処理され、最後の1文はネガティブな内容と判定が下されました。そして3つの文全体を通じて、0.3というスコアがつけられています。個人的な意見なのですが、なかなか良い精度なのではないでしょうか。

また、今回の入力は

「こんにちは、今日もいい天気ですね。明日も晴れるといいなあ。でも最近晴れてるのに寒いですよね。」

という一文ですが、Google Cloud Natural Language APIが自動的に文章ごとに区切って計算してくれています。入力でわざわざ区切らなくても、自動で区切ってくれるというのは非常にありがたい。

Google Cloud Natural Language APIですが、使うには登録が必要です。無料分だけでもかなり使えるので、今回のプログラムを試して見たい方は是非登録して見てください!

Google Cloud Natural Language APIホームページ
https://cloud.google.com/natural-language/?hl=ja

0 件のコメント:

コメントを投稿