【恋愛 x AI】LINEやメールの返信から"恋に発展するか"判定する方法

# はじめに
ITの導入が遅れている分野の一つである"恋愛"に最新技術を導入する。

# 自己紹介
コンピュータ史を勉強したりする理論派だが、コードを書いたことがないただのポンコツ素人である。

# やりたいこと
意中の相手とのメッセージのやり取りの中で「向こうも好意があるのではないか？」「いや、勘違いかもしれない」「客観的な意見が欲しい」と感じたことはないだろうか。
メッセージの内容や、返信ペース、時系列などの傾向から告白に適切なタイミングを科学的に判定し、"恋愛"を成就させ少子化対策の一つとしたい。

　ポイント１：メッセージの感情分析をする
　ポイント２：返信の間隔や、メッセージ毎の感情分析の変化を時系列を考慮して分析する

ずっと前から構想はあったものの素人の私には独力で実現できず、自然言語処理API [COTOHA](https://api.ce-cotoha.com/contents/)の存在をしったため挑戦するものである。。

~~【Qiita x COTOHA APIプレゼント企画】に参加して、ちょっとでも傷を残したい。~~

#実現に向けた予定
勉強しながら少しずつ書いていきます。誰か助けてください。

　１回目：ＣＯＴＯＨＡ APIを叩いて感情分析をする
　２回目：感情分析結果をグラフにする
　３回目：返信のペース、時系列を考慮した感情分析をする
　４回目：まとめ

# １回目：ＣＯＴＯＨＡ APIを叩いて感情分析をする
COTOHA APIを叩いて感情分析します。

## for Developers 無料登録をする

COTOHAには、Developers版とEnterprise版があります。辞書の単語数や１日に使える回数に違いはありますが、無料のDevelopers版を登録します。

リンク先で登録すれば5分程度で登録が完了します。
躓くところはありません。

[for Developers 無料登録](https://api.ce-cotoha.com/contents/developers/index.html)

## チュートリアル
サンプルを動かしてみます。

### アクセストークンの取得

以下のコマンドの[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

#今後の予定

　１回目：ＣＯＴＯＨＡ APIを叩いて感情分析をする　← 今回
　２回目：感情分析結果をグラフにする
　３回目：返信のペース、時系列を考慮した感情分析をする
　４回目：まとめ