エンティティの作成
エンティティを作成する方法を示します。
複数言語の値リスト・エンティティ
ヒント:
スキルで検出された言語でレスポンスが一貫して出力されるようにするには、「共通レスポンス」、「エンティティの解決」および「エンティティの照合」状態に常にuseFullEntityMatches: true
を含めます。「ネイティブ・サポート言語のスキルへの追加」で説明されているように、このプロパティをtrue
(デフォルト)に設定すると、エンティティ値がオブジェクトとして返され、そのプロパティによってプライマリ言語が検出された言語と区別されます。Apache FreeMarker式で参照される場合、これらのプロパティによって、スキルのメッセージ・テキストおよびラベルに適切な言語が表示されることが保証されます。
ファジー・マッチでのワード・ステミングのサポート
リリース22.10以降、リスト値エンティティのあいまいな一致はワード・ステミングに基づいており、値の一致は単語の字句根に基づきます。以前のバージョンでは、部分一致と自動修正によってファジー照合が有効になりました。このアプローチでは、ユーザー入力のタイポが許容されていましたが、トランスポーズされた単語も含まれますが、値リスト・エンティティ内の複数の値と一致することもあります。ステミングでは、この散布が排除されます。一致はユーザー入力の単語順序に基づいているため、1つの一致が行われるか、まったく一致しません。たとえば、「Lovers Veggie」は一致しませんが、「Veggie Lover」はピザ・タイプのエンティティの「Veggie Lovers」の値と一致します。(「Lover」は語られています。)記事や前置詞などのストップ・ワードは、特殊文字と同様に抽出された値では無視されます。たとえば、「Veggie the Lover」と「Veggie////Lover」はどちらも「Veggie Lovers」の値と一致します。
MLエンティティの作成
MLエンティティは、エンティティ抽出に対するモデル主導のアプローチです。インテントと同様に、トレーニング発話(インテントの作成に使用したものと同じトレーニング発話)からMLエンティティを作成します。ただし、MLエンティティの場合、エンティティに対応するトレーニング発話の単語に注釈を付けます。
開始するには、トレーニング・データの一部に自分で注釈を付けることができますが、インテントの場合と同様に、クラウド・ソーシングによって、より多様な(したがって堅牢な)トレーニング・セットを開発できます。トレーニング・ガイドラインに記載されているように、堅牢なエンティティ検出には、トレーニング・セット全体で各MLエンティティの600から5000オカレンスの任意の場所が必要です。また、インテント・トレーニング・データがすでに拡張されている場合は、各発話に自分で注釈を付けるのではなく、クラウド・ソースにすることもできます。いずれの場合も、トレーニング・データを分析して、エンティティが均等に表されているかどうか、およびエンティティ値が十分に変化しているかどうかを確認する必要があります。注釈が完了したら、モデルをトレーニングし、テストします。テスト実行で検出されたエンティティを確認した後、コーパスを更新して再トレーニングし、精度を向上させることができます。
- +「エンティティの追加」をクリックします。
- 「エンティティの作成」ダイアログを完了します。「名前」と「摘要」は、「エンティティ注釈ジョブ」のクラウド・ワーカー・ページに表示されることに注意してください。
- 注釈付きコンテンツを識別する名前を入力します。一意の名前は、群集作業者を支援します。
- 説明を入力これはオプションのプロパティですが、クラウド・ワーカーはこれをNameプロパティとともに使用してエンティティを区別します。
- リストから「MLエンティティ」を選択します。
- トレーニング注釈に、システム・エンティティ値と競合する可能性がある名前、場所、数値またはその他のコンテンツが含まれている場合は、「システム・エンティティ一致の除外」をオンにします。このオプションを設定すると、このMLエンティティに解決された入力内のシステム・エンティティ値がモデルによって抽出されなくなります。この入力の周囲に境界が適用されるため、モデルではMLエンティティ値としてのみ認識され、システム・エンティティ値に対してさらに解析されません。このオプションは、MLエンティティを参照するコンポジット・バッグ・エンティティに対して設定できます。
- 「作成」をクリックします。
- +Value「エンティティのリスト」をクリックして、このエンティティを5つまでの値リスト・エンティティに関連付けます。これはオプションですが、MLエンティティを値リスト・エンティティに関連付けると、MLエンティティのコンテキスト抽出と、値リスト・エンティティのコンテキストに依存しない抽出が結合されます。
- 「DataSet」タブをクリックします。このページには、スキルの各MLエンティティのすべての発話がリストされます。これには、エンティティのブートストラップに追加した発話、クラウド・ソーシング・ジョブから送信された発話、またはJSONオブジェクトとしてインポートされた発話が含まれます。このページでは、JSONファイルをアップロードすることで、発話を手動でまたは一括で追加できます。このページから発話を管理するには、発話を編集するか(注釈付けや再注釈付けを含む)、削除、インポートおよびエクスポートします。
- 発話を手動で追加します。
- 「発話の追加」をクリックします。発話を追加したら、「注釈の編集」をクリックしてエンティティ・リストを開きます。
ノート
一度に追加できる発話は1つのみです。発話を一括で追加する場合は、エンティティ注釈ジョブを介してそれらを追加するか、JSONファイルをアップロードできます。 - MLエンティティに関連するテキストを強調表示し、エンティティ・リストからMLエンティティを選択してラベル付けを完了します。ラベルの「x」をクリックすると、注釈を削除できます。
- 「発話の追加」をクリックします。発話を追加したら、「注釈の編集」をクリックしてエンティティ・リストを開きます。
- JSONファイルから発話を追加します。このJSONファイルには、発話オブジェクトのリストが含まれています。
アップロードするには、「詳細」→「インポート」をクリックしてローカル・システムから取得します。[ { "Utterance": { "utterance": "I expensed $35.64 for group lunch at Joe's on 4/7/21", "languageTag": "en", "entities": [ { "entityValue": "Joe's" "entityName": "VendorName", "beginOffset": 37, "endOffset": 42 } ] } }, { "Utterance": { "utterance": "Give me my $30 for Coffee Klatch on 7/20", "languageTag": "en", "entities": [ { "entityName": "VendorName", "beginOffset": 19, "endOffset": 32 } ] } } ]
entities
オブジェクトは、発話内で識別されたMLエンティティを示します。前述の例では、発話ごとに1つのentities
オブジェクトを示していますが、発話には複数のentities
オブジェクトを意味する複数のMLエンティティを含めることができます。[ { "Utterance": { "utterance": "I want this and that", "languageTag": "en", "entities": [ { "entityName": "ML_This", "beginOffset": 7, "endOffset": 11 }, { "entityName": "ML_That", "beginOffset": 16, "endOffset": 20 } ] } }, { "Utterance": { "utterance": "I want less of this and none of that", "languageTag": "en", "entities": [ { "entityName": "ML_This", "beginOffset": 15, "endOffset": 19 }, { "entityName": "ML_That", "beginOffset": 32, "endOffset": 36 } ] } } ]
entityName
はMLエンティティ自体を識別し、entityValue
はエンティティのラベルが付いたテキストを識別します。entityValue
は、発話に加えられた変更に対してラベル付きテキストを検証するために使用できるオプションのキーです。ラベル自体は、ラベルを開始および終了する文字のオフセットを表すbeginOffset
およびendOffset
プロパティによって識別されます。このオフセットは、単語ではなく文字によって決定され、発話の最初の文字(0-1)から計算されます。ノート
このJSONからMLエンティティを作成することはできません。ファイルをアップロードする前に存在している必要があります。オフセットを決定しない場合は、重複エントリがないかチェックされます。JSONファイルのentities
オブジェクトを未定義のままにして、JSONファイルのアップロード後にラベルを適用できます。[ { "Utterance": { "utterance": "I expensed $35.64 for group lunch at Joe's on 4/7/21", "languageTag": "en", "entities": [] } }, { "Utterance": { "utterance": "Give me my $30 for Coffee Klatch on 7/20", "languageTag": "en", "entities": [] } } ]
entities
定義に加えられた変更のみが適用されます。JSONファイルで発話が変更された場合、それは新しい発話とみなされます。 - 注釈付き発話を編集します。
- 「編集」
をクリックして、注釈を削除します。
ノート
変更された発話は、新しい(注釈のない)発話とみなされます。 - 「注釈の編集」をクリックして、エンティティ・リストを開きます。
- テキストを強調表示し、「エンティティ」リストからMLエンティティを選択します。
- 注釈を削除する必要がある場合は、ラベルの「x」をクリックします。
- 「編集」
- 発話を手動で追加します。
- 発話の注釈付けが完了したとき。「トレイン」をクリックして、トレーナTmとエンティティ・モデルの両方を更新します。
- 発話テスターにテスト・フレーズ(トレーニング・データにない値を持つテスト・フレーズ)を入力して、認識をテストします。結果をチェックして、モデルが正しいMLエンティティを検出したかどうか、およびテキストに正しく完全にラベルが付けられているかどうかを確認します。
- MLエンティティをインテントに関連付けます。
システム・エンティティの一致を除外
「システム・エンティティの一致の除外」をオンにすると、モデルによって、以前に抽出されたシステム・エンティティ値がMLエンティティの境界内で見つかった競合する値に置換されなくなります。このオプションを有効にすると、「火曜日の成果物について話し合うための月曜日の会議の作成」では、該当するDATE_TIMEエンティティ(月曜日)を解決し、MLエンティティとして認識されるテキストの「火曜日」を無視して、DATE_TIMEおよびMLエンティティ値を別々に保持します(火曜日の成果物の説明)。
MLエンティティを参照するコンポジット・バッグ・エンティティの「システム・エンティティ一致の除外」オプションを設定できます。
CSVファイルからの値リスト・エンティティのインポート
一度に1つずつエンティティを作成するのではなく、エンティティ定義を含むCSVファイルをインポートすると、エンティティ・セット全体を作成できます。
このCSVファイルには、エンティティ名(entity
)、エンティティ値(value
)およびシノニム(synonyms
)の列が含まれます。このファイルは最初から作成することも、エクスポートで作成されたCSVを再利用したり別の用途に使用したりすることもできます。
entity
、value
およびsynonyms
の列に分かれています。例:entity,value,synonyms
PizzaSize,Large,lrg:lrge:big
PizzaSize,Medium,med
PizzaSize,Small,little
value
列とsynonyms
列のヘッダーに言語タグが追加されます。たとえば、スキルのプライマリ・ネイティブ言語が英語(en
)の場合、value
列およびsynonyms
列はen:value
およびen:synonyms
になります:entity,en:value,en:synonyms
PizzaSize,Large,lrg:lrge:big
PizzaSize,Medium,med
PizzaSize,Small,
PizzaSize,Extra Large,XL
複数のネイティブ言語をサポートするCSVでは、セカンダリ言語ごとにvalue
およびsynonyms
列の追加セットが必要です。ネイティブが英語のスキルで、セカンダリ言語がフランス語(fr
)の場合、CSVにはen
列に対応するfr:value
列とfr:synonyms
列が含まれます:entity,en:value,en:synonyms,fr:value,fr:synonyms
PizzaSize,Large,lrg:lrge:big,grande,grde:g
PizzaSize,Medium,med,moyenne,moy
PizzaSize,Small,,petite,p
PizzaSize,Extra Large,XL,pizza extra large,
- 20.12よりも前のCSVを20.12スキル(ネイティブ言語をサポートするスキルまたは翻訳サービスを使用するスキルを含む)にインポートすると、値とシノニムはプライマリ言語としてインポートされます。
- プライマリ言語とセカンダリ言語の両方ですべてのエンティティ値はエンティティ内で一意である必要があるため、単一のエンティティに対して同じ値が複数回定義されている場合はCSVをインポートできません。20.12よりも前のバージョンでは、値が重複している可能性があります。大文字と小文字が違うと値が一意とみなされたためです。これは20.12には当てはまりません(大/小文字の区別はより厳密に適用されます)。たとえば、
PizzaSize, Small
とPizzaSize, SMALL
の両方が含まれるCSVはインポートできません。バージョン20.12へのアップグレードを計画している場合は、アップグレードを実行する前に、まず、大/小文字の違いのみで区別されている同じエンティティ値をすべて解決する必要があります。 - プライマリ言語サポートは、バージョン20.12以降を使用して作成されたスキルに適用されるため、以前のバージョンで作成されたスキルにバージョン20.12 CSVをインポートするには、事前に言語タグおよびセカンダリ言語エントリを削除する必要があります。
- 複数言語CSVを、ネイティブ言語サポートを使用しないスキル(翻訳サービスを使用するスキルを含む)にインポートできます。
- 複数言語CSVを、ネイティブ言語をサポートするスキルまたは翻訳サービスを使用するスキルにインポートする場合、プライマリ言語の有効値が含まれる行のみがインポートされます。残りのタグは無視されます。
-
サイド・ナビゲーション・バーで「エンティティ」(
)をクリックします。
-
「詳細」をクリックし、「値リスト・エンティティのインポート」を選択して、ローカル・システムから
.csv
ファイルを選択します。
図import-entities.pngの説明 -
エンティティをインテントに追加します(または、エンティティ・リストに追加してから、インテントに追加します)。
CSVファイルへの値リスト・エンティティのエクスポート
entity
、value
およびsynonyms
列が含まれます。このようなCVSにはリリース固有の要件があり、再利用に影響を与える可能性があります。
- バージョン20.12で作成されたスキル、または20.12にアップグレードされたスキルからエクスポートされたCSVは、プライマリ言語(場合によってはセカンダリ言語)のタグが
value
列とsynonyms
列に付加されており、ネイティブ言語サポートに対応しています。たとえば、次のスニペットのCSVには、スキルのプライマリ言語である英語(en
)用のvalue
列とsynonyms
列のセットに加え、セカンダリ言語であるフランス語(fr
)用の別のセットが含まれます:
プライマリ言語タグは、ネイティブ言語サポートに関係なく、すべての20.12 CSVに含まれています。これらは、(ネイティブまたは翻訳サービスを介して)どのようなタイプの翻訳も行う予定がないスキルにも、翻訳サービスを使用するスキルにも存在します。entity,en:value,en:synonyms,fr:value,fr:synonyms
- 20.12より前のバージョンで実行されているスキルからエクスポートされたCSVには、entity、valueおよびsynonyms列がありますが、言語タグはありません。
-
サイド・ナビゲーション・バーで「エンティティ」(
)をクリックします。
-
詳細をクリックし、値リスト・エンティティのエクスポートを選択して、ファイルを保存します。
図export-entities.pngの説明エクスポートされた
.csv
ファイルには、スキルの名前が付けられます。このファイルをインポートとして使用する際に、場合によってはCSVファイルからのインテントのインポートで説明されている編集を実行する必要があります(バージョン20.12のスキルにインポートしたり、それよりも前のバージョンからエクスポートしたりする場合)。
動的エンティティの作成
動的エンティティの値は、Oracle Digital AssistantのREST APIで説明されている動的エンティティAPIのエンドポイントを通じて管理されます。エンティティの値とシノニムを追加、変更および削除するには、まず動的エンティティを作成して、RESTコールで使用されるentityId
を生成する必要があります。
- +「エンティティ」をクリックします。
- 「タイプ」リストから「動的エンティティ」を選択します。
- バックエンド・サービスが使用できないか、まだ値をプッシュしていない場合、またはサービスを維持しない場合は、「+値」をクリックして、テスト目的で使用できるモック値を追加します。通常、動的エンティティ・インフラストラクチャが配置される前に、これらの静的値を追加します。これらの値は、スキルのクローニング、バージョン作成またはエクスポートを行うと失われます。APIを介してエンティティ値をプロビジョニングした後で、それらの値を上書きまたは保持できます(ただし、ほとんどの場合は上書きします)。
- 「作成」をクリックします。
ヒント:
会話のテスト時にAPIでエンティティ値がリフレッシュされた場合、「リセット」をクリックして会話を再開します。- 生成した
entityId
とbotId
を使用して、スキルに構成されている動的エンティティを問い合せることができます。これらの値をコールに含めて、エンティティ値を更新するプッシュ・リクエストおよびオブジェクトを作成します。 - エンティティは150,000を超える値を持つことはできません。大量のデータを処理するときにこの制限を超過する可能性を減らすには、追加の
PATCH
リクエストを送信する前に、削除のPATCH
リクエストを送信します。
動的エンティティは、Oracle Cloud Infrastructure (Generation 2クラウド・インフラストラクチャとも呼ばれる)にプロビジョニングされたOracle Digital Assistantのインスタンスでのみサポートされます。インスタンスがOracle Cloud Platformにプロビジョニングされている場合(バージョン19.4.1のすべてのインスタンスと同様に)、機能を使用することはできません。
MLエンティティの作成のガイドライン
- 簡潔なMLエンティティを作成します。MLエンティティ定義は有用なトレーニング・セットの基礎であるため、わかりやすくすることは、クラウド・ワーカーが発話に注釈を付けるのに役立つ名前と説明の観点から重要です。
クラウド・ワーカーはMLエンティティの説明と名前に依存するため、特に重複の可能性がある場合は、MLエンティティが相互に簡単に区別できるようにする必要があります。違いが明確でない場合、群衆労働者は混乱する可能性があります。たとえば、業者エンティティとアカウント・タイプ・エンティティは、場合によっては区別しにくい場合があります。「貯蓄口座からPacific Gas and Electricに$100を振り替える」では、「貯蓄」を「口座タイプ」に、「Pacific Gas and Electric」を「業者」に明確にラベル付けできます。しかし、両者の境界線は、「ジョンにお金を送る必要があり、貯金から当座預金口座に100ドルを振り替える必要がある」というような文章でぼやけてしまうことがあります。「口座のチェック」は口座タイプですか、それとも業者名ですか?この場合、受信者は常にアカウント・タイプではなくマーチャント名にする必要があります。
- トレーニング発話のソーシングに備えて、様々なエンティティ抽出コンテキストの一般的なユーザー入力を検討します。たとえば、値はユーザーの初期メッセージ(初期発話コンテキスト)で抽出できますか、またはスキルのプロンプト(スロット発話コンテキスト)へのレスポンスから抽出されますか。
コンテキスト 説明 発話の例(太字で検出されたMLエンティティ値) 初期発話コンテキスト 通常は適切に構造化され、MLエンティティ値を含むメッセージ。たとえば、経費レポート・スキルの場合、発話には、MerchantというMLエンティティに対してモデルが検出できる値が含まれます。 5月3日に$85のJohn's Pasta Shopでチーム・ディナーの経費を作成します スロット発話コンテキスト 会話の設計(スキルは「マーチャントは誰ですか」とプロンプトを表示)のためにプロンプトに応答してMLエンティティを提供するユーザー・メッセージ、または以前に送信されたレスポンスによって提供されていないため値をスロットするユーザー・メッセージ。 他の状況では、MLエンティティ値がすでに指定されている可能性がありますが、同じ会話の他のユーザー・メッセージに含めることができます。たとえば、スキルによって、追加の経費詳細の入力やアップロードされた領収書のイメージの説明を求めるプロンプトが表示される場合があります。
- マーチャントはJohn's Pasta Shopです。
- チームディナー金額$85。John's Pasta Shop
- 説明は、TurboTaxi 自宅からCMH空港までです。
- クラウド・シンポジウムのGrandiose Shack Hotel受領
- トレーニングとテストのデータを収集します。
- すでに十分な発話のコレクションがある場合は、エンティティ注釈ジョブを起動する前に、エンティティ分布およびエンティティ値の多様性について評価できます。
- 十分なトレーニング・データがない場合、または最初から開始する場合は、インテント・パラフレーズ・ジョブを起動します。トレーニングおよびテストの実行可能な(および豊富な)発話を収集するには、各インテントのタスクを作成して、エンティティ・コンテキストをジョブに統合します。多様なフレーズを収集するには、会話コンテキストごとに各インテントを分解することを検討してください。
- タスクのプロンプトに対して、クラウド・ワーカーのコンテキストを指定し、「How would you respond?」または「What would you say?付随するヒントを使用して、例を示し、様々なコンテキストを示します。例:
プロンプト ヒント 経費精算書ボットと話していて、経費を作成します。あなたが最初に言うことは何ですか。 マーチャント名が発話内にあることを確認してください。たとえば、「5月3日にJohn's Pasta Shopでチーム・ディナーの経費を$85に作成します」などです。 プロンプト ヒント 経費を経費精算書ボットに発行しましたが、業者名を指定しませんでした。どのように対応しますか。 商人を特定する。原題は「Merchant is John's Pasta Shop」。 領収書のイメージを経費精算書ボットにアップロードしました。現在は領収書の記載を求めています。どのように対応しますか。 入金の業者名を識別します。たとえば、「Grandiose Shack Hotel」はクラウド・シンポジウムの領収書です。 コンテキスト 発話例 初期発話コンテキスト 火曜日の夕食に返す。 スロット発話コンテキスト - プレゼンテーションディナー金額$ 50。4人。
- 記述5のためのゼロックスランチ
- インタビュー滞在のためのホテルの領収書
- インテントごとに適切な数のパラフレーズを設定して、大規模なトレーニング・セットを収集します。モデルを正常に一般化するには、各MLエンティティのデータ・セットに500から5000の出現箇所が含まれている必要があります。理想的には、この範囲の下限を避けてください。
- クラウド・ワーカーがジョブを完了した(またはジョブを取り消すことができる十分な発話を完了した)と、発話を追加するか、インテント検証ジョブを起動して検証できます。さらにレビューするために、結果をローカル・システムにダウンロードすることもできます。
- テスト用に発話の約20%を予約します。インテント・パラフレーズおよびインテント検証ジョブ用にダウンロードしたCSVから発話テスターのCSVを作成するには:
- インテント・パラフレーズ・ジョブの場合:
result
列のコンテンツ(クラウド・ワーカーによって提供される発話)を発話テスターCSVのutterance
列に転送します。intentName
列のコンテンツを発話テスターCSVのexpectedIntent
列に転送します。 - インテント検証ジョブの場合:
prompt
列のコンテンツ(クラウド・ワーカーによって提供される発話)を発話テスターCSVのutterance
列に転送します。intentName
列のコンテンツを発話テスターCSVのexpectedIntent
列に転送します。
- インテント・パラフレーズ・ジョブの場合:
- 残りの発話は、単一の列
utterance
を持つCSVファイルに追加します。このCSVをアップロードしてエンティティ注釈ジョブを作成します。就業者はエンティティ値にラベルを付けるため、否定的な発話は「I'm not sure」または「None of the entity apply」として分類される可能性があります。 - エンティティ注釈ジョブが完了したら、結果を追加することも、エンティティ検証ジョブを起動してラベル付けを検証することもできます。エンティティ検証ジョブでワーカーが正しいとみなす発話のみをコーパスに追加できます。
ヒント:
「エンティティ」ページの「データセット」タブで、注釈ラベルを追加、削除または調整できます。 - 「エンティティ」を選択して、エンティティをトレーニングします。
- テスト・ケースを実行して、インテント・パラフレーズ・ジョブから予約した発話を使用してエンティティ認識を評価します。これらの発話を別のテスト・スイートに分割して、様々な動作をテストできます(不明な値、トレーニング・データに存在しない可能性のある句読点、誤検出など)。これらの発話は多数ある可能性があるため、発話テスターにCSVをアップロードすることでテスト・スイートを作成できます。
- 結果を使用してデータ・セットを絞り込みます。テスト実行結果がモデルがMLエンティティを効果的に識別していることを示すまで、トレーニング発話を繰り返し追加、削除または編集します。
ノート
ユーザー・エクスペリエンスを低下させるような非依存エンティティ一致を回避するには、トレーニング・データに名前、場所、番号が含まれる場合は、「システム・エンティティ一致の除外」をオンにします。
MLエンティティ・トレーニング・ガイドライン
モデルは、単語(または単語)の周囲のコンテキストと単語自体に関する字句情報の両方を使用してエンティティを一般化します。モデルを効果的に一般化するには、エンティティごとの注釈の数を500から5000の範囲にすることをお薦めします。すでに十分な大きさのトレーニング・セットがあり、エンド・ユーザーから期待されるエンティティ値のバリエーションがある場合があります。その場合は、エンティティ注釈ジョブを起動して、結果をトレーニング・データに組み込むことができます。ただし、十分なトレーニング・データがない場合、またはすべてのMLエンティティに対する十分なカバレッジがないデータがある場合は、クラウドソースのインテント・パラフレーズ・ジョブから発話を収集できます。
- トレーニング・データで同じエンティティ値を過剰に使用しないでください。トレーニング・データの繰返しエンティティ値により、モデルが不明な値を一般化できなくなります。たとえば、MLエンティティでは様々な値が認識されますが、エンティティはトレーニング・セット内の10から20の異なる値のみで表されます。この場合、2、3000の注釈がある場合でも、モデルは一般化されません。
- 各エンティティ値の単語数を変更します。ユーザーが3語から5語の長さのエンティティ値を入力することを想定しているが、トレーニング・データに1語または2語のエンティティ値注釈が付けられている場合、モデルでは単語数が増えるにつれてエンティティの識別に失敗する可能性があります。場合によっては、エンティティを部分的にのみ識別できます。モデルでは、指定した発話からエンティティ境界が想定されます。1つまたは2つの単語を使用して値についてモデルをトレーニングした場合、エンティティ境界は1つまたは2つの単語のみであるとみなされます。単語が多いエンティティを追加すると、モデルでより長いエンティティ境界を認識できます。
- 発話の長さは、ユース・ケースと予想されるユーザー入力を反映している必要があります。短い発話と長い発話の両方を収集することで、様々な長さのメッセージのエンティティを検出するようにモデルをトレーニングできます。発話には複数のフレーズを含めることもできます。スロット入力コンテキストを反映する短い発話が予想される場合は、それに応じてサンプル・データを収集します。同様に、初期コンテキスト・シナリオの発話を予測している場合は、トレーニング・セットに完全なフレーズが含まれている必要があります。
- 句読点を含めます。エンティティ名に「- 」や「/」などの特殊文字が必要な場合は、それらをトレーニング・データのエンティティ値に含めます。
- すべてのMLエンティティがトレーニング・データに等しく表されていることを確認します。不均衡なトレーニング・セットには、あるエンティティのインスタンスが多すぎ、別のエンティティのインスタンスが少なすぎます。不均衡なトレーニング・セットから生成されるモデルは、インスタンス数が少なすぎるエンティティの検出に失敗し、インスタンス数が不均等に多いエンティティの予測が過剰になる場合があります。これは偽陽性につながる。
MLエンティティ・テストのガイドライン
- スロット・コンテキスト発話のみを使用して、コンテキストの少ないエンティティをモデルがどの程度予測しているかを確認します。
- 不明な値を持つ発話を使用して、モデルがトレーニング・データに存在しない値でどの程度一般化されているかを調べます。
- MLエンティティのない発話を使用して、モデルで誤検出が検出されたかどうかを確認します。
- 句読点付きのMLエンティティ値を含む発話を使用して、モデルが異常なエンティティ値でどの程度パフォーマンスを発揮するかを調べます。