Dialogflow 1 概要

1Reading Time

DIALOGFLOWとは?

Dialogflowとは、ホームページのチャットボットや、ツイッター、Google Assistant上で動く、AIを使った言語認識アプリを提供するツールです。

システムはGoogleがAPIとして提供されており、プログラムを書くことなくウェブから設定していくことでアプリを構築可能です。手軽に言語処理の人工知能を体験できます。

Dialogflow公式サイト

Dialogflowドキュメント

用語解説

ダイアログフローで使われる用語についてまず説明していきたいと思います。

INTENTS(インテント)

Dialogflowでは、会話の基本的な流れを次の3つのステップに定義しています。

  1. ユーザーからの入力
  2. その入力をDialogflowエージェントが解析
  3. エージェントがユーザーに返す返答

インテントとは、ユーザーの入力から抽出する内容、および応答方法の定義(会話)です。簡単に言うと会話の最小パターンと理解しています。

Dialogflowでは、このインテントをより多く設定することで、自然な会話を実現します。

Intensの構成要素

  • Training phrases(トレーニングフレーズ)…トレーニングフレーズとは、ユーザがある意図を伝えるのに発言する可能性がある会話の集合です。例えば「ピザがほしい」であれば「ピザが食べたい」「ピザを注文」などです。
    10~20フレーズの入力を推奨していますが、可能な限り全て入力する必要はなく、AIが理解し会話を展開することができます。
  • Action and parameters(アクションとパラメーター)…ユーザの会話から関連する情報(パラメータ)をどのように抽出するかを定義します。パラメーターには、開発者が設定したもののほか、日付、時刻、名前、場所などが含まれます。
  • Responses(レスポンス)…ユーザーに返す応答です。レスポンスには2種類あります。一つはあらかじめ定義された静的な応答を使用する方法と、もう一つはWebhookから生成された応答を返す方法です。どちらの場合も、抽出されたパラメータをレスポンスに使用できます。

ENTITIES(エンティティ)

エンティティとは、平たく言えばユーザーのフレーズから抽出したいキーワード(語彙・用語でしょうか。Dialogflowには標準で、日付や場所、時刻などのシステムエンティティを持っています。しかし、固有名詞や自社のサービスなどは開発者エンティティ(developer entities)として登録する必要があります。

エンティティ

例えば「グローバルリンクのサービス」は、エンティティを設定してあげないと返答を作成することが出来ません。

Allow automated expansion(自動拡張を許可)

自動拡張を許可することにより、エージェントはエンティティに明示的にリストされていない値を認識することができます。つまり開発者エンティティとして設定されていない語彙を、エージェントがユーザーのクエリがインテントで提供されているトレーニングフレーズと類似していると判断し、自動的に抽出します。

もちろんその判断が間違う可能性がありますが、前項のレーニングフレーズで提供されている例に近いほど、自動拡張機能の結果が良好になります。これは可能な限り多くの例を提供する別の理由です。

エンティティ

CONTEXTS(コンテキスト)

コンテキストはオプション項目なので、設定しなくても機能します。コンテキストとは、コンテキストを指定すると、特定状況にあるときにしか反応しないIntentを追加することができ、会話の流れを制御できます。

コンテキストは、ユーザーの現在の要求の状態を表し、エージェントがあるインテントから別のインテントへ情報をつなぎます。入力コンテキストと出力コンテキストを組み合わせて会話を組み立てます。