Help us understand the problem. What is going on with this article?

自然言語処理を容易に実装できる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

flatfisher
釣りが好きです
mixi
全ての人に心地よいつながりを
http://mixi.co.jp
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした