2018/02/13

2020/04/14

PythonでGoogle Natural Language APIを叩いて感情分析

Python

ライター:

当記事ではPythonでGoogle Cloud Natural Language APIを叩いて感情分析する方法をご紹介いたします。

Google Cloud Natural Language APIは、Googleが提供する自然言語処理のAPIであり、テキストの構造と意味を解析してくれるものです。今回はこちらのAPIの感情分析機能をPython3で呼び出します。Google Cloud Natural Language APIの具体的な機能についてはこちら

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

まずは以下にサンプルプログラムを示します。

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ホームページ

 

(totalcount 5,837 回, dailycount 6回 , overallcount 16,630,871 回)

ライター:

Python

single-banner

COMMENT

コメントを残す

メールアドレスが公開されることはありません。
*は必須項目です。




CAPTCHA