1
/
5

機械が理解するあなたのキモチ

Photo by Alex Knight on Unsplash

こんにちは!
エス・エー・エス株式会社
DXサービス部の海田(かいだ)です。

仕事でも、プライベートでも、
誰かとチャット(文字による対話)をしているとき、顔の見えない相手が

喜んでいるのか?
怒っているのか?
哀しんでいるのか?
楽しんでいるのか?

いわゆる「喜怒哀楽」の「どの状態なのか」を判断するスキルって結構大事ですよね。
そして、その能力が高い人を「気遣いができる人、空気が読める人」なんて言ったりもしますね。

また、とても感情の変化がわかりやすい人と、そうでもない人がいたりもします。

文字ではとても楽しそうだけど、内心は怒っているとか(怖いですね・・)
文字ではとても悲しそうだけど、内心は超喜んでいるとか(怖いですね・・)

怖い例ばかりですが、見かけと実はウラハラ・・ということは往々にしてあります。
それもヒトが上手に生きていく上での大切な能力だとも思っていますが・・
そんなヒトの複雑な感情を、「機械」はどのように理解しようとするのでしょうか?
今回はそんなテーマで書きたいと思います。

題して・・・

「機械が理解するあなたのキモチ」

よろしくおねがいします!

1.文字から感情を判断する「Amazon Comprehend」

AWSには、入力したテキストの内容を理解・分析しようとする
「Amazon Comprehend」というサービスがあります。
(Comprehendとは、「理解する」という意味があるようです。)

理解・分析できる項目内容は多岐にわたるのですが、その中でも今回は特に
「Sentiment(感情分析)」に注目してみたいと思います。

「Sentiment」には、
・肯定的(Positive)
・否定的(Negative)
・中立的(Neutral)
・混在(mixed)
の4種があり、機械が理解したそれぞれの信頼度を数値化します。

難しい話に発展する前に、まずは例を出してみますね。

「Amazon Comprehend」は日本語にも対応しています。
このアプリケーションは、Comprehendを利用するために私が作成したものです。
後ほど詳細を記載します。上記の左側の日本語の文章は、私が入力したものです。
そして「Shift+Enter」を押すことで右側に解析結果が出てきます。

今回の例だと、この文章は「肯定的(Positive)」であり、その内訳も96%(0.96592…)とかなり高いですね。つまり、「お家に帰ると、テーブルの上にとても美味しそうなイチゴのショートケーキがおいてあった」という単なる文字の集合体を、「Comprehend」は「ワクワク楽しみ!」という感じでとらえているようです!

こんな感じで単語や文章をAIによって解析し、そこに含まれる感情を分析してくれます。ちなみに、このような手法を自然言語処理(NLP)というようです。

2.機能紹介

実は今回、AWSのモバイルアプリ高速開発サービスである「Amplify」を勉強しようと思って
全く別のハンズオンをやっていました。(https://amplify-sns.workshop.aws/ja/)
ところがこれが古いせいなのか、バージョン関連なのかうまく動かないことが多々あり、
私のようにプログラム言語をよく知らない者にとって、トラブルシューティングがかなり大変でした・・。
もっとバグが少なく、初心者にもやさしいハンズオンがないかなあ~と思って探していて
見つけたのがこちら。

Workshop Studio
Discover and participate in AWS workshops and GameDays
https://catalog.workshops.aws/amplify-vue3/ja-JP

「Amplify × Vue × Vite」で作るウエブアプリです。
これは本当にわかりやすくて、手順通りにいかなかった部分はたったの1か所だけで、
あとは最後まで全部うまくいきました。最近私が何度かやっているので、動くことは保証できます(笑)

構成図としては以下になります。AWSアカウントがあることは前提ですが、大体3時間くらいあれば作れるようです。自分はゆっくりやっていたのでなんだかんだで2日くらいかかってしまったかな・・。

私の作ったサイトは以下にあります。(検証用ですので今後削除する可能性があります)

https://main.dblpobgqeewt2.amplifyapp.com/

「Create Account」からメールアドレス(フリーアドレスで大丈夫です)で登録いただければ動きを確認できます。Passwordは8文字以上です。

メアドに認証コードが届くので、それを入力します。

入力するとトップページの画面に遷移します。今は「HOME」タブの画面が表示されています。他にも「Chat」タブ,「AI」タブ,「Geo」タブがあります。それぞれを軽くご紹介しますね。

1.「Chat」タブ画面。

テキストを入力し、「Shift+Enter」で送信できます。わいわいおしゃべりして、その動きを確認できます。下の画面は私が別々のブラウザから別アカウントでログインし、一人チャットしてみた動物のぼやきです。

2.「AI」タブ画面

こちらは全部で5種類あります。順に紹介します。

2-1.Amazon Translate(リアルタイムテキスト自動翻訳)

入力した日本語をリアルタイムで英語変換します。

2-2.Amazon Rekongnition(画像認識)

アップロードした画像から画像の特長的なラベルを抽出します。その画像が何を示しているのかを判断します。例えばこれはライオンですね。動物(Animal)とか哺乳類(Mammal)という分析もされているのもわかります。

2-3.Amazon Rekongnition(テキスト認識)

アップロードした画像から画像の特長的な文字を抽出します。その画像に何が書いてあるのかを判断します。例えば下の写真だと、モニターの右下に記載されているメーカー名(MSI)を認識しています。(小さいけど・・)

2-4.Amazon Comprehend(自然言語処理・感情解析)

今回のテーマです。日常で利用する日本語テキストの中に秘められた感情を認識します。これを後ほど詳しく検証してみます。

2-5.Amazon Polly(テキスト自動読み出し機能)

これも面白いです!アクター(男性・女性)を選んで、入力した日本語を発声してくれます。面白いのでぜひやってみてください!

3.「Geo」タブ画面

こちらはただの地図アプリです。普段見慣れているGoogleMapとは少し違った色合いですね。もちろん拡大縮小もできます。

・・と、まあこんな感じで、いろんな機能があります。また、「SignOut」というボタンが右上にあることからわかる通り、全ての機能は認証された方々(アカウントを作成した方々)しか利用することができません。認証機能やこれらのすべての機能をゼロから構築するってとても大変だと思いますが、それをたった数時間で実現してしまう、「Amplify」というサービスの構築方法について、次で簡単にご紹介します。

3.構築方法(ここは少し技術要素が絡むので、難しい方は飛ばしてください)

先にも紹介しましたが、本記事は以下のリンク先の内容を進めています。

Workshop Studio
Discover and participate in AWS workshops and GameDays
https://catalog.workshops.aws/amplify-vue3/ja-JP

AWSアカウントさえあればすぐに始められます。
基本的には、ハンズオンの最初から進めていくことで問題ないですが、
いくつか気を付けるところだけ、ちょっとだけ解説します。

3-1.amplify configure(その1)

ハンズオンの「2-3. Amplify CLI」にて「amplify configure」を実施すると、amplify CLIを実行するための環境設定を行います。

この時、以下エラーが発生しました。

spawn xdg-open ENOENT

こちらは以下コマンドを実施し、再度「amplify configure」を実施することで続けることができました。

sudo yum -y install xdg-utils

3-2.amplify configure(その2)

「amplify configure」を進めていくと、AWS IAMへのリンクURLが表示されます。
amplifyが実際に機能するための(正確には、amplifyCLIにて、AWSリソースにアクセスするための権限を持った)IAMユーザを作成していく部分ですが、こちら、最後の「AccessKey」,「SeacretAccessKey」が確認できる画面は閉じないでください!(もし閉じてしまった場合は、一度そのIAMユーザを削除後、もう一度amplify configureを実施してください。)

amplify configureが完了したら、先の画面は閉じても大丈夫です。

私がこのハンズオンで躓いたのは上記3-1だけで、あとは全てその通りうまくいきました。また何度か繰り返して実施しているので、もし何か躓いた部分がありましたらご連絡いただければ!ぜひレッツチャレンジです!

4.機械よ、僕のこのキモチがわかるか?

さて、ではComprehendで実際にいろいろ文章を入力してみましょう。テキストを入力して、「Shift+Enter」(Enterだけではないので注意!)で右側に解析結果が表示されます。

以下、いくつか実際にやってみた結果を表示します。ポジティブ、ネガティブ、普通、ミックスのうち、上位1つもしくは2つの感情をパーセンテージで合わせて記載しています。「predominant」という項目に入っている値は、その文章における(機械が考える)支配的な感情です。

例1)「今日は朝4:30からお仕事。リリース作業も無事に終わって一安心。外は少し寒いけど、これから朝マックを食べに行こう。」(ポジディブ67%,普通31%)

例2)「新しい楽器を買った。妻には大して使わないのに・・とか、置き場所に困る・・とかいろいろ文句を言われたけど、趣味なんだからいいじゃないかと思う。」(普通 54%, ネガティブ 42%)

例3)テレワークってとても楽でいいなと思うけど、たまには出社もして気分転換したい。だから週に一回くらいは特に用事がなくても出社するようにしている。(ミックス 97%)

思いついたままに入れてみましたが、いかがでしたでしょうか?

例1)は予想通りって感じでした。自分の感情ともそんなに剥離していない気がします。リリースが無事に終わって安心したという気持ちと、朝マックを食べに行きたいという楽しみな思いがバランスよく解析されているなあと感じます。

例2)もよくわかってるじゃん!って感じです。新しい楽器を買うという自分的にはとても嬉しい出来事だけれど、奥様に言われたチクリの一言でポジディブ感がほぼないのは面白いです(笑)(決して私のリアルな話ではございません)

例3)に関しては、私の感情は「普通」って感じなのですが、機械はミックス(ポジディブとネガディブが混ざっている)とほぼ確定に近い割合で判断されてますね。ポジディブとネガディブがそれぞれ50%近い結果になることと、ミックスが100%近くなることの違いについてはどうなんだろう・・

他にも例えば「私は甘いものには目がない」と入れるとネガディブになっていた文章が、「私は甘いものには目がない!」と感嘆符を入れることでポジティブになったりと、感嘆符や言いまわしによって結果が変わったりもするので面白いです。

5.単語レベルで入れてみる

Comprehendは基本的に文章のなかから見えてくる感情を判断するのですが、単語単位でももちろん実施することができます。いくつか入れてみましょう。ただし1点注意があって、Comprehendは漢字だけの単語で書いてしまうと日本語ではなく中国語(簡体字中国語)としてみなされてしまいます。Sentimentの上にあるLanguageが「ja」となっているかどうかを確認しましょう。なので、ひらがなで書いていきます。

例4)「やすみ」(ポジディブ 98%)

例5)「しごと」(ネガティブ 91%)

例6)「あそび」(普通 97%)

例4)例5)はなんか機械もわかっている感じなんでしょうかね・・(笑)でも一方、「あそび」という単語に関しては、ポジティブでもネガディブでもなく、普通の感情と分析しています。

このほかにも、例えば曜日とかを入れてみましたが、特に金曜日(きんようび)だからポジティブになるとか、月曜日(げつようび)だからネガティブになるとかは見られませんでした。おそらく文章として組み立てないと十分な感情分析が難しいんでしょうね。


6.感想とか

いろんな文章や単語を入れてみて、機械がその気持ちをどう分析するのかを試してみましたが、いかがでしたでしょうか?

「AIは思ったよりボクのキモチをわかってくれる?」

それとも、、

「ボクのキモチなんて全然わかってくれていないじゃんか!」

・・どちらですかね?私はどちらかというと前者でした。

皆様もぜひ、いろいろと文章を入れてみてください!また、今回は試しませんでしたが、小説や歌詞を入れてみるのも面白いのかなと思いました。

このハンズオンは先に紹介したとおり、Chat機能や、画像・テキスト解析機能、テキスト読み上げ機能もあります。Comprehendだけでなく、Amplifyの機能についていろいろと体験できると思いますので、興味ある方は是非!

いつかは表紙のロボットのように、あなたのキモチを全てわかってくれるパートナー的存在が誕生するかもしれませんね。でも、すべて見透かされるのもそれはそれで怖いかな・・?(笑)

読んで下さってありがとうございました!

エス・エー・エス株式会社では一緒に働く仲間を募集しています
18 いいね!
18 いいね!
同じタグの記事
今週のランキング
エス・エー・エス株式会社からお誘い
この話題に共感したら、メンバーと話してみませんか?