見出し画像

COTOHA APIを使って人の気持ちを考える

文系は作者の気持ち考えてろ」ってネットスラング、ご存知ですか?

よくよく見ると結構秀逸ですよね。
実際のところ、作者の気持ちを答える問題なんてほとんど出てこないですし、文字読むだけが文系じゃない気はするんですが、こう、うまく言い返せない何かを感じます。

初めてこのネットスラングを目にした時、「理系は何を使って作者の気持ち考えるんだろ」とか思ったりなどしましたが、いい答えが見つからず。
このまま老いさらばえていくのか、と思っていたところ、良きものを見つけました。

それがCOTOHAです。

COTOHA?

COTOHA® APIは、NTTグループの40年以上にわたる研究成果である日本語辞書・自然言語機能、およびCOTOHAの提供を通じて独自開発した機能をベースとした「テキスト解析」「対話」「音声認識サポート」に活用できるAPIサービスです。

Communication Engine "COTOHA® API"

公式はこちら
NTTCom社が提供している自然言語処理APIです。

ということで今回は理系(?)の技術である自然言語処理を使用し、(使い方が合ってる合ってないとかはさておき)人の気持ちを考えていきます。

具体的には、平成30年度のセンター試験(追試験)の大問2の設問3を解いてみます。使用作品は中野孝次著『鳥屋の日々』、考えるのは「ぼく」の心情です。
(設問に関する詳細はリンク先をご覧ください)

どうやって考えるか


お誂え向きに「感情分析 V1」というものがあったので、これを利用してみます。

リファレンスを見ると、

リクエスト(送る値)は解析したい文

レスポンス(返ってくる値)は
感情分析結果(Positive/Negative/Neutral)
センチメントスコア(数値)
感情フレーズオブジェクト(表記と感情語)となっています。

設問の対象となっている、傍線部B「ぼくは〜」の感情と、選択肢の感情が近しいものを回答としたいので、解析したい文には傍線部Bの一文と選択肢それぞれの文を入れ、返ってきた値の中の感情分析結果センチメントスコアを中心にみていきます。

みなさんも読みながらどれが正解か考えてみてください。

すごく当たり前のように使ってますがセンチメントスコアってなんなんでしょうね。
よくわからなかったので、センチメンタルさってことにします。

APIの結果

傍線部B

「ぼくは本当は父が好きだったんだと思う。」

感情分析結果:Positive
センチメントスコア:0.546842939814874

真ん中くらいのセンチメンタルさのポジティブですね。ナチュラルとは何が違うんだろう。
とりあえず、これに近いものを回答にします。

{
    "result": {
       "sentiment": "Positive",
       "score": 0.546842939814874,
       "emotional_phrase": [
           {
               "form": "好きだった",
               "emotion": "P"
           }
       ]
   }
}

選択肢 1

「暴力的で融通が利かない父に対し不満な気持ちを抱いてきた。しかし、その背後に打ち消しきれない好意があったことにも気づいており、ようやくその感情に素直になることができている。」

感情分析結果:Negative
センチメントスコア:0.9819674238721265

ネガティブですね、しかも超センチメンタル。思春期かな。
感情もセンチメントスコアも離れているので、他の選択肢があまりにもかけ離れていない限りは回答にはならないと思います。

{
   "result": {
       "sentiment": "Negative",
       "score": 0.9819674238721265,
       "emotional_phrase": [
           {
               "form": "好意", "emotion": "好ましい"
           },
           {
               "form": "不満な", "emotion": "N"
           },
           {
               "form": "暴力的で", "emotion": "N"
           },
           {
               "form": "融通が利かない", "emotion": "N"
           },
           {
               "form": "気づいており", "emotion": "P"
           },
           {
               "form": "素直", "emotion": "P"
           }
       ]
   }
}

選択肢 2

「ひそかに自慢に思っていた職人気質の父と本当は理解し合いたいと思ってきた。しかし、自分の希望に耳を貸さなかったことが忘れられず、今でも父への愛情を手放しに認められずにいる。」

感情分析結果:Positive
センチメントスコア:0.8744936678701536

ポジティブかつなかなかにセンチメンタル。手放しの愛情というワードがなかなかニクいですね。
感情は合ってますがセンチメントスコアが高め。

{
   "result": {
       "sentiment": "Positive",
       "score": 0.8744936678701536,
       "emotional_phrase": [
           {
               "form": "愛情", "emotion": "好ましい"
           },
           {
               "form": "ひそかに自慢", "emotion": "PN"
           },
           {
               "form": "職人気質", "emotion": "PN"
           },
           {
               "form": "理解し合いたい", "emotion": "P"
           },
           {
               "form": "希望", "emotion": "P"
           },
           {
               "form": "忘れられず", "emotion": "PN"
           },
           {
               "form": "手放しに認められずに", "emotion": "P"
           }
       ]
   }
}

選択肢 3

「先生の話も聞かず自分の進学を認めなかった父をいまだに許容できずにいた。しかし、少年時より職人としての父へのあこがれもあり、今もなお捨てきれない親愛の情をもてあましている。」

感情分析結果:Positive
センチメントスコア:0.48648289810584566

ポジティブかつ真ん中くらいのセンチメンタル、傍線部Bとほぼ同じ。
他の回答にもよりますが候補としては良さそうです。

{
   "result": {
       "sentiment": "Positive",
       "score": 0.48648289810584566,
       "emotional_phrase": [
           {
               "form": "あこがれ", "emotion": "P"
           },
           {
               "form": "親愛", "emotion": "好ましい"
           },
           {
               "form": "情", "emotion": "悲しい"
           },
           {
               "form": "なお捨てきれない", "emotion": "P"
           },
           {
               "form": "もてあましている", "emotion": "N"
           }
       ]
   }
}

選択肢 4

「自分の希望を理解しようともしない父に強い反発心を抱いてきた。しかし、その底には職人気質の父を誇りに思う心情が潜んでおり、そのことをためらいながらもあらためて確認している。」

感情分析結果:Positive
センチメントスコア:0.5284707748863875

ポジティブかつ真ん中くらいのセンチメンタル。これも傍線部Bとほぼ同じ結果に。
3よりも傍線部Bと同じくらいのセンチメンタルなので候補としてはトップです。

{
   "result": {
       "sentiment": "Positive",
       "score": 0.5284707748863875,
       "emotional_phrase": [
           {
               "form": "ためらいながらも", "emotion": "N"
           },
           {
               "form": "誇り", "emotion": "P"
           },
           {
               "form": "希望を理解しよう", "emotion": "P"
           },
           {
               "form": "強い", "emotion": "PN"
           },
           {
               "form": "職人気質", "emotion": "PN"
           }
       ]
   }
}

選択肢 5

「進学についての意見の相違によって父との対立は修復できないものになったと感じてきた。しかし、無邪気に愛情を示していた頃を思い出し、もう和解すべきだと自分に言い聞かせている。」

感情分析結果:Positive
センチメントスコア:0.23139770015661829

ポジティブではあるがセンチメンタルじゃない。スコアが離れているので回答候補には上がらないですかね。
ここまできてようやく「センチメンタル」の意味を調べたんですが、「感傷的」という意味のようです。

{
   "result": {
       "sentiment": "Positive",
       "score": 0.23139770015661829,
       "emotional_phrase": [
           {
               "form": "愛情", "emotion": "好ましい"
           },
           {
               "form": "無邪気に", "emotion": "P"
           }
       ]
   }
}

結果発表

傍線部B
感情分析結果:Positive
センチメントスコア:0.546842939814874


選択肢 1
感情分析結果:Negative
センチメントスコア:0.9819674238721265

選択肢 2
感情分析結果:Positive
センチメントスコア:0.8744936678701536

選択肢 3
感情分析結果:Positive
センチメントスコア:0.48648289810584566

選択肢 4
感情分析結果:Positive
センチメントスコア:0.5284707748863875

選択肢 5
感情分析結果:Positive
センチメントスコア:0.23139770015661829


となったので、僅差ですが、「選択肢 4」を回答とします。


回答はこちらから参照できますが、なんと正解していました。
COTOHAすげえ。

COTOHAは人の感情が理解できる?

できました。

おわりに

ということでCOTOHAで人の気持ち・感情を考えてみました。
自然言語処理ってまだ発展途上なイメージがあって、そんなに期待していなかったんですが、COTOHA、結構すごかったです。
はやくスマートグラスとかに導入して、「この人怒ってるよ」とか教えて欲しいです。
むしろ先読みで「この人は今こう言って欲しい」とかわかったら強そう。きんみらい。

また面白そうなものがあったら触ってみようと思います、が、そろそろ物理のものを、、、作りたい。
自宅の机上にM5StackとNFCタグとキーボードが積まれています。。。

散財します。