hero_picture
Cover Image for Amazon Comprehend を使って様々な文章を感情分析してみました

Amazon Comprehend を使って様々な文章を感情分析してみました

2020/01/31

CTOの原口です。

Amazon Comprehend が昨年の11月に日本語にも対応した、という事で少し触ってみました。

目次

Amazon Comprehendとは?

Amazon Comprehendとは 機械学習を使用してテキスト内でインサイトや関係性を検出する自然言語処理 (NLP) サービス です。

機械学習の知識なく使えるサービスで文章を投げると 「エンティティ分析」「キーフレーズ分析」「感情分析」の結果が返ってくるというお手軽なサービスになります。

今回、この中でも特に面白そうだな、と思った感情分析でいろいろな文章の感情分析を行ってみました。

Amazon Comprehend で 文章の感情分析

Amazon Comprehendは現在(2020/01/22)は以下のリージョンでしか提供されておらず、残念ながら東京リージョンでの提供はされておりませんので以下のリージョンで試してみます

  • EU (ロンドン)
  • EU (アイルランド)
  • アジアパシフィック (シンガポール)
  • アジアパシフィック (シドニー)
  • EU (フランクフルト)
  • 米国東部 (バージニア北部)
  • 米国東部 (オハイオ)
  • カナダ (中部)
  • 米国西部 (オレゴン)

とりあえず試してみる…というのはすごく簡単で、 Amazon Comprehend のサービストップに移動して「Real-time analysis」をクリックし、解析したい文章を入力し、「Analyze」をクリックするだけで結果が出てきます

Amazon Comprehend の公式ページの文章を解析してみました

大枠として4つの感情に分類されて分析されるようです

Neutral ,Positive ,Negative,Mixed とありますがMixedだけどういうものかよくわかりません…

  • Neutral -> ニュートラル(感情→)
  • Positive -> ポジティブ (感情↑)
  • Negative -> ネガティブ (感情↓)
  • Mixed -> 上記が混じった文章?

ひとまずこの文章は94%がニュートラルで5%だけのポジティブ要素がある、と分析されてようですね

いろんな文章を感情分析してみる

まずは弊社代表、西垣の「社長ブログ」から分析してみました

1社長ブログ – 内定式
2https://www.seeds-std.co.jp/blog/24gk/education/376/
3Neutral 94% Positive 5%

ほぼニュートラル!後半の懇親会の文章などから数ある記事の中でも結構ポジティブ要素が多いのではないかなー?と思って選んだ記事でしたが、ニュートラルでした

1社長ブログ – AWSの盾が届きました
2https://www.seeds-std.co.jp/blog/24gk/aws/291/
3Neutral 92% Positive 7%

お次は同じく社長ブログからAWSからパートナーの盾が届いたこちらの記事を解析。これも結構喜んでおられたので結構ポジティブがいくか!?と思いましたが多少ポジティブが増えましたがそれでも7%でした。

さすが社長。公平があり感情的に揺さぶられないしっかりとした文章をかかれているようです。(持ち上げ)

1広報ブログ 忘年会(2019 ver.)を開催しました
2https://www.seeds-std.co.jp/blog/pr/6559/
3Neutral 65% Positive 9% Mixed 22%

それでは、今度は比較的くだけた文章も書ける広報ブログの文章を分析してみました。やはりニュートラルが基本になりますね。ですがここで初めて Mixedというよくわからない項目が22%に。

実はこのブログ内容には「各事業部の来年の抱負」という部分があるのですが、この項目は各部長の抱負をベースにした文章がありますので、そういう意味で1/3の純情な感情が入り乱れた結果Mixedとなったのかもしれません。

1広報ブログ  社長のHappyBirthday!!
2https://www.seeds-std.co.jp/blog/pr/3794/
3Neutral 35% Positive 64%

同じく広報ブログより、社長の誕生日を社内でお祝いしたブログ記事です。

これはもうポジティブに振り切れるはずだ!と思ったらやっぱりポジティブに振り切れてました。

1“これを納期までにやるにはどうしたらいいのかを考えなさい”
2Neutral 33% Negative 64%

ではブログ記事ではなく、もっと短い文章での解析はできるのか、とやってみました。こちらは上司からのお叱り文章という例文があったので解析してみました。

やっぱりネガティブが強く出ますね。

1Positive 99%

というわけで短文といえばtwitter。僕の好きな、さしこの適当なツイートを分析してみました。ポジティブ99%!さすがアイドルですね。

1“雨と雷やべー。。あと5分帰るの遅かったらヤバかった。。 飛行機心配しましたが明日は普通に大丈夫そうですね”
2Neutral 48% Positive 2% Negative48%

短文といえば、Slack!今度は社内のslackでの僕の発言を解析。これはどちらかといえば「よかったー」という意味で書いてたのですが、ネガティブが上がってしまっていますね。

やはりこういった複雑な文章を読むのは苦手なのかもしれないです

どんな事に使えそうだろうか

1{
2    "Sentiment": {
3        "Sentiment": "NEUTRAL",
4        "SentimentScore": {
5            "Positive": 0.05136203020811081,
6            "Negative": 0.000046045330236665905,
7            "Neutral": 0.9485709071159363,
8            "Mixed": 0.000021009738702559844
9        }
10    }
11}

さて、文章をAPIに投げると実際には上記のようなJSONが返ってきて”Sentiment”の項目に最も高かった感情が返ってきます。

これを踏まえて以下のような事をすると面白いのではないかと思いました

  • サポート窓口からのご連絡のお客様の返信を解析

      お客様から弊社サポートからのご連絡に対して、お客様からの返信を感情分析する事で、サポート品質向上の一つの指針になるのではないかと思いました。

  • slackの過去発言から感情の状態でステータス表示を変える

      たとえば自分の過去100メッセージから感情の平均を出して、最も多い環状をslackのステータス部分を絵文字とかで表すと面白いかもw

  • twitterなどでいっぱい感情分析してその中でネガティブ値が多いものから単語を抜き出しNGワードを作る

      やってみないとわからないですがそれなりの結果が出そうです。

おわりに

かんたんに文章の感情分析ができて面白いサービスでした。

可能であればネガティブ感情は「怒り」「悲しみ」くらいには分かれていると嬉しいですね。

機械学習も作るのではなく利用していくフェーズに入ったのだなーという事を改めて思いました。

時間があれば面白いもののデモを作ってみたいですね。