LoginSignup
85
80

More than 5 years have passed since last update.

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

Last updated at Posted at 2017-02-23

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

85
80
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
85
80