🌥️

DialogFlow CXで天気予報チャットボットをつくる: Entity編

2024/03/20に公開

🌟 はじめに

おぐまです。

勉強も兼ねてDialogFlow CXを使用した天気予報チャットボットを作ります!

それぞれ設定項目を分割して説明していて、前回は Intentの作成 について説明しました。

  1. Intentの作成
  2. Entityの作成 👉 ココ!
  3. Flow,Pagesの作成
  4. ??? ※ここで作成したシンプルチャットボットを改造(応用)する

今回は2番の Entityの作成 について説明します。

👷‍♂️ 事前準備

  • Google Cloud Platform アカウント
  • DialogFlow CX Agent

https://zenn.dev/ap_com/articles/dialogflowcx-basic-guide

📖 ステップ

👉 Entityの理解

Entity は、ユーザーの発言から具体的な情報を抽出しその情報をもとに適切なアクションを決定するためのものです。
Entityを上手く使うことでチャットボットはユーザーの意図をより正確に解釈できるようになり、より適切な回答をしてくれるようになります。

ここでIntentとの違いをさらっとまとめておきます(自分もこんがらがったので)

EntityとIntentの主な違い:

  • Entity:具体的な情報やデータを識別し抽出する役割
  • Intent:ユーザーの発言や質問から意図を識別する役割

📺 Entity画面の機能

Entity_Top

機能・要素 説明
Entities 既存のEntityのリストを表示し、新しいEntityの追加や編集を行います
Create 新しいEntityを作成するためのボタンです
Import Entityの定義を外部ファイルやCloud Storageに保存されているファイルからインポートする機能です

📺 Entity作成画面の主な要素

Entity_Create

要素 説明
Entity type 情報のタイプを定義します。時間や日付などの共通情報タイプにはシステムEntityがありますが、独自のものを作成することもできます。
Display name ディスプレイ名です。文字、数字、アンダースコア、ダッシュを含むことができ、文字で始まる必要があります。
Entities only (no synonyms) シノニムを持たないEntityのみを指定します。
Regexp entities 正規表現に基づいてEntityを指定します。
Entities Entityを追加するには、参照値とオプショナルなシノニムを入力します。例: Entityタイプが野菜の場合、参照値として「ネギ」、オプショナルなシノニムとして「青ネギ」があります。
Search Entityを検索します。
Advanced settings 自動拡張、ファジーマッチング、ログでのマスキングなどの高度な設定。
Automatic expansion Entityがユーザーの入力に自動的に適応するかどうかを指定します。
Fuzzy matching 入力がEntityに完全に一致しない場合でも、類似性に基づいてマッチングを試みます。
Redact in log ログに記録されるときにEntityの値をマスキングします。
Entity exclusions マッチングされるべきではない例外フレーズのコレクションです。例: サイズEntityタイプに「巨大」(形容詞)がある場合、「巨人」(名詞)を除外として追加することを検討します。

👉 Entityの作成

  1. 表示名の設定:

    • Display name: わかりやすい名前を設定します。ジョジョを扱うエンティティであれば「ジョースター家」とする。
  2. エンティティの追加:

    • Entities: 「ジョースター家」エンティティの場合、参照値として具体的な名前を追加します。
      • Entity: ジョジョ
      • Synonyms: ジョナサンジョースター,ジョセフジョースター,空条承太郎,東方仗助,ジョルノジョバァーナ,空条徐倫,ジョニィジョースター,東方定助,ジョディオジョースター
  3. オプション設定:

    • Automatically expand: 新しいジョジョに対応できるようにこのオプションを有効にする。
    • Fuzzy matching: 入力に多少の誤りがあってもマッチングさせたい場合は、このオプションを有効にします。
    • Entity exclusions: マッチングされるべきではない例外フレーズ設定する。
  4. エンティティの保存:

    • 設定が完了したら、「Save」ボタンをクリックしてエンティティを保存します。
  5. エンティティのインポート (オプション):

    • 大量の地域名などを一括で追加したい場合は、「Import」機能を利用して、エンティティのリストが記載されたファイルをインポートします。

💡 補足 : EntityとIntentの連携について

DialogFlow CXでのチャットボットでは EntityIntent は連携して動作します。具体的にこれらがどう連携するかを確認します。

Step 1: ユーザーの入力受付

まず、ユーザーがチャットボットに質問や命令を入力します。
「今日の東京の天気は?」という質問があったとします。

Step 2: Intentの識別

DialogFlow CXはユーザーの入力から「天気を知りたい」という意図(Intent)をユーザーの言葉が含むキーワードやフレーズ、文脈などを分析してどのIntentにマッチするかを判断します。

Step 3: Entityの抽出

次に、DialogFlow CXは入力から具体的な情報(Entity)を抽出します。
今回の例では「今日」が日付Entity(@sys.date-time)、そして「東京」が地域名Entity(@sys.location)として識別されます。

Step 4: 応答の生成

Intentと抽出されたEntityの情報を基に、DialogFlow CXが適切な応答を生成します。

🎉 まとめ

この記事では、DialogFlow CXを使用して天気予報チャットボットを作成する際のEntityの設定方法について詳しく解説しました。
IntentEntityのつながりも説明したのでイメージできたでしょうか?

次のステップでは、これまでに作成したIntentと今回作成したEntityを使って、ユーザーに応じたフローとページを設計する方法について詳しく説明します!

💡 参考

https://cloud.google.com/dialogflow/cx/docs/concept/entity?hl=ja

GitHubで編集を提案

Discussion