Entitys erstellen

So erstellen Sie eine Entity:

So erstellen Sie eine Entity:
  1. Klicken Sie in der seitlichen Navigationsleiste auf Entitys (Dieses Bild zeigt das Symbol "Entitys".).
  2. Klicken Sie auf Entity hinzufügen, geben Sie den Namen ein, und wählen Sie den Typ aus. Die Felder des Dialogfeldes entsprechen dem Entitytyp. Beispiel: Für Entitys mit regulären Ausdrücken können Sie den Ausdruck hinzufügen. Bei Wertelistenentitys fügen Sie die Werte und Synonyme hinzu.
    Wenn der Skill mehrere Sprachen über die native Sprachunterstützung von Digital Assistant unterstützt, müssen Sie die fremdsprachigen Gegenstücke für die Werte und Synonyme der Wertelisteentity hinzufügen.

    Da diese Werte dem entsprechenden Wert aus der primären Sprache (dem primären Sprachwert) zugeordnet werden müssen, müssen Sie den primären Wert auswählen, bevor Sie das Gegenstück der sekundären Sprache hinzufügen. Beispiel: Wenn Sie einem Skill, dessen primäre Sprache Englisch ist, Französisch als sekundäre Sprache hinzugefügt haben, wählen Sie zuerst "small" als primären Sprachwert aus und fügen dann petite hinzu.

  3. Geben Sie als optionalen Schritt eine Beschreibung ein. Mit der Beschreibung können Sie die Entity verdeutlichen, wie die Pizzabeläge für eine PizzaTopping-Entity. Diese Beschreibung wird nicht beibehalten, wenn Sie die Entity einer Mischentity hinzufügen.
  4. Sie können die folgenden optionalen Funktionen hinzufügen. Diese können überschrieben werden, wenn Sie die Entity einer Mischentity hinzufügen.
    • Wenn eine Wertelistenentity lange Wertelisten enthält, Sie aber nur einige Optionen gleichzeitig anzeigen möchten, können Sie die Paginierung für diese Werte festlegen, indem Sie im Feld Nummerierungsbereichsgröße eine Zahl eingeben oder einen Apache FreeMarker-Ausdruck definieren, der diese Zahl ergibt. Beispiel: Sie können einen Ausdruck definieren, der enum-Werte basierend auf dem Kanal zurückgibt.

      Wenn Sie diese Eigenschaft auf 0 setzen, gibt der Skill überhaupt keine Liste aus. Die Benutzereingabe wird jedoch mit einem Entitywert verglichen.

      Wenn Sie diese Anzahl auf einen Wert festlegen, der kleiner ist als die Gesamtanzahl der für diese Entity definierten Werte, zeigt die Komponente "Entitys auflösen" für jedes vollständige Werteset eine Schaltfläche "Mehr anzeigen" an. Wenn Sie zur Auflösung der Entity eine Komponente "Gemeinsame Antwort" verwenden, können Sie die Schaltfläche "Mehr anzeigen" selbst konfigurieren.
      Dieses Bild zeigt die Schaltfläche "Mehr anzeigen".
      Sie können den Text der Schaltfläche "Mehr anzeigen" mit der Eigenschaft showMoreLabel ändern, die zu den Komponenten "Entitys auflösen" und "Gemeinsame Antwort" gehört.

    • Fügen Sie eine Fehlermeldung für eine ungültige Benutzereingabe hinzu. Verwenden Sie einen Apache FreeMarker-Ausdruck, der die Eigenschaft system.entityToResolve.value.userInput enthält. Beispiel: ${system.entityToResolve.value.userInput!'This'}' is not a valid pizza type.
    • Damit Benutzer mehr als einen Wert in einer Werteliste auswählen können, aktivieren Sie die Option Mehrere Werte. Wenn Sie diese Option aktivieren, werden die Werte als nummerierte Liste angezeigt.
      Dieses Bild zeigt die nummerierte Liste mit mehreren Werten.
      Wenn Sie diese Option deaktivieren, werden die Werte als eine Liste mit Optionen angezeigt, die nur eine einzige Auswahl zulässt.
    • Durch Aktivieren der Option Fuzzy Match wird die Wahrscheinlichkeit erhöht, dass die Benutzereingabe mit einem Wert übereinstimmt, insbesondere, wenn Ihre Werte nur wenige Synonyme enthalten. Beim Fuzzy-Matching werden Wortstammdaten verwendet, um Übereinstimmungen aus der Benutzereingabe zu identifizieren. Wenn Sie die Fuzzy-Übereinstimmung deaktivieren, wird eine strenge Übereinstimmung erzwungen. Das heißt, dass die Benutzereingabe exakt mit den Werten und Synonymen übereinstimmen muss. "Autos" stimmt nicht mit dem Wert "Auto" überein, und "Manager" stimmt nicht mit dem Wert "Entwicklungsmanager".
    • Bei Skills, die mit einem Übersetzungsservice konfiguriert sind, basiert der Entityabgleich auf der Übersetzung der Eingabe. Wenn Sie Ursprünglichen Wert abgleichen aktivieren, wird beim Entityabgleich auch die ursprüngliche Eingabe berücksichtigt. Dies könnte für den Abgleich von Werten nützlich sein, die nicht übersetzt werden können.
    • Wenn Sie die Auswahl eines einzelnen Wertes durch den Benutzer erzwingen möchten, aktivieren Sie die Option Prompt für Begriffserklärung, und fügen Sie einen Begriffserklärungs-Prompt hinzu. Standardmäßig lautet diese Nachricht Wählen Sie einen Wert für <item name> aus, Sie können sie jedoch durch eine reine Textnachricht ersetzen (Sie können jeweils nur eine Pizza bestellen. Welche Pizza möchten Sie bestellen?), sie kann aber auch eine Kombination aus Text und FreeMarker-Ausdrücken sein. Beispiel:
      "I found multiple dates: <#list system.entityToResolve.value.disambiguationValues.Date as date>${date.date?number_to_date}<#sep> and </#list>. Which date should I use as expense date?"
    • Definieren Sie eine Validierungsregel mit einem FreeMarker-Ausdruck.
      Hinweis

      Sie können Prompts, Begriffserklärungen und Validierungen nur für integrierte Entitys hinzufügen, wenn sie zu einer Mischentity gehören.
  5. Klicken Sie auf Erstellen.
  6. Nächste Schritte:
    1. Fügen Sie die Entity einem Intent hinzu. Dadurch wird der Skill über die Werte informiert, die er während der Sprachverarbeitung aus der Benutzereingabe extrahieren muss. Informationen hierzu finden Sie unter Entitys zu Intents hinzufügen.
    2. Deklarieren Sie im Dialogfeld eine Variable für die Entity.
    3. Greifen Sie mit Apache FreeMarker-Ausdrücken auf die Variablenwerte zu. Siehe Integrierte FreeMarker-Arrayvorgänge.
    4. Klicken Sie auf Validieren, und prüfen Sie die Validierungsmeldungen auf Fehler im Zusammenhang mit Entity-Event-Handlern (sofern verwendet), potenzielle Probleme wie mehrere Werte in einer Wertelistenentity, die dasselbe Synonym verwenden, und um Anweisungen zum Anwenden von Best Practices zu erhalten, wie das Hinzufügen mehrerer Prompts, um den Skill ansprechender zu machen.

Wertelistenentitys für mehrere Sprachen

Wenn Ihr Skill auf mehrere Sprachen ausgerichtet ist und die native Sprachunterstützung von Digital Assistant verwendet, können Sie Werte für jede Sprache im Skill festlegen. Für jeden Entitywert in der primären Sprache eines Skills müssen Sie einen entsprechenden Wert in jeder zusätzlichen Sprache angeben.

Tipp:

Um sicherzustellen, dass Ihr Skill Antworten konsistent in der erkannten Sprache ausgibt, nehmen Sie immer useFullEntityMatches: true in den Status "Gemeinsame Antwort", "Entitys auflösen" und "Entity abgleichen" auf. Wie unter Nativ unterstützte Sprachen zu einem Skill hinzufügen beschrieben, gibt die Einstellung dieser Eigenschaft auf true (Standard) den Entitywert als Objekt zurück, dessen Eigenschaften die primäre Sprache von der erkannten Sprache unterscheiden. Wenn sie in Apache FreeMarker-Ausdrücken referenziert werden, stellen diese Eigenschaften sicher, dass die entsprechende Sprache im Nachrichtentext und in den Labels des Skills angezeigt wird.

Word Stemming-Unterstützung in Fuzzy Match

Ab Release 22.10 basiert die Fuzzy-Zuordnung für Listenwertentitys auf Wortstammdaten, wobei eine Wertübereinstimmung auf der lexikalischen Wurzel des Wortes basiert. In früheren Versionen wurde der Fuzzy-Abgleich durch teilweisen Abgleich und automatische Korrektur aktiviert. Dieser Ansatz war zwar tolerant gegenüber Tippfehlern in der Benutzereingabe, einschließlich transponierter Wörter, konnte aber auch zu Übereinstimmungen mit mehreren Werten innerhalb der Wertelistenentity führen. Bei Stemming wird diese Streuung eliminiert: Übereinstimmungen basieren auf der Wortreihenfolge der Benutzereingabe, sodass entweder eine einzelne Übereinstimmung oder gar keine Übereinstimmung erfolgt. Beispiel: "Lovers Veggie" würde keine Übereinstimmungen ergeben, aber "Veggie Lover" würde mit dem Veggie Lovers-Wert einer Pizzatypentität übereinstimmen. (Beachten Sie, dass "Liebhaber" stammte.) Stoppwörter, wie Artikel und Präpositionen, werden in extrahierten Werten ignoriert, ebenso wie Sonderzeichen. Beispiel: Sowohl "Veggie the Lover" als auch "Veggie//////Lover" würden mit dem Wert "Veggie Lovers" übereinstimmen.

ML-Entitys erstellen

ML-Entitys sind ein modellgesteuerter Ansatz für die Entityextraktion. Wie Intents erstellen Sie ML-Entitys aus Trainingsäußerungen - wahrscheinlich dieselben Trainingsäußerungen, die Sie zum Erstellen Ihrer Intents verwendet haben. Bei ML-Entitys kommentieren Sie jedoch die Wörter in den Trainingsäußerungen, die einer Entity entsprechen.

Zunächst können Sie einige der Schulungsdaten selbst kommentieren. Wie bei Intents können Sie jedoch ein abwechslungsreicheres (und daher robustes) Schulungsset durch Crowd Sourcing entwickeln. Wie in den Schulungsrichtlinien erwähnt, erfordert die robuste Entityerkennung im gesamten Trainingsset 600 bis 5000 Vorkommen jeder ML-Entity. Wenn die Intent-Trainingsdaten bereits umfangreich sind, möchten Sie sie möglicherweise per Crowdsourcing abrufen, anstatt jede Äußerung selbst zu kommentieren. In beiden Fällen sollten Sie Ihre Trainingsdaten analysieren, um herauszufinden, ob die Entitys gleichmäßig dargestellt werden und ob die Entitywerte ausreichend variiert sind. Wenn die Anmerkungen vollständig sind, trainieren Sie das Modell und testen es dann. Nachdem Sie die in den Testläufen erkannten Entitys geprüft haben, können Sie das Korpus aktualisieren und erneut trainieren, um die Genauigkeit zu verbessern.

So erstellen Sie eine ML-Entity:
  1. Klicken Sie auf + Entity hinzufügen.
  2. Füllen Sie das Dialogfeld "Entity erstellen" aus. Beachten Sie, dass der Name und die Beschreibung auf den Crowdworkerseiten für Entityanmerkungsjobs angezeigt werden.
    • Geben Sie einen Namen ein, der den kommentierten Inhalt identifiziert. Ein eindeutiger Name hilft Crowdworkern.
    • Geben Sie eine Beschreibung ein. Obwohl dies eine optionale Eigenschaft ist, verwenden Crowdworker sie zusammen mit der Eigenschaft "Name", um Entitys zu unterscheiden.
    • Wählen Sie in der Liste die Option ML-Entity aus.
  3. Aktivieren Sie Systementityübereinstimmungen ausschließen, wenn die Trainingsanmerkungen Namen, Speicherorte, Zahlen oder anderen Inhalt enthalten, der möglicherweise mit Systementitywerten in Konflikt geraten könnte. Wenn Sie diese Option festlegen, wird verhindert, dass das Modell Systementitätswerte extrahiert, die sich in der Eingabe befinden, die für diese ML-Entity aufgelöst wird. Es erzwingt eine Grenze um diese Eingabe, sodass das Modell sie nur als ML-Entitywert erkennt und sie nicht weiter für Systementitywerte parst. Sie können diese Option für Mischentitys festlegen, die ML-Entitys referenzieren.
  4. Klicken Sie auf Erstellen.
  5. Klicken Sie auf +Value Listenentitys, um diese Entity mit bis zu fünf Wertelistenentitys zu verknüpfen. Dies ist optional. Wenn Sie jedoch eine ML-Entity mit einer Wertelistenentity verknüpfen, werden die kontextbezogene Extraktion der ML-Entity und die kontextunabhängige Extraktion der Wertelistenentity kombiniert.
  6. Klicken Sie auf die Registerkarte DataSet. Auf dieser Seite werden alle Äußerungen für jede ML-Entity in Ihrem Skill aufgeführt. Dazu gehören die Äußerungen, die Sie selbst zum Bootstrap der Entity hinzugefügt haben, die Äußerungen, die aus Crowd Sourcing-Jobs weitergeleitet wurden oder als JSON-Objekte importiert wurden. Auf dieser Seite können Sie Äußerungen manuell oder per Bulkvorgang hinzufügen, indem Sie eine JSON-Datei hochladen. Sie können die Äußerungen auch auf dieser Seite verwalten, indem Sie sie bearbeiten (einschließlich Anmerkungen oder erneute Anmerkungen) oder löschen, importieren und exportieren.
    • Äußerungen manuell hinzufügen:
      • Klicken Sie auf Äußerung hinzufügen. Nachdem Sie die Äußerung hinzugefügt haben, klicken Sie auf Annotationen bearbeiten, um die Entityliste zu öffnen.
        Hinweis

        Sie können immer nur eine Äußerung gleichzeitig hinzufügen. Wenn Sie Äußerungen im Bulkverfahren hinzufügen möchten, können Sie sie entweder über einen Entityanmerkungsjob hinzufügen oder eine JSON-Datei hochladen.
      • Markieren Sie den für die ML-Entity relevanten Text, und vervollständigen Sie die Beschriftung, indem Sie die ML-Entity aus der Entityliste auswählen. Sie können eine Anmerkung entfernen, indem Sie im Label auf x klicken.
        Dies ist ein Bild des Symbols "Löschen" in einer Anmerkung.

    • Fügen Sie Äußerungen aus einer JSON-Datei hinzu. Diese JSON-Datei enthält eine Liste der Äußerungsobjekte.
      [
        {
          "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
              }
            ]
          }
        }
      ]
      Sie können sie hochladen, indem Sie auf Weitere Informationen > Importieren klicken, um sie aus Ihrem lokalen System abzurufen.
      Das Objekt entities beschreibt die ML-Entitys, die in der Äußerung identifiziert wurden. Obwohl das vorherige Beispiel ein einzelnes entities-Objekt für jede Äußerung veranschaulicht, kann eine Äußerung mehrere ML-Entitys enthalten, was mehrere entities-Objekte bedeutet:
      [
        {
          "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 identifiziert die ML-Entity selbst, und entityValue identifiziert den für die Entity beschrifteten Text. entityValue ist ein optionaler Schlüssel, mit dem Sie den beschrifteten Text anhand von Änderungen an der Äußerung validieren können. Das Label selbst wird durch die Eigenschaften beginOffset und endOffset identifiziert, die den Offset für die Zeichen darstellen, die mit dem Label beginnen und enden. Dieser Offset wird durch Zeichen und nicht durch Wort bestimmt und aus dem ersten Zeichen der Äußerung (0-1) berechnet.
      Hinweis

      Sie können die ML-Entitys nicht aus dieser JSON erstellen. Sie müssen vorhanden sein, bevor Sie die Datei hochladen.
      Wenn Sie die Offsets nicht bestimmen möchten, können Sie das Objekt entities nicht definieren und die Labels dann anwenden, nachdem Sie die JSON-Datei hochgeladen haben.
      [
        {
          "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": []
            
          }
        }
      ]
      Das System prüft auf Duplikate, um redundante Einträge zu vermeiden. Nur Änderungen an der entities-Definition in der JSON-Datei werden angewendet. Wenn eine Äußerung in der JSON-Datei geändert wurde, wird sie als neue Äußerung betrachtet.
    • Mit Anmerkungen versehene Äußerungen bearbeiten:
      • Klicken Sie auf Bearbeiten Dieses Bild zeigt das Symbol "ML-Entity bearbeiten"., um die Anmerkung zu entfernen.
        Hinweis

        Eine geänderte Äußerung wird als neue (nicht kommentierte) Äußerung betrachtet.
      • Klicken Sie auf Annotationen bearbeiten, um die Entityliste zu öffnen.
      • Markieren Sie den Text, und wählen Sie dann eine ML-Entity aus der Entityliste aus.
      • Wenn Sie eine Anmerkung entfernen müssen, klicken Sie im Label auf x.
  7. Wenn Sie die Anmerkungen abgeschlossen haben. Klicken Sie auf Schulung, um sowohl die Trainer-Zeit als auch das Entitymodell zu aktualisieren.
  8. Testen Sie die Erkennung, indem Sie eine Testphrase im Äußerungstester eingeben, idealerweise eine mit einem Wert, der in keinen Trainingsdaten enthalten ist. Prüfen Sie die Ergebnisse, um herauszufinden, ob das Modell die richtige ML-Entity ermittelt hat und ob der Text korrekt und vollständig beschriftet wurde.
  9. Ordnen Sie die ML-Entity einem Intent zu.

Systementitätsübereinstimmungen ausschließen

Wenn Sie Systementitätsübereinstimmungen ausschließen aktivieren, verhindert das Modell, dass zuvor extrahierte Systementitätswerte durch konkurrierende Werte innerhalb der Grenzen einer ML-Entity ersetzt werden. Wenn diese Option aktiviert ist, werden die Entitywerte DATE_TIME und ML durch "Besprechung am Montag erstellen, um den Liefergegenstand am Dienstag zu besprechen" getrennt, indem die zutreffende Entity DATE_TIME (Montag) aufgelöst und "Dienstag" im als ML-Entity anerkannten Text ignoriert wird ("Dienstag-Liefergegenstand besprechen").

Wenn diese Option deaktiviert ist, löst der Skill stattdessen zwei DATE_TIME-Entitywerte auf: Montag und Dienstag. Kollabierende Werte wie diese verringern die Benutzererfahrung, indem sie einen zuvor geschlitzten Entitywert mit einem unbeabsichtigten Wert aktualisieren oder eine Disambiguierungseingabeaufforderung unterbrechen, die den Ablauf der Unterhaltung unterbricht.
Hinweis

Sie können die Option Systementitätsübereinstimmungen ausschließen für Mischentityentitys festlegen, die eine ML-Entity referenzieren.

Wertelistenentitys aus einer CSV-Datei importieren

Anstatt die Entitys einzeln zu erstellen, können Sie beim Importieren einer CSV-Datei mit den Entitydefinitionen ganze Entitysets erstellen.

Diese CSV-Datei enthält Spalten für den Entitynamen (entity), den Entitywert (value) und Synonyme (synonyms). Sie können diese Datei von Grund auf neu erstellen oder eine CSV, die aus einem Export erstellt wurde, wiederverwenden.

Unabhängig davon, ob Sie neu starten oder eine exportierte Datei verwenden, müssen Sie die Version des Zielskills für den Import berücksichtigen, da das Format und der Inhalt für die native Sprachunterstützung in Version 20.12 geändert wurden. Obwohl Sie eine CSV-Datei aus einem früheren Release in den meisten Fällen problemlos in einen Skill mit 20.12 importieren können, müssen Sie eventuell einige Kompatibilitätsprobleme beheben. Sehen wir uns zunächst das Format einer Datei vor 20.12 an. Diese Datei ist in die folgenden Spalten unterteilt: entity, value und synonyms. Beispiel:
entity,value,synonyms
PizzaSize,Large,lrg:lrge:big
PizzaSize,Medium,med
PizzaSize,Small,little
Bei Skills, die mit Version 20.12 erstellt oder auf Version 20.12 upgegradet wurden, sind in den Importdateien Sprachtags an die Spaltenüberschriften value und synonyms angehängt. Beispiel: Wenn die primäre native Sprache des Skills Englisch ist (en), heißen die Spalten value und synonyms en:value und en:synonyms:
entity,en:value,en:synonyms
PizzaSize,Large,lrg:lrge:big
PizzaSize,Medium,med
PizzaSize,Small,
PizzaSize,Extra Large,XL
CSV-Dateien, die mehrere native Sprachen unterstützen, erfordern zusätzliche Sets von value- und synonyms-Spalten für jede sekundäre Sprache. Wenn die sekundäre Sprache eines nativen englischen Skills Französisch ist (fr), enthält die CSV-Datei die Spalten fr:value und fr:synonyms als Entsprechungen zu den en-Spalten:
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,
Beachten Sie Folgendes, wenn Sie CSV-Dateien versionsübergreifend importieren möchten:
  • Wenn Sie eine CSV-Datei vor 20.12 in einen Skill mit 20.12 importieren (einschließlich solcher, die native Sprachen unterstützen oder Übersetzungsservices verwenden), werden die Werte und Synonyme als primäre Sprachen importiert.
  • Alle Entitywerte für die primäre und die sekundäre Sprache müssen innerhalb einer Entity eindeutig sein. Daher können Sie keine CSV-Datei importieren, wenn für eine einzelne Entity ein Wert mehrmals definiert wurde. In Versionen vor 20.12 können doppelte Werte vorhanden sein, wobei Werte aufgrund von Variationen in der Groß-/Kleinschreibung als eindeutig betrachtet werden können. Das gilt nicht für 20.12, wo die Beachtung der Groß-/Kleinschreibung strenger durchgesetzt wird. Beispiel: Sie können keine CSV-Datei importieren, wenn sie sowohl PizzaSize, Small als auch PizzaSize, SMALL enthält. Wenn Sie ein Upgrade auf Version 20.12 durchführen möchten, müssen Sie zunächst alle Entitywerte auflösen, die identisch sind, sich jedoch nur durch die Groß-/Kleinschreibung unterscheiden.
  • Die primäre Sprachunterstützung gilt für Skills, die mit Version 20.12 und höher erstellt wurden. Daher müssen Sie zuerst Sprachtags und alle sekundären Spracheinträge entfernen, bevor Sie eine CSV-Datei mit Version 20.12 in einen mit einer früheren Version erstellten Skill importieren können.
Wenn Sie eine CSV-Datei der Version 20.12 in einen Skill der Version 20.12 importieren, gilt Folgendes:
  • Sie können eine mehrsprachige CSV-Datei in Skills importieren, die keine native Sprachunterstützung verwenden, einschließlich solcher, die Übersetzungsservices verwenden.
  • Wenn Sie eine mehrsprachige CSV-Datei in einen Skill importieren, der native Sprachen unterstützt oder Übersetzungsservices verwendet, werden nur Zeilen importiert, die einen gültigen Wert für die primäre Sprache angeben. Der Rest wird ignoriert.
So erstellen Sie Entitys über einen Import (unter Beachtung dieser Einschränkungen):
  1. Klicken Sie in der seitlichen Navigationsleiste auf Entitys (Dieses Bild zeigt das Symbol "Entitys".).

  2. Klicken Sie auf Mehr, wählen Sie Werte in der Liste importieren und dann die Datei .csv im lokalen System aus.
    Beschreibung von import-entities.png folgt
    Beschreibung der Abbildung import-entities.png

  3. Fügen Sie die Entity(s) einem Intent (oder einer Entityliste und dann einem Intent) hinzu.

Wertelistenentitys in eine CSV-Datei exportieren

Sie können die Werte und Synonyme in einer CSV-Datei zur Wiederverwendung in einem anderen Skill exportieren. Die exportierten CSV-Dateien haben dasselbe Format wie die CSV-Dateien, die zum Erstellen von Entitys durch Importe verwendet werden. Das heißt, sie enthalten die Spalten entity, value und synonyms. Diese CVS-Dateien weisen releasespezifische Anforderungen auf, die sich auf ihre Wiederverwendung auswirken können.
  • Die CSV-Dateien, die aus mit Version 20.12 erstellten oder auf die Version 20.12 upgegradeten Skills exportiert wurden, sind für die native Sprachunterstützung ausgestattet, indem die Tags für die primäre (und manchmal die sekundäre) Sprache an die Spalten value und synonyms angehängt sind. Beispiel: Die CSV-Datei im folgenden Snippet enthält ein Set aus value- und synonyms-Spalten für die primäre Sprache des Skills Englisch (en) und ein anderes Set für die sekundäre Sprache Französisch (fr):
    entity,en:value,en:synonyms,fr:value,fr:synonyms
    Die Tags für die primäre Sprache sind in allen CSV-Dateien mit 20.12 enthalten, unabhängig von der nativen Sprachunterstützung. Sie sind in Skills vorhanden, die keine Übersetzungen (nativ oder über einen Übersetzungsservice) durchführen, sowie in Skills, die Übersetzungsservices nutzen.
  • Die aus Skills exportierten CSV-Dateien mit Versionen vor 20.12 enthalten die Spalten "entity", "value" und "synonyms", aber keine Sprachtags.
So exportieren Sie Wertelistenentitys:
  1. Klicken Sie in der seitlichen Navigationsleiste auf Entitys (Dieses Bild zeigt das Symbol "Entitys".).

  2. Klicken Sie auf Mehr, wählen Sie Werteliste-Entitys exportieren aus, und speichern Sie die Datei.
    Beschreibung von export-entities.png folgt
    Beschreibung der Abbildung export-entities.png

    Die exportierte CSV-Datei (.csv) wird nach Ihrem Skill benannt. Wenn Sie diese Datei als Import verwenden möchten, müssen Sie möglicherweise einige der unter Intents aus einer CSV-Datei importieren beschriebenen Änderungen vornehmen, wenn Sie sie in Skills der Version 20.12 oder früheren Versionen importieren oder daraus exportieren möchten.

Dynamische Entitys erstellen

Dynamische Entitywerte werden über die Endpunkte der API für dynamische Entitys verwaltet, die unter REST-API für Oracle Digital Assistant beschrieben sind. Um Entitywerte und Synonyme hinzuzufügen, zu ändern und zu löschen, müssen Sie zunächst eine dynamische Entity erstellen, um die entityId zu generieren, die in den REST-Aufrufen verwendet wird.

So erstellen Sie die dynamische Entity:
  1. Klicken Sie auf + Entity.
  2. Wählen Sie in der Liste "Typ" den Eintrag Dynamische Entitys aus.
  3. Wenn der Backend-Service nicht verfügbar ist oder noch keine Werte übertragen hat oder Sie den Service nicht verwalten, klicken Sie auf + Wert. Dann können Sie Pseudowerte hinzufügen, die Sie zu Testzwecken verwenden können. Normalerweise fügen Sie diese statischen Werte hinzu, bevor die dynamische Entityinfrastruktur eingerichtet wird. Diese Werte gehen verloren, wenn Sie einen Skill klonen, versionieren oder exportieren. Nachdem Sie die Entitywerte über die API bereitgestellt haben, können Sie diese Werte überschreiben oder beibehalten (in den meisten Fällen werden sie jedoch überschrieben).
  4. Klicken Sie auf Erstellen.

Tipp:

Wenn die API die Entitywerte beim Testen der Unterhaltung aktualisiert, klicken Sie auf Zurücksetzen, um die Unterhaltung neu zu starten.
Hinweise für Serviceentwickler:
  • Sie können die dynamischen Entitys, die für einen Skill konfiguriert sind, über die generierte entityId mit der botId abfragen. Sie nehmen diese Werte in die Aufrufe auf, um die Push-Anforderungen und Objekte zu erstellen, mit denen die Entitywerte aktualisiert werden.
  • Eine Entity darf nicht mehr als 150.000 Werte enthalten. Um die Wahrscheinlichkeit zu verringern, dass dieses Limit überschritten wird, wenn Sie mit großen Datenmengen arbeiten, senden Sie PATCH-Anforderungen mit Löschvorgängen, bevor Sie PATCH-Anforderungen mit Hinzufügevorgängen senden.
Hinweis

Dynamische Entitys werden nur auf Instanzen von Oracle Digital Assistant unterstützt, die auf Oracle Cloud Infrastructure bereitgestellt wurden (auch als Cloud-Infrastruktur der 2. Generation bezeichnet). Wenn Ihre Instanz auf Oracle Cloud Platform bereitgestellt ist (wie alle Instanzen der Version 19.4.1), können Sie dieses Feature nicht verwenden.

Richtlinien zum Erstellen von ML-Entitys

Im Folgenden finden Sie einen allgemeinen Ansatz zum Erstellen einer ML-Entity.
  1. Erstellen Sie präzise ML-Entitys. Die ML-Entitydefinition ist die Basis eines nützlichen Trainingssets. Daher ist Klarheit in Bezug auf den Namen und die Beschreibung wichtig, die Crowdworkern helfen, Äußerungen zu kommentieren.

    Da Crowdworker sich auf die Beschreibungen und Namen der ML-Entitys verlassen, müssen Sie sicherstellen, dass Ihre ML-Entitys leicht voneinander unterschieden werden können, insbesondere wenn es potenzielle Überschneidungen gibt. Wenn die Unterschiede für Sie nicht klar sind, ist es wahrscheinlich, dass Crowdworker verwirrt werden. Beispiel: Die Entitäten "Händler" und "Kontotyp" können in einigen Fällen schwer zu unterscheiden sein. In "Überweisen Sie 100 US-Dollar von meinem Sparkonto auf Pacific Gas and Electric" können Sie "Einsparungen" eindeutig als Kontotyp und Pacific Gas and Electric als Händler kennzeichnen. Die Grenze zwischen den beiden kann jedoch in Sätzen wie "Muss Geld an John senden, 100 Dollar von meinen Ersparnissen auf sein Girokonto überweisen" verschwommen sein. Ist "Konto prüfen" ein Kontotyp oder ein Händlername? In diesem Fall können Sie entscheiden, dass jeder Empfänger immer ein Händlername und nicht ein Kontotyp sein sollte.

  2. Berücksichtigen Sie bei der Vorbereitung des Crowd Sourcing der Trainingsäußerungen die typische Benutzereingabe für verschiedene Entityextraktionskontexte. Beispiel: Kann der Wert in der anfänglichen Nachricht des Benutzers extrahiert werden (anfänglicher Äußerungskontext), oder wird er aus Antworten auf die Prompts des Skills extrahiert (Slot-Äußerungskontext)?
    Kontext Beschreibung Beispieläußerungen (entdeckte ML-Entitywerte in Fettschrift)
    Kontext der ersten Äußerung Eine Nachricht, die in der Regel gut strukturiert ist und ML-Entitywerte enthält. Beispiel: Bei einem Skill für Spesenabrechnungen enthält die Äußerung einen Wert, den das Modell für eine ML-Entity namens "Händler" ermitteln kann. Erstellen Sie am 3. Mai eine Spesenposition für Teamdinner im John's Pasta Shop für 85 US-Dollar
    Kontext für Slotäußerung Eine Benutzernachricht, die als Antwort auf eine Eingabeaufforderung die ML-Entity bereitstellt, entweder aufgrund des Konversationsdesigns (der Skill fordert mit "Wer ist der Händler?" auf) oder um einen Wert zu setzen, weil er nicht von einer zuvor weitergeleiteten Antwort bereitgestellt wurde.

    In anderen Fällen wurde der ML-Entitywert möglicherweise bereits angegeben, kann jedoch in anderen Benutzernachrichten in derselben Unterhaltung enthalten sein. Beispiel: Der Skill fordert Benutzer möglicherweise auf, zusätzliche Spesendetails anzugeben oder das Bild einer hochgeladenen Quittung zu beschreiben.

    • Der Händler ist John's Pasta Shop.
    • Teamessen. Betrag 85 $. John's Pasta Shop.
    • Die Beschreibung lautet TurboTaxi von zu Hause zum Flughafen CMH.
    • Grandiose Shack Hotel-Quittung für Cloud-Symposium
  3. Sammeln Sie Ihre Trainings- und Testdaten.
    • Wenn Sie bereits über eine ausreichende Sammlung von Äußerungen verfügen, können Sie diese für die Entityverteilung und Entitywertdiversität bewerten, bevor Sie einen Entityanmerkungsjob starten.
    • Wenn Sie nicht genügend Trainingsdaten haben oder von Grund auf neu beginnen, starten Sie einen Intent-Paraphrasierungsjob. Um brauchbare (und zahlreiche) Äußerungen für Schulungen und Tests zu sammeln, integrieren Sie den Entitykontext in den Job, indem Sie Aufgaben für jedes Intent erstellen. Um verschiedene Phrasen zu sammeln, sollten Sie jedes Intent nach Konversationskontext aufschlüsseln.
    • Stellen Sie Crowdworkern für die Aufforderung der Aufgabe einen Kontext zur Verfügung, und fragen Sie sie: "Wie würden Sie antworten?" oder "Was würden Sie sagen?" Verwenden Sie die zugehörigen Hints, um Beispiele anzugeben und verschiedene Kontexte zu veranschaulichen. Beispiel:
      Prompt Hinweis
      Sie sprechen mit einem Bot für Spesenabrechnungen und möchten eine Spesenposition erstellen. Was wäre das erste, was Sie sagen würden? Stellen Sie sicher, dass der Händlername in der Äußerung enthalten ist. Sie könnten so etwas sagen wie: "Erstellen Sie am 3. Mai eine Kosten für das Team-Dinner im John's Pasta Shop für 85 US-Dollar."
      Diese Aufgabe fragt nach Wortgruppen, die nicht nur die Konversation initiieren, sondern auch einen Händlernamen enthalten. Möglicherweise möchten Sie auch Äußerungen verwenden, die Antworten widerspiegeln, die vom Skill angefordert werden, wenn der Benutzer keinen Wert angibt. Beispiel: "Händler ist Johns Pasta Shop" als Antwort auf die Aufforderung "Wer ist der Händler?" des Skills.
      Prompt Hinweis
      Sie haben eine Spesenposition an einen Bot für Spesenabrechnungen weitergeleitet, aber keinen Händlernamen angegeben. Wie sollen Sie antworten? Geben Sie den Händler an. Zum Beispiel: "Händler ist John's Pasta Shop."
      Sie haben ein Bild einer Quittung in einen Bot für Spesenabrechnungen hochgeladen. Sie werden nun aufgefordert, die Quittung zu beschreiben. Wie sollen Sie antworten? Geben Sie den Namen des Händlers auf der Quittung an. Zum Beispiel: "Grandiose Shack Hotel Quittung für Cloud-Symposium."
      Um falsch positive Ergebnisse für Tests zu testen - Wörter und Ausdrücke, die das Modell nicht als ML-Entitys identifizieren sollte - möchten Sie möglicherweise auch "negative Beispiele" sammeln. Diese Äußerungen enthalten einen ML-Entitywert.
      Kontext Beispieläußerungen
      Kontext der ersten Äußerung Zahlen Sie mich für das Abendessen am Dienstag zurück
      Kontext für Slotäußerung
      • Pos Präsentation Abendessen. Betrag $ 50. 4 Personen.
      • Beschreibung xerox Mittagessen für 5 Personen
      • Hotelquittung für Interviewaufenthalt
    • Sammeln Sie ein großes Trainingsset, indem Sie eine angemessene Anzahl von Paraphrasen pro Intent festlegen. Damit das Modell erfolgreich verallgemeinert werden kann, muss das Dataset für jede ML-Entity zwischen 500 und 5000 Vorkommen enthalten. Idealerweise sollten Sie das untere Ende dieses Bereichs vermeiden.
  4. Nachdem die Crowdworker den Job abgeschlossen haben (oder genügend Äußerungen abgeschlossen haben, damit Sie den Job abbrechen können), können Sie die Äußerungen hinzufügen oder einen Intent-Validierungsjob starten, um sie zu verifizieren. Sie können die Ergebnisse auch zur weiteren Überprüfung auf Ihr lokales System herunterladen.
  5. Reservieren Sie etwa 20% der Äußerungen für Tests. So erstellen Sie CSVs für den Äußerungstester aus den heruntergeladenen CSVs für Intent-Paraphrasierungs- und Intent-Validierungsjobs:
    • Bei Intent-Paraphrasierungsjobs: Übertragen Sie den Inhalt in der Spalte result (die von Crowdworkern bereitgestellten Äußerungen) in die Spalte utterance in der CSV-Datei für Äußerungstester. Übertragen Sie den Inhalt der Spalte intentName in die Spalte expectedIntent in der CSV-Datei des Äußerungstests.
    • Bei Intent-Validierungsjobs: Übertragen Sie den Inhalt in der Spalte prompt (die von Crowdworkern bereitgestellten Äußerungen) in die Spalte utterance in der CSV-Datei für Äußerungstester. Übertragen Sie den Inhalt der Spalte intentName in die Spalte expectedIntent in der CSV-Datei des Äußerungstests.
  6. Fügen Sie die restlichen Äußerungen einer CSV-Datei mit einer einzelnen Spalte, utterance, hinzu. Erstellen Sie einen Entityannotationsjob, indem Sie diese CSV hochladen. Da Mitarbeiter die Entitywerte beschriften, klassifizieren sie negative Äußerungen wahrscheinlich als "Ich bin mir nicht sicher" oder "Keine der Entitys gilt".
  7. Nachdem der Entityanmerkungsjob abgeschlossen ist, können Sie die Ergebnisse hinzufügen oder einen Entityvalidierungsjob starten, um die Labeling zu prüfen. Nur die Äußerungen, die Mitarbeiter in einem Entityvalidierungsjob als korrekt erachten, können dem Korpus hinzugefügt werden.

    Tipp:

    Sie können die Anmerkungslabels auf der Registerkarte "Dataset" der Seite "Entitys" hinzufügen, entfernen oder anpassen.
  8. Trainieren Sie die Entity, indem Sie Entity auswählen.
  9. Führen Sie Testfälle aus, um die Entityerkennung mit den Äußerungen zu bewerten, die Sie über den Intent-Paraphrasierungsjob reserviert haben. Sie können diese Äußerungen in verschiedene Testsuites aufteilen, um verschiedenes Verhalten zu testen (unbekannte Werte, Satzzeichen, die möglicherweise nicht in den Trainingsdaten vorhanden sind, falsch positive Ergebnisse usw.). Da eine große Anzahl dieser Äußerungen vorhanden sein kann, können Sie Testsuites erstellen, indem Sie eine CSV-Datei in den Äußerungstester hochladen.

    Hinweis

    Der Äußerungstester zeigt nur Entitylabels für das Bestehen von Testfällen an. Verwenden Sie stattdessen einen Schnelltest, um die Labels für Äußerungen anzuzeigen, die unterhalb des Konfidenzschwellenwerts aufgelöst werden.
  10. Verwenden Sie die Ergebnisse, um das Dataset zu verfeinern. Fügen Sie die Trainingsäußerungen iterativ hinzu, entfernen oder bearbeiten Sie sie, bis Testlaufergebnisse darauf hinweisen, dass das Modell ML-Entitys effektiv identifiziert.
    Hinweis

    Um unbeabsichtigte Entityübereinstimmungen zu verhindern, die das Benutzererlebnis beeinträchtigen, aktivieren Sie Systementityübereinstimmungen ausschließen, wenn die Trainingsdaten Namen, Speicherorte und Zahlen enthalten.

ML-Entitätsschulungsrichtlinien

Das Modell verallgemeinert eine Entity sowohl mit dem Kontext um ein Wort (oder Wörter) als auch mit den lexikalischen Informationen über das Wort selbst. Damit das Modell effektiv verallgemeinert werden kann, wird empfohlen, dass die Anzahl der Annotationen pro Entity zwischen 500 und 5000 liegt. Möglicherweise haben Sie bereits ein Trainingsset, das groß genug ist und die Variation der Entitywerte aufweist, die Sie von Endbenutzern erwarten würden. In diesem Fall können Sie einen Entity Annotation-Job starten und die Ergebnisse dann in die Trainingsdaten aufnehmen. Wenn Sie jedoch nicht genügend Trainingsdaten haben oder die Daten, die Sie haben, nicht genügend Abdeckung für alle ML-Entitys haben, können Sie Äußerungen aus Intent-Paraphrasierungsjobs mit Crowdsourcing erfassen.

Unabhängig von der Quelle sollte die Verteilung von Entitywerten Ihre allgemeine Vorstellung der Werte widerspiegeln, auf die das Modell stoßen kann. Um das Modell angemessen zu trainieren:
  • Verwenden Sie nicht dieselben Entitywerte in den Trainingsdaten. Wiederkehrende Entitywerte in den Trainingsdaten verhindern, dass das Modell unbekannte Werte verallgemeinert. Beispiel: Die ML-Entity erkennt eine Vielzahl von Werten, die Entity wird jedoch nur durch 10-20 verschiedene Werte in Ihrem Trainingsset dargestellt. In diesem Fall verallgemeinert sich das Modell nicht, auch wenn es zwei oder dreitausend Anmerkungen gibt.
  • Variieren Sie die Anzahl der Wörter für jeden Entitywert. Wenn Sie erwarten, dass Benutzer Entitywerte mit einer Länge von drei bis fünf Wörtern eingeben, Ihre Trainingsdaten jedoch mit Entitywerten mit einem oder zwei Wörtern versehen werden, kann das Modell die Entity möglicherweise nicht identifizieren, wenn die Anzahl der Wörter zunimmt. In einigen Fällen kann es die Entität nur teilweise identifizieren. Das Modell geht von der Entitygrenze aus den von Ihnen angegebenen Äußerungen aus. Wenn Sie das Modell für Werte mit ein oder zwei Wörtern trainiert haben, wird davon ausgegangen, dass die Entitygrenze nur ein oder zwei Wörter lang ist. Durch das Hinzufügen von Entitys mit mehr Wörtern kann das Modell längere Entitygrenzen erkennen.
  • Die Länge der Äußerung sollte Ihren Anwendungsfall und die erwartete Benutzereingabe widerspiegeln. Sie können das Modell trainieren, um Entitys für Nachrichten unterschiedlicher Länge zu ermitteln, indem Sie kurze und lange Äußerungen erfassen. Die Äußerungen können sogar mehrere Ausdrücke enthalten. Wenn Sie kurze Äußerungen erwarten, die den Kontext für die Slotfüllung widerspiegeln, erfassen Sie die Beispieldaten entsprechend. Wenn Sie Äußerungen für das anfängliche Kontextszenario antizipieren, sollte das Trainingsset auch vollständige Wortgruppen enthalten.
  • Satzzeichen einschließen. Wenn Entitynamen Sonderzeichen erfordern, wie "-" und "/", nehmen Sie sie in die Entitywerte in den Trainingsdaten auf.
  • Stellen Sie sicher, dass alle ML-Entitys in Ihren Trainingsdaten gleichmäßig dargestellt werden. Ein nicht ausgeglichenes Trainingsset enthält zu viele Instanzen einer Entity und zu wenige Instanzen einer anderen Entity. Die Modelle, die aus nicht ausgeglichenen Trainingssets erstellt werden, erkennen die Entity manchmal nicht mit zu wenigen Instanzen und führen zu einer Überprognose für die Entitys mit überproportional hohen Instanzen. Das führt zu Falsch-Positiven.

Richtlinien für ML-Entitätstests

Bevor Sie Ihren Skill trainieren, sollten Sie etwa 20% der nicht kommentierten Äußerungen reservieren, um herauszufinden, wie das Modell verallgemeinert wird, wenn es Äußerungen oder Entitywerte enthält, die nicht Teil seiner Trainingsdaten sind. Diese Gruppe von Äußerungen ist möglicherweise nicht Ihr einziges Testset, je nachdem, welches Verhalten Sie bewerten möchten. Beispiel:
  • Verwenden Sie nur Slotkontextäußerungen, um herauszufinden, wie gut das Modell Entitys mit weniger Kontext vorhersagt.
  • Verwenden Sie Äußerungen mit "unbekannten" Werten, um herauszufinden, wie gut das Modell mit Werten verallgemeinert wird, die nicht in den Trainingsdaten vorhanden sind.
  • Verwenden Sie Äußerungen ohne ML-Entitys, um herauszufinden, ob das Modell falsche positive Ergebnisse erkennt.
  • Verwenden Sie Äußerungen, die ML-Entitywerte mit Satzzeichen enthalten, um herauszufinden, wie gut das Modell mit ungewöhnlichen Entitywerten abschneidet.