はじめに
ITの導入が遅れている分野の一つである"恋愛"に最新技術を導入する。
自己紹介
コンピュータ史を勉強したりする理論派だが、コードを書いたことがないただのポンコツ素人である。
やりたいこと
意中の相手とのメッセージのやり取りの中で「向こうも好意があるのではないか?」「いや、勘違いかもしれない」「客観的な意見が欲しい」と感じたことはないだろうか。
メッセージの内容や、返信ペース、時系列などの傾向から告白に適切なタイミングを科学的に判定し、"恋愛"を成就させ少子化対策の一つとしたい。
ポイント1:メッセージの感情分析をする
ポイント2:返信の間隔や、メッセージ毎の感情分析の変化を時系列を考慮して分析する
ずっと前から構想はあったものの素人の私には独力で実現できず、自然言語処理API COTOHAの存在をしったため挑戦するものである。。
【Qiita x COTOHA APIプレゼント企画】に参加して、ちょっとでも傷を残したい。
#実現に向けた予定
勉強しながら少しずつ書いていきます。誰か助けてください。
1回目:COTOHA APIを叩いて感情分析をする
2回目:感情分析結果をグラフにする
3回目:返信のペース、時系列を考慮した感情分析をする
4回目:まとめ
1回目:COTOHA APIを叩いて感情分析をする
COTOHA APIを叩いて感情分析します。
for Developers 無料登録をする
COTOHAには、Developers版とEnterprise版があります。辞書の単語数や1日に使える回数に違いはありますが、無料のDevelopers版を登録します。
リンク先で登録すれば5分程度で登録が完了します。
躓くところはありません。
チュートリアル
サンプルを動かしてみます。
アクセストークンの取得
以下のコマンドの[clientid]と[client secret]と[Access Token Publish URL]をアカウントページで表示されるものに置き換えて実行します。
$ curl -X POST -H "Content-Type:application/json" -d '{
"grantType": "client_credentials",
"clientId": "[clientid]",
"clientSecret": "[clientsecret]"
}' [Access Token Publish URL
]
成功すると下記のようにアクセストークンを取得できます。
{
"access_token": "アクセストークン",
"token_type": "bearer",
"expires_in": "残り有効期限(秒)" ,
"scope": "" ,
"issued_at": "トークン発行日時(エポックタイムからの経過ミリ秒数)"
}
感情分析APIの呼び出し
以下のコマンドの[Access Token]は上記コマンドで取得した"アクセストークン"に置き換えてください。
「最近は忙しいのでまたこちらから連絡します。すみません。」というなんとも言えないメッセージをセットします。
curl -X POST -H "Content-Type:application/json;charset=UTF-8" -H "Authorization:Bearer [Access Token]" -d '{"sentence":"最近は忙しいのでまたこちらから連絡します。すみません。"}' "https://api.ce-cotoha.com/api/dev/nlp/v1/sentiment"
レスポンス
下記のようにレスポンスがありました。
{"result":{
"sentiment":"Negative",
"score":0.4378570388741931,
"emotional_phrase":[
{"form":"すみません",
"emotion":"悲しい"},
{"form":"忙しい",
"emotion":"N"}]},
"status":0,
"message":"OK"}
レスポンスの見方
下記の要領で今回のメッセージ「最近は忙しいのでまたこちらから連絡します。すみません。」は、"悲しい"、"N"といったネガティブな返信であることが分析されました。
キー名 | データ型 | 説明 |
---|---|---|
result | object | 感情分析結果オブジェクト※1 |
status | integer | 0:OK, >0:エラー |
message | string | エラーメッセージ |
感情分析結果オブジェクト※1
キー名 | データ型 | 説明 |
---|---|---|
sentiment | string | 感情分析結果。Positive/Negative/Neutralのいずれか |
score | float | センチメントスコア |
emotional_phrase | list | 感情フレーズオブジェクトの配列※2 |
感情フレーズオブジェクトの配列※2
キー名 | データ型 | 説明 |
---|---|---|
form | string | 表記 |
emotion | float | センチメントスコア |
emotional_phrase | list | 表記に対応する感情語※3 |
表記に対応する感情語※3
感情分析ラベル |
---|
喜ぶ |
怒る |
悲しい |
不安 |
恥ずかしい |
好ましい |
嫌 |
興奮 |
安心 |
驚く |
切ない |
願望 |
P*1 |
N*2 |
PN*3 |
#おわりに
今回はCOTOHA APIを叩いて結果を得るところまで進めました。
援護、ヘルプお待ちしてますw
#今後の予定
1回目:COTOHA APIを叩いて感情分析をする ← 今回
2回目:感情分析結果をグラフにする
3回目:返信のペース、時系列を考慮した感情分析をする
4回目:まとめ