【簡単】Google Natural Languageで感情解析してみた

なにこれ?

Googleが提供するAPIで、テキストを投げると解析してくれます。
今回は、感情解析を用いて、ポジティブかネガティブなのかを見てみます。

環境

macOS 10.14.6
Postman 6.7.4

GoogleのAPIを叩く準備

以下の記事を参考にAPIのKeyを取得してください
GoogleのAPIを使う時の準備 https://qiita.com/amichang/items/46ad747a5e2520c95be2

テキストを解析してみる

iTSherpaホームページの文章を使って、感情解析をしてみます。

【1】楽しそうな記事のテキスト

ブログ「ポケモントレーナーの皆さまへ」の文章を解析してみます。

json

{
encodingType': 'UTF8',
document': {
type': 'PLAIN_TEXT',
content': 'この度、株式会社アイティーシェルパの名前でポケストップが設置されました!

ポケストップとはポケモンGOで使用するアイテムが入手できる場所になっています。
オフィスにいながらポケストップを回すことができます!
一部メンバーではポケモンGOが流行っており、やってるメンバーで集まってはみんなで楽しんでいます。

弊社にいらした際、または近くを通りかかった際には、ルアーモジュールをぜひ使ってください。みんな喜びます!'
}
}

結果

score の数値が高いほどポジティブな感情と判断されたものです。
「楽しんでいます」「喜びます」等の文言が含まれる場合に、scoreが高くなっています。


{
documentSentiment: {
magnitude: 3.9,
score: 0.6
},
language: "ja",
sentences: [
{
text: {
content: "この度、株式会社アイティーシェルパの名前でポケストップが設置されました!",
beginOffset: 0
},
sentiment: {
magnitude: 0.3,
score: 0.3
}
},
{
text: {
content: "ポケストップとはポケモンGOで使用するアイテムが入手できる場所になっています。",
beginOffset: 110
},
sentiment: {
magnitude: 0.5,
score: 0.5
}
},
{
text: {
content: "オフィスにいながらポケストップを回すことができます!",
beginOffset: 224
},
sentiment: {
magnitude: 0.9,
score: 0.9
}
},
{
text: {
content: "一部メンバーではポケモンGOが流行っており、やってるメンバーで集まってはみんなで楽しんでいます。",
beginOffset: 303
},
sentiment: {
magnitude: 0.9,
score: 0.9
}
},
{
text: {
content: "弊社にいらした際、または近くを通りかかった際には、ルアーモジュールをぜひ使ってください。",
beginOffset: 445
},
sentiment: {
magnitude: 0.1,
score: 0.1
}
},
{
text: {
content: "みんな喜びます!",
beginOffset: 577
},
sentiment: {
magnitude: 0.9,
score: 0.9
}
}
]
}

aaaa

【2】業務連絡なテキスト

次に感情表現が少ない業務的なテキストを解析してみます。
事業案内(コールセンターの欄) https://itsherpa.com/service/

json

{
encodingType': 'UTF8',
document': {
type': 'PLAIN_TEXT',
content': 'Call Center
委託の内容や規模に合せたサービスを提供します。

例えば…
●新聞等の広告掲載後に、増えた電話受注業務が自社では対応しきれない。
●EC通販サイトへの問合せが増えたので、電話受注業務をアウトソースしたい。
●オペレーターの教育にかける時間がない。
●定期購入の案内をしてもらいたい。
というような企業の支援が可能です。'
}
}

結果

「~~出来ない」「~~ない」の様なネガティブな文言では、scoreがマイナス値となっています。

{
documentSentiment: {
magnitude: 2,
score: -0.1
},
language: "ja",
sentences: [
{
text: {
content: "Call Center\n委託の内容や規模に合せたサービスを提供します。",
beginOffset: 0
},
sentiment: {
magnitude: 0,
score: 0
}
},
{
text: {
content: "例えば…",
beginOffset: 83
},
sentiment: {
magnitude: 0,
score: 0
}
},
{
text: {
content: "新聞等の広告掲載後に、増えた電話受注業務が自社では対応しきれない。",
beginOffset: 99
},
sentiment: {
magnitude: 0.3,
score: -0.3
}
},
{
text: {
content: "EC通販サイトへの問合せが増えたので、電話受注業務をアウトソースしたい。",
beginOffset: 202
},
sentiment: {
magnitude: 0,
score: 0
}
},
{
text: {
content: "オペレーターの教育にかける時間がない。",
beginOffset: 310
},
sentiment: {
magnitude: 0.4,
score: -0.4
}
},
{
text: {
content: "定期購入の案内をしてもらいたい。",
beginOffset: 371
},
sentiment: {
magnitude: 0.5,
score: -0.5
}
},
{
text: {
content: "というような企業の支援が可能です。",
beginOffset: 420
},
sentiment: {
magnitude: 0.4,
score: 0.4
}
}
]
}

まとめ

いかがでしたでしょうか。
APIを叩くだけの簡単な操作で文章の感情解析が可能です。
実際の業務活用としては、ユーザレビューや口コミ情報から感情解析を行い分類を行う等が考えられます。

参考記事

Cloud Natural Language API で飲食店レビューの感情を分析する – Intelligent Technology’s Technical Blog https://iti.hatenablog.jp/entry/2019/02/21/095135
GCPの「Natural Language API」を試してみた | Developers.IO https://dev.classmethod.jp/articles/yoshim_gcp_natural-language-api/