①Dialgflowの利用用途について
ユーザーからの問いかけに対して正確に動作するためには、ユーザーからの問いかけのフレーズがどの動作をリクエストしているのかを正確に把握する必要があります。しかし、実際には同じ意図であっても微妙にフレーズは異なります。この微妙なずれをDialogflowで吸収し、正確動作可能とします。
今回、Dialogflowに設定するIntents、Entity等の詳細について下記の表をもとに設定していきます。
設定の手順としては以下の手順にて設定します。(※AgentはDialogflowの章で作成したものを利用します。)
1)Entityの設定
ボキャブラリの設定と考えましょう
2)Intentの設定(その1)
リクエストのバリエーションを設定します。
3)Intentの設定(その2)
リクエストのバリエーションで少し複雑なものを設定します。
1)Entityの設定
まず、2つのEntitiesを登録します。
Entities |
内容 |
area |
天気予報の場所を判断するキーワード(ex 青森県、岩手県等) |
action_self |
ロボットの動作に係るキーワード(ex 前進、右、左) |
Entitiesの登録方法としてはメニューから「Entities」を選択し、右上の「CREATE ENTITY」ボタンをクリックします。
Entityの画面が起動したら、一番上にEntityの名前を入力し、中段のEntityのデータを入力する欄に順番にEntityのデータを入力していきます。
本来のデータを左の「Enter refernce value」の欄に入力し、「Enter synonym」にその内容に類似した内容(同様の内容で、異なる表現)を入力していきます。入力するデータとして5.2.7.3の天気情報の章で作成した地域のファイル(yahoo_arealist.txt)のデータの数だけ入力します。
保存する場合には右上の「SAVE」ボタンで保存してください。
同様な形で「action_self」についても「終了」「前進」「右」「左」「後退」をreference valueとして登録し、synonymも合わせて順番に登録しておきます。
2)Intentsの設定(その1)
次に、実際のユーザーからの問いかけのフレーズを登録します。登録するフレーズ(Intent)としては以下の通りです。
Intent |
action and parameters |
内容 |
Action_News |
news |
ニュースの問い合わせ |
Action_Self |
action_self |
ロボットの動作の命令 |
Action_Translate |
translate |
翻訳の依頼 |
Action_Weather |
weather |
天気予報の問い合わせ |
Hello |
|
「こんにちは」などの挨拶フレーズ(前回作成済) |
Who? |
|
「誰?」「名前は?」などのフレーズ(前回作成済) |
※HelloとWho?はDialogflowの5.2.5.1の章にて行っています。
メニューから「Intents」を選択し、右上の「CREATE INTENT」をクリックします。
具体的なIntentの登録は、Entityと同様に上段に、Intentの名前を入力し、中段のデータ入力の欄に順番の「Training phrases」の欄に類似した問い合わせのフレーズ、「Action and parameters」の欄に問い合わせフレーズを識別するためのデータを入力します。Action_Newsはparametersの設定はありませんが、Actionの設定が必要です。Actionの値でプログラム上でどのプログラムを実行すればよいか判断します。
「Responses」の欄にそれぞれの返答フレーズを入力します。「Action_News」「Action_Translate」については挨拶の登録と同様に単純に入力してください。
3)Intentの設定(その2)
「Action_self」を登録します。
Intentの登録の際に一部のデータをパラメータ化します。
「Training Phrases」の欄に「終了です。」と入力します。登録されるとフレーズの「終了」の部分がハイライトされ、下段に設定されたパラメータが表示されます。これは、Entityとして登録したaction_selfのリストに「終了」という単語が登録されていることから自動的にフレーズの一部がパラメータ化されます。設定されたパラメータが複数ある場合には、複数表示されます。
パラメータの設定が不要な場合には、「×」ボタンをクリックして削除します。今回はそのままにします。このパラメータ化によって、本来であれば、動作のバリエーションとして「前進です。」「後退です。」「右です。」「左です。」のような指示内容は異なるのですが、ロボットの動作として同一のものをこの1つの登録で表現することができます。また、それぞれのEntityには類似語も登録されていることから実質的にはこの1つの登録で×「Entity」数×「類似語」数の登録を行ったことと同じとなります。これによりフレーズの登録の効率化を実現することが可能です。これに準じで「終了してください。」「終了。」等のフレーズを登録することで相当量のフレーズを効率よく登録できます。また、Actionの設定を行ってください。プログラム上でActionの値を確認し、どのプログラムを実行すればよいか識別します。
次に、パラメータを設定した際の「Responses」を設定します。基本的にはリクエストされたことを復唱するようなレスポンスが望ましいのですが、問いかけのフレーズにパラメータが入っていることから、レスポンスにもパラメータを含めておく必要があります。その際には「わかりました。$action_selfします。」と登録することにより、問いかけられたフレーズのパラメータを受けて返答することが可能です。
テストしてみます。
「Action_weather」についても同様に「area」(地域)をパラメータとして、Actionにweatherを設定します。「Responses」についても同様にパラメータを意識して「$areaの天気をお知らせします。」と登録してください。
「Action_weather」についてはこれに加えて、もう少し工夫をします。それは地域が指定されなかった場合に、Dialogflowが地域を聞きなおしてくれる機能も合わせて設定します。
フレーズの一部をパラメータとして設定すると「Action and parameters」の欄にそのパラメータの設定が反映されます。この欄で左側の「REQUIRED」のチェックボックスにチェックします。そうすると「PROMPTS」欄に「Define prompts・・・」と表示されます。
「Define prompts・・・」をクリックすると「Prompts for “area”」の画面が表示されるので、「PROMPTS」の欄に「どちらの天気がお知りになりたいですか?」と入力して「Close」ボタンをクリックします。
この後、「Traning Phrases」に、単に「天気は?」と入力します。このように地域の情報がない状態でリクエストされる場合も想定したフレーズを登録しておきます。この状態で、テストをしてみましょう。保存したあとに「天気は?」と問いかけしてください。
その後、地域情報として「青森県」と答えると
と返答してくれることになります。
※Intents、Entityの設定方法についての説明は以上となります。上段の表を参考にその他の問い合わせフレーズやエンティティのバリエーションをについて登録を行ってください。
必ず設定後は、想定したレスポンスが返ってくるかをコンソールで確認するようにしてください。
前の投稿/次の投稿/メニューページへ戻る