概要
DialogFlow は Google が提供する AI 搭載のチャットボットを作成できるサービスです
今回は入門編ということでこのチュートリアルをやってみました
エージェント、インテント、エンティティという 3 つの重要な要素を実際に作成し動作確認します
環境
- macOS 10.14.5
- DialogFlow (2019/05/31 時点)
サインアップ
エージェント作成
まずはエージェントを作成します
プロジェクトのような概念になります
エージェント名を入力し DEFAULT LANGUAGE に「English -en」を選択します
Google Cloud Platform のプロジェクトを使用するようですが今回は新規でプロジェクトを作成するようにしました
インテントの作成
インテントは応答を定義する機能です
作成したエージェント配下に作成します
インテント名を設定します
そして「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」を選択します
エンティティ名を「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 件のコメント:
コメントを投稿