エンティティ

Prev Next

Classic/VPC環境で利用できます。

エンティティとは、人名、機関名、場所、日付、商品名などの単語が登録された辞書を意味します。チャットボットは、ユーザーの発話の中で分析したエンティティを、意図を把握してスロットを抽出するのに活用します。同じ意味を持つ単語をエンティティで定義しておくと、ユーザーの発話を把握するのに役立ちます。エンティティを作成、変更、削除した後、それをチャットボットサービスに反映するには、ビルドまたは変更された設定の適用を完了する必要があります。

  • エンティティの種類
    • ドメインエンティティ: 特定のドメインでのみよく使われるエンティティ。辞書ベースの辞書型エンティティと正規表現パターンベースのパターン型エンティティタイプに分けられる
    • システムエンティティ: すべてのドメインで共通して使用可能なエンティティ。ビルトインとして提供される
    • APIエンティティ: チャットボットビルダ内部に直接エンティティを定義する代わりに、外部 DBに保存されているエンティティデータを活用するエンティティ

ドメインエンティティ作成

ドメインエンティティは、そのドメインで使用されると想定される主な単語の集まりです。例えば、コーヒーの注文に関連したチャットボットを作成するとします。その場合、コーヒーの注文に必要なコーヒーの種類、コーヒーのサイズなどをドメインエンティティに登録して活用することができます。
ドメインエンティティを登録する方法は、次の通りです。

  1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > AI Services > CLOVA Chatbot > Domainメニューを順にクリックします。
  2. 希望するドメインの [ビルダを実行する] ボタンをクリックしてチャットボットビルダを実行します。
  3. チャットボットビルダでエンティティ > [ドメインエンティティ] タブをクリックします。
  4. [エンティティ作成] ボタンをクリックします。
項目 説明
エンティティ名 エンティティの名前を入力
エンティティタイプ エンティティタイプを選択
  • 辞書型: 辞書ベースのエンティティタイプ。辞書型エンティティデータはモデル学習に用いられる。ドメインエンティティ内では、重複する単語を代表語または類似語としては登録不可
  • パターン型: 正規表現パターンベースのエンティティタイプ。パターン型エンティティはモデル学習に用いられない
機密情報のセキュリティ設定 エンティティに含まれる情報の機密情報有無を設定。機密情報が含まれる特殊な場合を除き、基本的には一般情報に設定
  • 一般情報: エンティティに含まれる情報が機密情報ではない一般的な情報
  • 一般機密情報: ユーザーの氏名、電話番号、住所といった情報。ユーザーが一般機密情報を含めて入力した場合、チャットボットビルダ内の会話記録などの画面で当該機密情報はマスキングされ、チャットボット作成者側には表示されない。一般機密情報をチャットボットの回答に挿入して使用する場合、チャットボットがユーザーの機密情報を再発話するおそれがあるため、ロギング除外オプションを有効にしてチャットボットの回答もマスキングすることを推奨
  • 特殊機密情報: ユーザーの固有識別情報(住民登録番号、運転免許番号)、パスワードといった特殊な機密情報。ユーザーが特殊機密情報を含めて入力した場合、チャットボットビルダ内の会話記録などの画面で当該機密情報はマスキングされ、チャットボット作成者側には表示されない。また、チャットボットエンジン内のログにもマスキングするため、特殊なセキュリティ処理が必要な場合は特殊機密情報に設定することを推奨。ただし、エンジンログにも情報を残さないため、障害発生時にデバッグ支援が困難である。そのため、特殊機密情報をチャットボットの回答に挿入して使用することを制限
エンティティ登録 エンティティタイプとして辞書型エンティティを選択した場合
  • 代表語: エンティティに登録する代表語を入力
  • 類義語: 様々な表現の類義語を入力。複数の類義語を入力する場合、コンマ(,)で区切る
    エンティティタイプとしてパターン型エンティティを選択した場合
  • 正規表現を活用してパターンとしてエンティティを分析
  • ただし、パターン型エンティティには、辞典型エンティティ、システムエンティティ、システム変数、ドメイン変数のみ入力可能
  • パターンの定義については正規表現入力ガイドを参照
  1. エンティティ情報の入力が完了したら、 [保存] ボタンをクリックします。
  • 例) パターン型エンティティ
    chatbot-chatbot-3-2_ex01_ko

  • 例) 辞書型エンティティ
    chatbot-chatbot-3-2_ex02_ko

システムエンティティ作成

システムエンティティは、すべてのドメインで共通して使用可能なエンティティです。NAVERクラウドプラットフォームで管理します。チャットボット作成者は登録されているシステムエンティティのうち、使用するシステムエンティティのみ有効にします。

参考

タスクまたは正規表現質問でそのシステムエンティティを参照している場合は、無効にできません。

`@SYSTEM_ANY

`@SYSTEM_ANYは、ユーザーの自由発話のうち、一部のパターンだけ保存する場合に使用します。例えば、辞書型エンティティまたはパターン型エンティティで定義しづらい人の名前や、検索キーワードなどをエンティティで分析する場合に活用できます。

  • `@SYSTEM_ANYは、正規表現質問にのみ入力できます。
  • `@SYSTEM_ANYはどの発話ともマッチングできます。正規表現記法の中ではワイルドカードと同じです。
  • `@SYSTEM_ANYのみ登録するのではなく、登場し得る他のパターンをも併せて入力することをお勧めします。
正規表現質問: `@SYSTEM_ANY [は|が] [何んだ|何でしょう]
  • ただし、選択的に登場する正規表現を併せて使用する場合、`@SYSTEM_ANYとマッチングされる単語を保証できないことにご注意ください。
正規表現質問: `@SYSTEM_ANY(を)[説明して](줘|주세요)
-> ユーザーが「CLOVA Chatbotを説明して」と入力した場合、`@SYSTEM_ANYが「CLOVA Chatbot」とマッチングされる可能性があります。
  • `@SYSTEM_ANYのみ登録する場合、コンテキストまたは条件などを設定して特定の時点にのみ、その会話がマッチングされるように制限することをお勧めします。
正規表現質問: `@SYSTEM_ANY
-> `@SYSTEM_ANYのみ入力した正規表現質問を登録する場合、ユーザーが発話を入力する際に常にその会話とマッチングされてしまう可能性があります。

Slot Module

スロットモジュールは、シナリオを構築する際に最も頻繁に使用されるエンティティを共通モジュールとして提供するエンティティです。

  • DATE、TIME、PEOPLE、NAMEの4つのシステムエンティティを提供し、日付、時間、人数、名前を含む発話を入力する場合、その発話に含まれる日付、時間、および人数のパターンを認識し、システムエンティティに値を含めて渡します。
  • このエンティティを使用する場合、Date、Time、People、Nameなどのパターン型エンティティを別途作成せず、システムエンティティで必要なエンティティを On/Offする形式で利用できます。
参考
  • システムエンティティのうち、DATE、TIME、PEOPLE、NAMEは正規表現質問に入力できません。

  • Onにした後は必ずビルドすることで、そのエンティティを使用できるようになります。

スロットモジュールは、レスポンス条件にユーザー変数を指定したり、レスポンス内容にユーザー変数を入力するために使用されます。

  • 応答条件設定の場合、 [ユーザー変数] タブを選択して [値] フィールドに@DATEのように一部を入力すると、スロットモジュールのリストが表示されます。
    chatbot-chatbot-3-2_slotnormalizer-2_ko

  • 回答にユーザー変数を入力するには、ユーザー変数項目の値ドロップダウンリストからエンティティを選択します。`@DATEのように一部を入力するとリストが表示されます。
    chatbot-chatbot-3-2_slotnormalizer-1_ko

DATE

DATEは「今日」、「クリスマス」、「釈迦誕生日」、「1年後」といった日付入力パターンを認識し、該当する日付を保持して渡すエンティティです。

DATE値をシステムエンティティに含めて活用したい場合、当該エンティティを Onにすると有効になります。DATEを有効にすると、TIMEエンティティも同時に有効になります。

注意

システムエンティティである dateと datetimeは同時に有効にできません。dateを onにして datetimeを offにすると、dateが offになります。

会話で日付を処理する場合、次の2つのパターンが考えられます。

  • レストランなどに予約の電話をする -> analyzed: 未来の日付
  • カード会社に利用履歴を照会する -> alternative: 過去の日付

レストランに予約の電話をする場合は通常未来の日付を予約することになり、カード会社で利用履歴を照会する場合は過去の日付を照会することになります。

date値には analyzed値と alternative値の2種類があり、未来と過去の日付を両方推測して確認できます。
例えば、現在の日付が2022年4月1日で「5月1日」と言うと、次のように分析されます。

  • analyzed: 2022-05-01
  • alternative: 2021-05-01
参考
  • 現在は、analyzedのみ使用可能です。alternativeについては、今後利用可能になる予定です。

  • 分析結果として画面に alternativeが表示される場合がありますが、仕様が変更される可能性があるためご注意ください。

分析値の説明

attribute type description
`@{DATE.literal} string ユーザーが言った通りの値
ex) 12月25日
`@{DATE.analyzed} - ユーザーが確定した日付をレスポンスせず、一部の情報のみをレスポンスした場合
例) 25日 → 将来の日付として推測して返却 
例) 現在の日付が2022年12月24日の場合、2022年12月25日と分析
`@{DATE.analyzed.value} string ex) 2020-12-25
`@{DATE.analyzed.year} number 分析された年度値
ex) 2021
`@{DATE.analyzed.month} number 分析された月(month)値
ex) 12
`@{DATE.analyzed.day} number 分析された日付(day)値
ex) 25
`@{DATE.analyzed.dayOfWeek} number 分析された曜日値を数値で表現
例) 月曜日~日曜日 → 0~6
ex) 5 → 土曜日
`@{DATE.analyzed.type} string 分析された値の typeを表示
  • availableDate: 有効な日付。以下の場合に該当しない場合
  • unavailableDate: カレンダーにない日付またはスロットモジュールで推測できない範囲の値
  • unavailableDateCombi: 日付と曜日が一致しない場合
  • multiDate: 日付が複数回表示された場合
  • `@{DATE.analyzed.relative} - 現在の日付情報と実際に分析された日付情報との間の相対的な値。analyzedを基準に分析
    `@{DATE.analyzed.relative.year} number 現在の年度と実際に分析された年度との間の相対的な値。analyzedが availableDateである場合のみ analyzedを基準に分析、またはユーザーが相対的な発話をした場合のみ分析
    ex) 2年前 → -2
    `@{DATE.analyzed.relative.month} number 今月と実際に分析された日付の月との間の相対的な値。analyzedが availableDateである場合のみ analyzedを基準に分析、またはユーザーが相対的な発話をした場合のみ分析
    ex) 2か月後 → 2
    `@{DATE.analyzed.relative.week} number 今週と実際に分析された日付の週との間の相対的な値。analyzedが availableDateである場合のみ analyzedを基準に分析、またはユーザーが相対的な発話をした場合のみ分析
    ex) 2週間前 → -2
    `@{DATE.analyzed.relative.day} number 今日の日付と実際に分析された日付との間の相対的な値。analyzedが availableDateである場合のみ analyzedを基準に分析、またはユーザーが相対的な発話をした場合のみ分析
    ex) 3日後 → 3
    `@{DATE.alternative} -
    • 代替値ユーザーが確定した日付をレスポンスせず、一部の情報のみをレスポンスした場合
      ex)25日
      • @{DATE.analyzed}は未来の日付として推測され返却
      • @{DATE.alternative}は過去の日付として推測され返却
    • ユーザーが確定した日付をレスポンスした場合
      例) 2021年12月25日
      • @{DATE.analyzed}と@{DATE.alternative}は同じ値を持つ
    `@{DATE.alternative.value} string ex) 2020-12-25
    `@{DATE.alternative.year} number 代替値の年度
    ex) 2021
    `@{DATE.alternative.month} number 代替値の月(month)
    ex) 12
    `@{DATE.alternative.day} number 代替値の日付(day) 
    ex) 25
    `@{DATE.alternative.dayOfWeek} number 代替値の曜日を数字で表現 月曜日~日曜日 → 0~6
    ex) 5 → 土曜日
    `@{DATE.alternative.type} string 分析された値の typeを表示
    • availableDate: 有効な日付、または以下の caseに該当しない場合
    • unavailableDate: カレンダーにない日付である場合、またはスロットモジュールで推測不可能な領域が欠落している場合
    • unavailableDateCombi: 日付と曜日が一致しない場合
    • multiDate: マルチで分析された場合
    `@{DATE.alternative.relative} - 現在の日付情報と実際に分析された日付情報との間の相対的な値。alternativeを基準に分析
    `@{DATE.alternative.relative.year} number 現在の年度と実際に分析された年度との間の相対的な値。alternativeが availableDateである場合のみ analyzedを基準に分析、またはユーザーが相対的な発話をした場合のみ分析
    ex) 2年前 → -2
    `@{DATE.alternative.relative.month} number 今月と実際に分析された日付の月との間の相対的な値。alternativeが availableDateである場合のみ analyzedを基準に分析、またはユーザーが相対的な発話をした場合のみ分析
    ex) 2か月後 → 2
    `@{DATE.alternative.relative.week} number 今週と実際に分析された日付の週との間の相対的な値。alternativeが availableDateである場合のみ analyzedを基準に分析、またはユーザーが相対的な発話をした場合のみ分析
    ex) 2週間前 → -2
    `@{DATE.alternative.relative.day} number 今日の日付と実際に分析された日付との間の相対的な値。alternativeが availableDateである場合のみ analyzedを基準に分析、またはユーザーが相対的な発話をした場合のみ分析
    ex) 3日後 → 3

    例1: 現在の日付が2022年5月31日で、ユーザーが「週末」と言った場合

    プロパティ 説明
    分析 6/4または6/5と推定 未来の土曜日または日曜日
    year 2022 土曜日と日曜日ともに2022年
    month 6 土曜日と日曜日ともに6月
    day null 土曜日か日曜日かによって異なる
    タイプ multiDate 複数の日付が適用される

    例2: 現在の日付が2022年5月2日で、ユーザーが「週末」と言った場合

    プロパティ 説明
    分析 5/7または5/8と推定 未来の土曜日または日曜日
    year 2022 土曜日と日曜日ともに2022年
    month 5 土曜日と日曜日ともに5月
    day null 土曜日か日曜日かによって異なる
    タイプ multiDate 複数の日付が適用される

    例3: 現在の日付が2022年5月31日で、ユーザーが「今日」と言った場合

    プロパティ 説明
    分析 2022-05-31 決定した日付
    year 2022
    month 5
    day 31
    タイプ availableDate 有効な日付

    例4: 現在の日付が2022年5月31日で、ユーザーが「1日」と言った場合

    プロパティ 説明
    分析 2022-06-01 未来の確定した日付
    year 2022
    month 6
    day 1
    タイプ availableDate 有効な日付
    • 分析されたエンティティの例
    {
      "literal" : "12月25日",
      "analyzed":
      {
        "value" : "2022-12-25",
        "year" : 2022,
        "month" : 12,
        "day" : 25,
        "dayOfWeek" : 5,
        "type" : "availableDate",
        "relative" : 
       {
         "year" : 0,
         "month" : 1,
         "week" : 1,
         "day" : 11
       }
      },
      "alternatives" :
      {
        "value" : "2021-12-25",
        "year" : 2021,
        "month" : 12,
        "day" : 25,
        "dayOfWeek" : 5,
        "type" : "availableDate",
        "relative" : 
       {
         "year" : -1,
         "month" : 1,
         "week" : 1,
         "day" : 11
       }
      }
     }
    }
    

    TIME

    TIMEは「7時半」「2時間後」「今」といった入力パターンを認識し、対応する時間をスロットに入力して転送します。

    参考

    スロットモジュールは「予約」をテーマとしているため、すべての時間は10分単位で区切られるように推定します。
    例) 例えば、現在時刻が午後6時30分で「7分後」と発話した場合、6時37分ではなく6時40分として返します。

    TIMEを有効にするには、DATEを ONにします。

    attribute type description
    `@{TIME.literal} string ユーザーが言った通りの値
    ex) 7時半
    @{TIME.analyzed}|-|<ul><li>分析された値でユーザーが確定した日付をレスポンスせず、一部の情報のみをレスポンスした場合 <ul><li> ex)7時<ul><li>@{TIME.analyzed}は未来の時間として推測され返却</li><li>@{TIME.alternative}は過去の時間として推測され返却</li></ul></ul></ul><ul><li>ユーザーが確定した時間をレスポンスした場合<ul><li>ex)午後1時30分</li> <ul><li> @{TIME.analyzed}と&nbsp;@{TIME.alternative}は同じ値を持つ
    `@{TIME.analyzed.value} string ex) 19:30
    `@{TIME.analyzed.hour} number 分析された時間値
    ex) 19
    `@{TIME.analyzed.minute} number 分析された分(minute)値
    ex) 30
    `@{TIME.analyzed.type} string 分析された値の typeを表示
    • availableTime: 有効な時間で、以下の caseに該当しない場合
    • unavailableTime: 24以上の hour、または60を超える minute値の場合、あるいは推測不可能な領域が欠落している場合
    • multiTime: マルチで分析された場合
    • @{TIME.analyzed.relative}: 現在の時間情報と実際に分析された時間情報との間の相対的な値。analyzedを基準に分析
    `@{TIME.analyzed.relative.hour} number 現在の時間と実際に分析された時間との間の相対的な値。analyzedを基準に分析
    ex) 1時間後 → 1
    `@{TIME.analyzed.relative.minute} number 現在の分と実際に分析された分との間の相対的な値。analyzedを基準に分析
    ex) 30分後 → 30
    `@{TIME.alternative} -
    • ユーザーが確定した時間をレスポンスせず、一部の情報のみをレスポンスした場合
      ex)7時
      • @{TIME.analyzed}は未来の時間として推測され返却
      • @{TIME.alternative}は過去の時間として推測され返却
    • ユーザーが確定した時間をレスポンスした場合
      ex)午後1時30分
      • @{TIME.analyzed}と@{TIME.alternative}は同じ値を持つ
    `@{TIME.alternative.value} string ex) 07:30
    `@{TIME.alternative.hour} number 分析された時間値
    ex) 7
    `@{TIME.alternative.minute} number 分析された分(minute)値
    ex) 30
    `@{TIME.alternative.type} string 分析された値の typeを表示
    • availableTime有効な時間、または以下の caseに該当しない場合
    • unavailableTime: 24以上の hour、または60を超える minute値の場合、または推測不可能な領域が欠落している場合
    • multiTime: マルチで分析された場合
    `@{TIME.alternative.relative} - 現在の時間情報と実際に分析された時間情報との間の相対的な値。alternativeを基準に分析
    `@{TIME.alternative.relative.hour} number 現在の時間と実際に分析された時間との間の相対的な値。 alternativeを基準に分析
    ex) 1時間後 → 1
    `@{TIME.alternative.relative.minute} number 現在の分と実際に分析された分との間の相対的な値。alternativeを基準に分析
    ex) 30分後 → 30
    • 分析されたエンティティの例
    {
      "literal" : "7時半",
      "analyzed":
      {
        "value" : "19:30",
        "hour" : 19,
        "minute" : 30,
        "type" : "availableTime",
        "relative" : 
       {
         "hour" : 1,
        "minute" : 30,
        "second" : -30
       }
      },
      "alternatives" :
      {
        "value" : "07:30",
        "hour" : 7,
        "minute" : 30,
        "type" : "availableTime",
        "relative" : 
       {
         "hour" : 1,
        "minute" : 30,
        "second" : -30
       }
      }
    }
    

    People

    Peopleは「大人1人、子供2人」「大人3人」といった人数入力パターンを認識し、総人数や大人/子供の人数をスロットに入力して転送します。
    システムエンティティで Peopleを Onにして使用できます。

    注意

    現在の仕様上、「学生」は子供として計算しません。

    attribute type description
    `@{PEOPLE.literal} string ユーザーが言った通りの値
    例)「大人二人と子供一人」
    `@{PEOPLE.total} number 分析された人の総数
    ex) 3
    `@{PEOPLE.numAdult} number 分析された成人の数
    例) 2、もし childの情報がない場合は、常に totalの値で推測して入力
    `@{PEOPLE.numChild} number 分析された子供の数
    例) 1、child情報がない場合は常に0と推定
    `@{PEOPLE.type} string 分析された値の typeを表示
    • availablePeople: 有効な人の数
    • multiPeople: マルチで分析された場合
    • 分析されたエンティティの例
    {
      "literal" : "大人二人と子供一人",
      "total" : 3,
      "numAdult" : 2,
      "numChild" : 1,
      "type" : "availablePeople"
    }
    

    Name

    ユーザーが入力した値の中から名前を認識し、スロットに入力して出力できます。 
    システムエンティティで Peopleを Onにして使用できます。

    注意

    人の名前ではなく団体名/会社名/ハンドルネームの場合は認識しません。

    attribute type description
    `@{NAME.literal} string
    `@{NAME.lastName} string
    `@{NAME.firstName} string
    `@{NAME.type} string
    • 分析されたエンティティの例
    {
      "literal" : "鈴木一郎",
      "lastName" : "鈴木",
      "firstName" : "一郎",
      "type" : "availableName"
    }
    

    活用方法

    • ユーザー変数に保存: `@{DATE.analyzed.dayOfWeek}のように、必要なフィールドを選択してユーザー変数に割り当てて活用できます。
      chatbot-chatbot-3-2_slotnormalizer-3_ko

    • タスク会話

      • ユーザーレスポンス値の場合: literalの値として保存して活用できます。
        chatbot-chatbot-3-2_slotnormalizer-4_ko

      • ノーマライズ値の場合
        @{DATE.analyzed}、@{TIME.analyzed}、@{PEOPLE.total}、@{NAME.literal}の値として保存して活用できます。
        chatbot-chatbot-3-2_slotnormalizer-5_ko

    • 回答

      • ユーザー変数をそのまま使用して活用できます。
        chatbot-chatbot-3-2_slotnormalizer-3_ko

      • 特定のフォーマットに置換して使用したい場合は、ユーザー変数に入れて活用できます。
        例) @{TIME:kr.time.partsDay}ですよね?
        chatbot-chatbot-3-2_slotnormalizer-6_ko

    参考

    特定のフォーマットに置換するためには、ユーザー変数は必ず json形式で作成する必要があります。
    chatbot-chatbot-3-2_slotnormalizer-7_ko

    回答フォーマット方法

    format name user variable output detail e.g
    kr.date {"month" : M, "day" : D, "weekday" : "AAAA"} [M]月[D]日 5月5日
    kr.date.weekday {"month" : M, "day" : D, "weekday" : "AAAA"} [M]月[D]日[AAAA] [AAAA] = [月曜日、火曜日、水曜日、木曜日、金曜日、土曜日、日曜日] 5月5日火曜日
    kr.time {”hour" : H, "minuet" : M} [H]時[M]分 H = 24時間制 23時30分
    kr.time.partsDay {”hour" : H, "minuet" : M} [partsDay][H]時[M]分 H = 12時間制 夜23時30分
    kr.time.twelveHour {”hour" : H, "minuet" : M} [H]時[M]分 H = 12時間制 11時30分
    kr.people {"numPeople" : NNNN} [NNNN]分 1<= N <50 : 序数に変換、50<= N : 基数に変換 四分
    kr.people.arabic {"numPeople" : NNNN} [NNNN]分 N: arabic数字そのまま 4分
    kr.telNum "XXXYYYYZZZZ" [XXX]に[YYYY]に[ZZZZ] XYZ : 基数に変換 零一零に二九二九に二九二九
    kr.telNum.fourDigits "XXXYYYYZZZZ" [ZZZZ] N: 基数に変換 二九二九
    telNum.arabic "XXXYYYYZZZZ" [XXX]-[YYYY]-[ZZZZ] XYZ: arabic数字そのまま 090-1234-5678
    telNum.fourDigits.arabic "XXXYYYYZZZZ" [ZZZZ] XYZ: arabic数字そのまま 2929

    API連携型エンティティ作成

    API連携型エンティティは、チャットボットビルダでは管理できないエンティティやリアルタイムで情報が変更されるエンティティがある場合に活用します。例えば、従業員名や顧客名といったセキュリティの重要なデータをチャットボットビルダにエンティティとして登録して管理するのが困難な場合、API連携型エンティティを活用します。エンティティを代わりに分析できるサーバの API urlを入力すると、ユーザーが入力した発話をエンティティ分析が可能な APIサーバに転送し、分析された結果を受け取ってシナリオを展開することができます。

    API連携型エンティティは以下のような場合に使用します。

    • タスクのスロットとして使用する場合
    • 回答条件でエンティティ条件をチェックする場合
    • アクションメソッド v1を呼び出す場合

    API連携型エンティティの使用方法は、次の通りです。

    1. NAVERクラウドプラットフォームコンソールで、i_menu > Services > AI Services > CLOVA Chatbot > Domainメニューを順にクリックします。
    2. 希望するドメインの [ビルダを実行する] ボタンをクリックしてチャットボットビルダを実行します。
    3. チャットボットビルダでエンティティ > [APIエンティティ] タブをクリックします。
    4. URL領域の [変更] ボタンをクリックします。
    5. URLフィールドにエンティティを分析できる APIのアドレスを入力して、 [保存] ボタンをクリックします。
      • チャットボットは、入力された URLで形態素を分析した結果を含めて呼び出す
    6. [エンティティ作成] ボタンをクリックします。
    7. エンティティ作成画面が表示されたら、エンティティの名前を入力して [重複チェック] ボタンをクリックし、 [保存] ボタンをクリックします。
    8. 作成されたエンティティを確認します。
    • リクエスト形式
    {
      "query": "韓国住んでる",
      "nlpResult": {
        "data": [
          {
            "words": [
              {
                "in": [
                  {
                    "morph": "韓国",
                    "tag": "NOUN",
                    "ner": "Ner=B-韓国エンティティ名",
                    "lemma": null,
                    "start": 0,
                    "end": 5,
                    "feature": 0,
                    "additionals": ""
                  },
                  {
                    "morph": "住んでる",
                    "tag": "NORMALVERB",
                    "ner": "Ner=O",
                    "lemma": "住む",
                    "start": 6,
                    "end": 11,
                    "feature": 0,
                    "additionals": "んでる"
                  }
                ],
                "word": "韓国住んでる"
              }
            ]
          }
        ],
        "success": true
      }
    }
    
    • レスポンス形式
    {
      "code": "OK",
      "message": "Option[String]",
      "entity": [
        {
          "name": "国",
          "userInput": "韓国",
          "represent": "Korea"
        }
      ]
    }
    

    手動によるエンティティのタグ付け

    辞書型エンティティは、会話の一般質問にタグ付けできます。エンティティを登録してモデルのビルドが完了すると、一般質問の登録時にエンティティに該当する単語が自動でタグ付けされ、タグ付けされたエンティティは会話の質問リストで青い文字で表示されます。エンティティがタグ付けされた質問は会話モデル学習に反映され、ユーザー発話の認識を手助けします。
    会話モデルのビルド前か、エンティティに自動でタグ付けされていない場合は、チャットボットの作成者がエンティティを手動でタグ付けすることができます。
    手動でエンティティをタグ付けする方法は、次の通りです。

    1. 事前タスクを完了します。
      • 「ピザの種類」エンティティ追加、代表語: ポテトピザ
        chatbot-chatbot-3-2_tag01_ko
    2. 質問を登録し、エンティティとしてタグ付けする単語をドラッグします。
      • このシナリオでは、「ポテトピザ」をドラッグします。
        chatbot-chatbot-3-2_tag02_ko
    3. エンティティ選択画面が表示されたら、タグ付けしたいエンティティを選択して [適用] ボタンをクリックします。
      • 新しい代表語として追加するか、既に登録済みの代表語の類義語として追加できます。
      • エンティティが存在しない場合は、 [エンティティ作成] をクリックして新規作成します。
        chatbot-chatbot-3-2_tag03_ko
    4. エンティティのタグ付けが完了したか確認します。
      chatbot-chatbot-3-2_tag04_ko