LoginSignup
11
7

More than 5 years have passed since last update.

【COTOHA API】NTTグループの40年にわたる研究成果を使って、西野カナさんの年齢を予測する【Python】

Last updated at Posted at 2018-12-12

こんにちは。この記事は国産Web API Advent Calendar 2018の10日目の記事です。

1.やりたいこと

NTTコミュニケーションズが提供するCOTOHA APIの中からユーザ属性推定API(ベータ版)を利用して、西野カナさんの歌詞から年齢を予測します。
ユーザ属性推定API(ベータ版)は入力として日本語で記述された複数の文からなるテキストを受け取り、年代、性別、趣味、職業などの人物に関する属性を推定・出力するそうです。
https://api.ce-cotoha.com/contents/reference.html

image.png

2. なぜ西野カナさんなのか

【マーケティング】なぜ西野カナはヒットする曲が作れるのかの記事でも紹介されたように、西野カナさんは徹底的にマーケティングを研究されています。

以下の記事でも色々実験されているように、自然言語処理の素材として非常に興味深いです。

3. APIの利用準備

公式の記事を参考にさせていただきました。

4.実行コード

main.py
import requests
import json

#TOKEN(トークン)をゲットする
headers = {
    'Content-Type': 'application/json',
    'charset': 'UTF-8',
}
data = {
"grantType":"client_credentials",
"clientId":"自分で取得してね",
"clientSecret":"自分で取得してね"
}
data = json.dumps(data).encode()
response = requests.post('https://api.ce-cotoha.com/v1/oauth/accesstokens', headers=headers, data=data)
access_token = response.json()['access_token']

#年齢を分析する
URL = "https://api.ce-cotoha.com/api/dev/nlp/beta/user_attribute"
headers = {
    'Content-Type': 'application/json',
    'charset': 'UTF-8',
    'Authorization': 'Bearer ' + access_token
}
data = {
"document":"""会いたくて 会いたくて 震える君想うほど遠く感じてもう一度聞かせて嘘でもあの日のように"好きだよ"って… 今日は記念日 本当だったら二人過ごしていたかなきっと君は全部忘れてあの子と笑いあってるの? ずっと私だけにくれてた言葉も優しさも大好きだった""",
"type": "default"
}

data = json.dumps(data).encode()
r = requests.post(URL, headers=headers, data=data)
data = r.json()
print(data)

※改行を含む文字列はトリプルクォート ''' または """ を使って囲んであげましょう。 

参考 Pythonで改行を含む文字列の出力、連結、分割、削除、置換

5.実行結果

まずは「会いたくて 会いたくて」を分析した結果から。

result.json
{'result': {
'age': '30-39歳',
'civilstatus': '未婚', 
'earnings': '-1M',
'gender': '女性',
'hobby': ['GOURMET', 'INTERNET', 'MOVIE', 'MUSIC', 'SHOPPING'],
'location': '関東',
'moving': ['WALKING'],
'occupation': '会社員'
}, 'status': 0, 'message': 'OK'}

 関東に住む未婚女性、30-39歳なようです。
所属レコード会社はソニー・ミュージックレーベルズなので、会社員というのも正しいのだと思います。笑 まあまあWikipediaの情報と近いですね。

西野カナ 出典: フリー百科事典『ウィキペディア(Wikipedia)』

続けて「トリセツ」を用いて分析してみます。

data.json
{
"document":"""この度はこんな私を選んでくれて
どうもありがとう
ご使用の前にこの取り扱い説明書をよく読んで
ずっと正しく扱ってね
一点物につき返品交換は受け付けません
ご了承ください

急に不機嫌になることがあります
わけを聞いても答えないくせにほっとくと怒ります
いつもごめんね
でもそんな時は懲りずにとことん付き合ってあげましょう

定期的に褒めると長持ちします
爪が綺麗とか 小さな変化にも気づいてあげましょう
ちゃんと見ていて
でも 太ったとか余計なことは気づかなくていいからね""",
"type": "default"
}

実行結果を見てみましょう。

result.json
{'result': {
'age': '20-29歳', 
'civilstatus': '既婚', 
'earnings': '-1M', 
'gender': '女性', 
'hobby': ['COOKING', 'GOURMET', 'STUDY'], 'location': '近畿'}, 
'status': 0, 
'message': 'OK'
}

今度は、20-29歳に変わりました。
この曲は「会いたくて会いたくて」よりも若い世代をターゲットとしているので、
より若い世代に使用される頻度の高い表現が多いのかも知れません。

ベータ版ということもあり、今後のアップデートに期待ですね!

おまけ

人に教えること、勉強することが好きです。色々と学んだことを記事で共有していきたいと思います!

-【COTOHA API】NTTグループの40年にわたる研究成果を使って、西野カナさんの年齢を予測する【Python】
-【Pythonたったの12行】リクルート人工知能APIに肉のインスタ映え診断をしてもらう

11
7
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
7