2019年6月5日水曜日

DialogFlow 超入門

概要

DialogFlow は Google が提供する AI 搭載のチャットボットを作成できるサービスです
今回は入門編ということでこのチュートリアルをやってみました
エージェント、インテント、エンティティという 3 つの重要な要素を実際に作成し動作確認します

環境

  • macOS 10.14.5
  • DialogFlow (2019/05/31 時点)

サインアップ

Google アカウントでサインアップします

利用規約に同意して登録しましょう

エージェント作成

まずはエージェントを作成します
プロジェクトのような概念になります

「Create Agent」を選択します

エージェント名を入力し DEFAULT LANGUAGE に「English -en」を選択します
Google Cloud Platform のプロジェクトを使用するようですが今回は新規でプロジェクトを作成するようにしました

インテントの作成

インテントは応答を定義する機能です
作成したエージェント配下に作成します

「Create the first one」を選択します

インテント名を設定します
そして「Training phrases」を追加します
「What is your name?」と入力しましょう

先程の質問に対する応答を Responses に追加します
「My name is Dialogflow!」と入力しましょう
そして一旦「Save」します
Save が完了したら右ペインで動作確認できます
マイクアイコンのあるフィールドに先程登録した質問を入力してみましょう
するとちゃんと登録した応答が返ってくると思います

もう一つ作成しておく

「Languages」というインテントを作成しておきましょう

Training phrases には 3 つ登録します

  • I know English
  • I speak French
  • I know how to write in German

登録すると自動的に「Action and parameters」にパラメータが登録されます
DialogFlow はインテントに登録した文章から自動的にパラメータ候補となる要素を選択し登録してくれます

Responses には「Wow! I didn't know you knew $language」と登録しましょう
先程自動的に抽出された $language を使っているのがポイントです
Responses が登録できたら Save して右ペインで動作確認してみましょう
「I know Russian」と入力すると Russian が $language に設定された状態で返ってくるのが確認できると思います

エンティティを作成する

先程自動で抽出されたパラメータを独自で定義することができます
左メニューから「Entities」を選択します

「Create the first one」を選択します

エンティティ名を「ProgrammingLanguage」にします
エンティティを登録できるので 3 つ登録します

  • JavaScript (js, ECMAScript)
  • Java
  • Python (py)

またエンティティには synonym (シノニム) を登録できるので JavaScript と Python のエンティティにそれぞれ登録しましょう

これでエンティティを Save します
再度 Languages インテントに戻りましょう
そして「Action and parameters」に先程のエンティティ用のパラメータを自動追加させます

Training phrases に以下の 2 つを追加します

  • I know javascript
  • I know how to code in Java

すると自動で $ProgrammingLanguage パラメータが追加されます

そして Responses に「$ProgrammingLanguage is cool」を新規で登録しましょう
これでインテントを Save します
右ペインで動作確認してみましょう
「I know how to code in py」と入力すると「Python is cool」と返ってくるようになります

インテントをフォローアップする

インテントには親子関係のように他のインテントを参照する機能があります
これをフォローアップと言います

まず既存の Languages インテントの Responses に「Wow! I didn't know you knew $language. How long have you known $language?」を追加します

Save できたらインテントの一覧に戻りましょう
Languages インテントをマウスオーバーすると「Add follow-up intent」と表示されます
その中から「custom」を選択しましょう

すると Languages インテントの下に「Languages - custom」というインテントが作成されます

Languages - custom インテントを選択して Training phrases に以下の 3 つを追加しましょう

  • 3 years
  • about 4 days
  • for 5 years

このインテントでは期間に関する応答のトレーニングをさせます
Action and parameters に $duration が自動で追加されることを確認します
Save して学習させたあとに右ペインで試しに「I know French」->「about 2 weeks」と連続で入力しましょう
「Wow! I didn’t know you knew $language. How long have you known French」が返ってきたら「about 2 weeks」を入力します
まだ Responses を登録していないので何も返ってきませんが VALUE がちゃんと取得できていることを確認します

Languages インテントを確認しましょう
Contexts の欄に「2」と表示されていることがわかります
これは先程追加した custom のインテントが追加されていることになります

では最後に Languages - custom の Responses に応答を登録しましょう
I can't believe you've known #languages-followup.language for $duration!
duration に関する応用のため Languages - custom インテント側に登録します
またフォローアップ元のインテントのパラメータ $language を参照するには #languages-followup.language という感じでシャープを使って参照します
これで再度「I know French」->「about 2 weeks」と応答すると今度はちゃんと登録した Responses が返ってくることが確認できます

お掃除

エージェントの設定からエージェントを削除すれば DialogFlow 側は OK です

また GCP 側のリソースも作成しているので GCP 側は新しく作成した DialogFlow 用のプロジェクトを削除してしまえば OK です

最後に

Google DialogFlow に入門してみました
インテントとエンティティをメインに試しましたが重要な要素なので本格的に使う方は必須の機能になると思います
インテントの Training pharses でいろいろな文章を学習させるとそれに応じてパラメータを自動で生成してくれて、そのパラメータを Responses で参照することができるということは理解できたかなと思います
自動で生成してくれない場合にはエンティティを使って自分で定義する感じになります

公式のチュートリアルもここまでになっています
このあとは fulfilment という機能を試したり外部のサービス (Slack や Twitter など) のサービスと連携するドキュメントに続きます

参考サイト

0 件のコメント:

コメントを投稿