Edited at

自然言語処理を容易に実装できるDialogflow(旧:API.AI) を使ってみる #dialogflow

More than 1 year has passed since last update.


API.AIってなに?

API.AIは自然言語で会話できるボットを作るためのツール(API)を提供するサービスです。2016年9月にAPI.AIのチームをGoogleが買収しました。


API.AIを育てると頭が良くなる!

自然言語には、分かりにくい表現や特定の環境でのみ使用する言葉が存在します。こういった微妙なニュアンスの違いや、業界用語、方言などをAPI.AIに学習させれば適切な処理を行う手助けをしてくれます。


API.AIのすごいところ


★SDKが豊富

以下のプラットフォームのSDKを提供しています。

- Android

- iOS / Watch OS / Mac OS X

- Ruby

- Webkit HTML5

- Javascript

- Node.js

- Cordova

- Unity

- .NET(WP8,W10)

- C++

- Xamarin

- Python

- PHP(Community supported)

- Java


★ノンコーディングで作成できるシンプルなコンソールを提供している


API.AIを使ってみよう

コーディングが不要なので非エンジニアでもできます。


API.AIの登録

API.AIでサインアップをしてください。


Create new agentをクリック

以下の内容で保存します

- Agent name:ラーメン

- Agent type:Public

- DESCRIPTION:これはラーメン屋のプロジェクトです

- LANGUAGE:日本語

- DEFAULT TIME ZONE:(GMT+9:00) Asia/Tokyo

Screen Shot 0029-02-23 at 14.48.12.png


Entitiesを作成する

Agentの作成が終わったらEntitiesというタブをクリックしてください。

Entities名にRamenMenuと入れます。

Entitiesは自然言語を認識するための単語をまとめておくところです。

Screen Shot 0029-02-23 at 14.53.45.png

Entryにラーメンのメニューをどんどん入れていきます。

Enter reference value...には idを

Enter sysnonym... には キーワードになる単語を入れてください。

Screen Shot 0029-02-23 at 15.04.57.png

入力が終わったら保存します。


Intentsの作成

自然言語を処理するIntentsを作成します。IntentsタブよりIntents編集画面を開きCreate Intentをクリックしてください。

Screen Shot 0029-02-23 at 15.09.18.png

Intent nameにOrderと入れます。

Action にorderといれます。

User says に「RamenMenuをお願いします。」と入力し、RamenMenuをクリックし先ほど作成したRamenMenuを選択します。

Screen Shot 0029-02-23 at 15.38.33.png

すると自動的にPARAMETER NAME ENTITY VALUEが入ったと思います。

Screen Shot 0029-02-23 at 15.40.59.png

最後にText responseに「かしこまりました。」と登録します。

Screen Shot 0029-02-23 at 15.25.39.png

入力が終わったら保存しましょう。


話しかける

右のテキストバーから、テキストもしくは音声で「味噌ラーメンをお願いします。」と入力してください。

Screen Shot 0029-02-23 at 15.27.17.png

このように「かしこまりました」と結果が帰ってくれば成功です。

Screen Shot 0029-02-23 at 15.44.05.png

Show jsonをクリックすれば詳しい情報を取得することができます。


showjson

{

"id": "",
"timestamp": "2017-02-23T06:44:00.057Z",
"lang": "ja",
"result": {
"source": "agent",
"resolvedQuery": "味噌ラーメンをお願いします",
"action": "order",
"actionIncomplete": false,
"parameters": {
"RamenMenu": "miso_ramen"
},
"contexts": [],
"metadata": {
"intentId": "",
"webhookUsed": "false",
"webhookForSlotFillingUsed": "false",
"intentName": "Order"
},
"fulfillment": {
"speech": "かしこまりました。",
"messages": [
{
"type": 0,
"speech": "かしこまりました。"
}
]
},
"score": 1
},
"status": {
"code": 200,
"errorType": "success"
},
"sessionId": ""
}

ちゃんとこの2つが取れましたね。あとはこの情報をもとに適切な処理を行えば、BOTの完成です。簡単ですね。


showjson

"action": "order"

"RamenMenu": "miso_ramen"


失敗した時/他の言葉で注文したい時

失敗した時はとにかくUser sayに入力し学習させてください。使えば使うほど頭が良くなります。またこのままだと1対1のコマンドなだけなので、どんどんユーザーが発しそうな言葉を予想してUser saysに入力します。

失敗

Screen Shot 0029-02-23 at 15.52.58.png

学習させる(保存を忘れずに!!)

Screen Shot 0029-02-23 at 15.53.35.png

再度トライ!

Screen Shot 0029-02-23 at 15.54.42.png

成功

Screen Shot 0029-02-23 at 15.54.55.png


まとめ

いかがだったでしょうか。API.AIを使用すれば簡単に自然言語処理のツールを作成することができます。API.AIを活用し、自分のサービスに自然言語を活用したインターフェイスを採用してみてはいかがでしょうか。


ネクストチャレンジ!

API.AI Python SDKを使ってみる


参考にしたリンク

API.AI Docs