LoginSignup
9
10

More than 5 years have passed since last update.

文章をお嬢様風やギャル風の話し方に変換する期待のdocomo産APIを使ってみた

Last updated at Posted at 2018-06-28

はじめに

近年チャットツールの普及、AI、機械学習の発達によって、
チャットボットが加速度的に増えてきています。

私も流行りに乗ってナレッジベースから情報を参照してくれるチャットボットを作ってみたりしました。
しかし、普通にチャットボットを作ると文面が非常にお堅い感じになってしまいます。

erhwheehj.PNG

これでは機械に話しかけているようで非常に冷たいです。
チャットボットにはもう少し人に寄り添った話し方をして欲しいものです。

おそらくチャットボットを作ったことのあるエンジニアの方ならば
以下のようにbotの口調を変えようと苦心された方が多いかと思います。
erhhjesjhehs.PNG

キャラクタ変換機能の自然対話API

こんな悩みを持った全国数千万のエンジニアを思ってか、
先日docomo Developer supportが提供している自然対話APIにキャラクタ変換機能が追加されました。
docomo Developer supportの詳細はこちら
https://dev.smt.docomo.ne.jp/?p=index

今回はチャットボットに組み込むまではせずに、実際に動かしてどのように文章が変換できるかを試してみます。
https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=natural_dialogue&p_name=api_6_usage_scenario#tag01

検証環境

requestsのライブラリが入ったpython3実行環境
docomo Developer supportのアカウント

API使用準備

APIの利用申請をしよう

下記のページから「申請する」をクリック
ログインしてない場合は先にログインしてください
https://dev.smt.docomo.ne.jp/?p=docs.api.page&api_name=natural_dialogue&p_name=api_usage_scenario
ahahahhe.PNG

「新規API利用申請へ」をクリック
gfjsrjrjawsj5.PNG

必須項目を入力してください
haejhej.PNG

自然対話:キャラクタ変換をチェック
ahheahahe.PNG

確認をして完了です
dhaehah.PNG

登録アプリケーション一覧に先程作成したものが増えているはずです。
aehesheah.PNG

これでAPIの利用申請は完了です

ユーザ登録をする

次にpython3の実行できる環境に入ってください。
そして下記のpythonファイルを作成してください
KEY=の部分は変更してください。

[centos@108-72-slackbot ~]$ cat chara_api.py

import requests
import json
import types

#APIKeyは先程のアプリケーション情報に書いてある自分のAPIKEYを入れてください
KEY = 'hogehogeAPIKRYhogehoge'

#エンドポイント指定
endpoint = 'https://api.apigw.smt.docomo.ne.jp/naturalCharaConv/v1/registration?APIKEY=REGISTER_KEY'
url = endpoint.replace('REGISTER_KEY', KEY)
# appKindも利用シーンに合わせて指定ください
payload = {'botId': "CharaConv", 'appKind': "Server"}
headers = {'Content-type': 'application/json'}
r = requests.post(url, data=json.dumps(payload), headers=headers)
print(r.json())

作成したファイルを実行してください。
appIdが返ってくるはずです。
これは後ほど使うのでメモっていてください。

[centos@108-72-slackbot ~]$ python3.6 chara_api.py
{'appId': 'hoge-hoge-hoge-hogehoge'}

APIを叩いてみる

あとはAPIを叩くだけです。
下記のファイルを作成してください。
KEY=とappID:は変更してください

[centos@108-72-slackbot ~]$ cat chara_api.py
import requests
import json
import types

#APIKeyは先程のアプリケーション情報に書いてある自分のAPIKEYを入れてください
KEY = 'hogehogeAPIKRYhogehoge'

#エンドポイント指定
#appIdには先程取得した値を入れてください
endpoint = 'https://api.apigw.smt.docomo.ne.jp/naturalCharaConv/v1/dialogue?APIKEY=REGISTER_KEY'
txt = "Qiitaブログに投稿しました。みんなに見てもらえると嬉しいな"
url = endpoint.replace('REGISTER_KEY', KEY)
payload = {'language': "ja-JP", 'botId': "CharaConv", 'appId': "hoge-hoge-hoge-hogehoge", 'voiceText': txt, 'clientData': {'option': {'t': "ojo"}}, "appRecvTime": "2018-06-01 00:00:00", "appSendTime": "2018-06-01 00:00:00" }
headers = {'Content-type': 'application/json'}
r = requests.post(url, data=json.dumps(payload), headers=headers)
print(r.json())

そして実行します!今回はお嬢様口調を指定してみました!

[centos@108-72-slackbot ~]$ python3.6 chara_api.py
{'systemText': {'expression': 'Qiitaブログに投稿しましたのよ。みんなに見てもらえると嬉しいですわ', 'utterance': 'Qiitaブログに投稿しましたのよ。みんなに見てもらえると嬉しいですわ'}, 'dialogStatus': {'commandId': '00000000000', 'task': {'taskId': '00000000'}, 'loopCount': '0'}, 'serverSendTime': '2018-06-28 17:53:26'}

"Qiitaブログに投稿しました。みんなに見てもらえると嬉しいな"

'Qiitaブログに投稿しましたのよ。みんなに見てもらえると嬉しいですわ'
に変わりましたね。いい感じです。
入力してから思いましたがQiitaって多分ブログじゃないですよね。

他の口調も試してみる

コード内のojoを他に変えると口調が変わります。

'clientData': {'option': {'t': "ojo"}}

種類は執筆時点で下記になります

パラメータ 口調
指定なし 変換なし
ehime1 愛媛県今治市弁
ehime2 愛媛県四国中央市弁
ehime3 愛媛県松山市弁
kansai 関西弁
hakata 博多弁
fukushima 福島弁
mie 三重弁
maiko 舞妓風
ojo お嬢様風
bushi 武士風
gyaru ギャル風
burikko ぶりっ子風
akachan 赤ちゃん風

ギャルやぶりっ子を試してみましょう

[centos@108-72-slackbot ~]$ python3.6 chara_api.py
{'systemText': {'expression': 'Qiitaブログに投稿したんだけどぉ。みんなに見てもらえると嬉しいしぃー', 'utterance': 'Qiitaブログに投稿したんだけどぉ。みんなに見てもらえると嬉しいしぃー'}, 'dialogStatus': {'commandId': '00000000000', 'task': {'taskId': '00000000'}, 'loopCount': '0'}, 'serverSendTime': '2018-06-28 17:56:03'}

[centos@108-72-slackbot ~]$ vi chara_api.py
[centos@108-72-slackbot ~]$ python3.6 chara_api.py
{'systemText': {'expression': 'Qiitaブログに投稿したのだ。みんなに見てもらえると嬉しいんだにゃん', 'utterance': 'Qiitaブログに投稿したのだ。みんなに見てもらえると嬉しいんだにゃん'}, 'dialogStatus': {'commandId': '00000000000', 'task': {'taskId': '00000000'}, 'loopCount': '0'}, 'serverSendTime': '2018-06-28 18:00:56'}

感想

文章を食わせるだけでいい感じに変えてくれましたね。
すでにあるチャットボットやTwitterbotに挟むと面白そうです!
私の作っているチャットボットにもいずれ組み込んでみたいものですね。

API利用にあたって

開発や検証目的以上で本APIを使う場合は必ず下記の注意事項を確認の上で利用ください。

9
10
0

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
9
10