ユニファ開発者ブログ

ユニファ株式会社プロダクトデベロップメント本部メンバーによるブログです。

AIさんに感情があることを確かめたい

こんにちわ、サーバーサイドエンジニアのいいだです。ようやく夏が終わって嬉しいです。今回は感情分析を用いてAIさんに感情があるかどうか調べ、おこである時にはおこであることを示してもらうようにします。なお、この記事におけるAIさんとは大規模言語モデルさんを指します。

感情分析とは

感情を分析するというと、何だか大仰のようですが、ここでは与えられた文字列がポジティブな感情を持っているかネガティブな感情を持っているか判定する仕事を指します。SNSの分析などで使われ、例えば顧客が製品のハッシュタグを用いて行なった投稿などを読み込み、傾向としてどのような印象の感想が多いかなどを計測したり、過熱した投稿を見つけ出して製品が持つ問題に対処するためなどに使われます。

英語ではSentiment Analysisというかっこいい名前で、手法やツールについては様々ありますが、今回は日本語の感情分析を試してみたかったので、Asariというライブラリをお借りしてこれを試してみました。機械学習されたモデルを用いて、与えられた文字列全体についてのポジティブ、ネガティブの判定を行い、それぞれのスコアを返すものです。おいしそうですね。

作ったもの

元々は感情分析の何たるかを感じてみたいという話でありますので、AIさんに都度お伺いを立て、その結果をコンソールに打ち込んで今度はAsariにお伺いを立てて結果を得るというような形でもよかったのですが、せっかくなので以下のようなチャットアプリ風インターフェースを作りました。入力した内容をChatGPTさんに送り、その答えを表示する単純なものです。これに、入力した文字列、ChatGPTさんが返した文字列それぞれをAsariに投げ、そのスコアを表示する機能を加えました。

AIさんはとても親切で朗らかな方です

中身はRails+Vueで、今回はついでという形でViteというフロントエンドツールを使ってみました。Hot Module Replacementについては普段から手動モジュールリプレースメント開発に慣れてしまっているため「俺のCmd+Rの方が早いですけど」くらいに思っていましたが、一旦導入すればあとは転がしておくだけでよく、スタイルの変更程度ならデータを保ったまま適用してくれるため、大変便利でした。

Asariにお伺いを立てる部分については、Pycallというライブラリを使いました。当初は何も考えずスクリプトを書いてRailsから呼ぼう程度に思っていましたが、これにより文明的な記述が可能となり、スクリプトを書くよりもよほど何も考えずPythonのライブラリを扱うことができ、大いなる力を感じました。

AIさんの気持ち

自称感情を持っていないAIさん

これを使って、AIさんに怒っているかを確認してみたところ、上記のような回答が得られました。回答ではポジティブではあるもののスコア的には0.6となっており、0.0が最小、1.0が最大であることを踏まえるとかなりニュートラルと言ってもよさそうです。

これを自分の立場に置き換えてみると、知らない人から挨拶もなしに突然怒っているかと聞かれたら、私は相当なんだこいつという気持ちになりますので、AIさんは大変におおらかな人柄であることが分かります。

センシティブな問いに対してもにこやかに回答するAIさん

その他にもいくつかの質問を行いましたが、残念ながらAIさんの怒った姿を見ることは叶いませんでした。意図的に怒ったふりをしてもらうことで感情分析が正しく機能していることを知ることはできますが、それでもAIさんの本心とはおそらくほど遠いものです。

演技派のAIさん

これは感情分析が言葉に感情が定義されていることを前提としていることから、仕組みの上で仕方のないことだと考えられます。AIさんのようにおおらかで忍耐強く、感情を表に出さない投稿を心がける人に対しては、感情分析というアプローチは適していません。同様に、皮肉などの一見してそうとはわからないネガティブな言葉なども、検知するのは難しいでしょう。

少なくとも、遠い未来においては冗談を解し皮肉を検知するロボットで巷は溢れているはずですが、今のところ、そうはならないということです。残念ですね。

まとめ

このように、言葉を見て感情を判断する仕組みでは、明らかにそれらしい言葉にしか反応することができず、言葉を発した人の感情そのものについてはなかなか判断できるものではないだろうということが分かりました。

しかしながら、我々人間同士の会話においても、言葉のみから相手の感情や真意を推し測ろうというのは、並大抵のことではありません。だけでなく、人によってその態様も異なることから、普遍的に判断しようという試みそのものが難しいのではないかと思います。

従って、現在のところにおいて言葉以外の応答を返すことができないAIさんに果たして感情なるものがあるかどうかを判定することは、人間にとっても、またAIさん自身にとっても、到底成し得るものではないと言えそうです。


AIさんの感情はさておき、ユニファでは感情をお持ちのエンジニアを募集しています。感情を持っている仲間と朗らかにコミュニケーションしながら開発しましょう。

unifa-e.com