概要

Pepper(ペッパー)にテキスト文からの感情を分析する機能(ネガポジ判定)を搭載しました。

外部APIとしてGoogle Cloud Platform(GCP)のNatural Language APIを利用しています。

今回載せたコードはPythonでGoogle Natural Language APIを叩いて感情分析をほとんどそのまま使い、Pepperで動くように書き換えています。

PythonSDK

PythonSDK(PythonだけでPepperの開発が出来るSDK)を使って開発しています。PythonSDKについて詳しくは↓

https://qiita.com/kyohara/items/ae0dd0f57413caa90674 (PythonSDKの導入方法)
https://qiita.com/Atelier-Akihabara/items/3289e60985586b8da709 (Python SDKによるsay hello)
http://naoqi.memo.wiki/d/Python%20SDK (PythonSDKリファレンス)

ソースコード

ご自身のペッパーのIPアドレスと、APIキーを入力すれば、実行できます。

sentiment.py
#coding:utf8
from naoqi import ALProxy #pepperのライブラリを使うため
import requests

#ペッパーの接続情報
pepperIP = "YourPepperIPaddress"

APIkey = "YourAPIkey"

#感情分析に使うテキスト文章
text = "今日食べたケーキ、美味しかった!"

#インスタンスを生成
tts = ALProxy("ALTextToSpeech",pepperIP,9559)

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

#各種設定
header = {'Content-Type': 'application/json'}
body = {
    "document": {
        "type": "PLAIN_TEXT",
        "language": "JA",
        "content": text
    },
    "encodingType": "UTF8"
}

#分析結果の格納
response = requests.post(url, headers=header, json=body).json()

#とりあえずペッパーに挨拶させとく!
tts.say("こんにちは!")

#こちらが話した内容によってペッパーの反応を変更
#ポジティブな内容のとき
if response["documentSentiment"]["score"] >= 0.5:
    tts.say("なんだか嬉しそうだね!")

#普通の内容のとき
elif response["documentSentiment"]["score"] < 0.5 and response["documentSentiment"]["score"] >= -0.5:
    tts.say("何かいいことがあるといいね!")

#ネガティブな内容のとき
else:
    tts.say("なんだか元気がないぞーーー!!")

実行すると、、、

入力したテキストの文章によって、ペッパーの反応が変わります。-0.5未満、-0.5以上0.5未満、0.5以上で分けました。(このAPIは感情を-1.0~1.0の間で分析。0以上がポジティブ、0以下がネガティブ)
今回は、3パターンにしましたがもうちょっと細かくしてもいいのかもしれませんね。

まとめ

これでペッパーが日本語から感情を読み取れるようにパワーアップしました!しかし、テキストベースだとまだまだ実用性に乏しい、、、。次はペッパーに音として認識させた内容を感情分析させるといったことに取り組みたいと思います。

by アトリエスタッフ

Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account log in.