Entitys erstellen
So erstellen Sie eine Entity:
Wertelistenentitys für mehrere Sprachen
Tipp:
Um sicherzustellen, dass Ihr Skill Antworten konsistent in der erkannten Sprache ausgibt, nehmen Sie immeruseFullEntityMatches: 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.
- Klicken Sie auf + Entity hinzufügen.
- 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.
- 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.
- Klicken Sie auf Erstellen.
- 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.
- 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.
- 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.
- Fügen Sie Äußerungen aus einer JSON-Datei hinzu. Diese JSON-Datei enthält eine Liste der Äußerungsobjekte.
Sie können sie hochladen, indem Sie auf Weitere Informationen > Importieren klicken, um sie aus Ihrem lokalen System abzurufen.[ { "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 } ] } } ]
Das Objektentities
beschreibt die ML-Entitys, die in der Äußerung identifiziert wurden. Obwohl das vorherige Beispiel ein einzelnesentities
-Objekt für jede Äußerung veranschaulicht, kann eine Äußerung mehrere ML-Entitys enthalten, was mehrereentities
-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, undentityValue
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 EigenschaftenbeginOffset
undendOffset
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 ObjektDas System prüft auf Duplikate, um redundante Einträge zu vermeiden. Nur Änderungen an derentities
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": [] } } ]
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
, 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.
- Klicken Sie auf Bearbeiten
- Äußerungen manuell hinzufügen:
- Wenn Sie die Anmerkungen abgeschlossen haben. Klicken Sie auf Schulung, um sowohl die Trainer-Zeit als auch das Entitymodell zu aktualisieren.
- 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.
- 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").
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.
entity
, value
und synonyms
. Beispiel:entity,value,synonyms
PizzaSize,Large,lrg:lrge:big
PizzaSize,Medium,med
PizzaSize,Small,little
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,
- 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 auchPizzaSize, 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.
- 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.
-
Klicken Sie in der seitlichen Navigationsleiste auf Entitys (
).
-
Klicken Sie auf Mehr, wählen Sie Werte in der Liste importieren und dann die Datei
.csv
im lokalen System aus.
Beschreibung der Abbildung import-entities.png -
Fügen Sie die Entity(s) einem Intent (oder einer Entityliste und dann einem Intent) hinzu.
Wertelistenentitys in eine CSV-Datei exportieren
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
undsynonyms
angehängt sind. Beispiel: Die CSV-Datei im folgenden Snippet enthält ein Set ausvalue
- undsynonyms
-Spalten für die primäre Sprache des Skills Englisch (en
) und ein anderes Set für die sekundäre Sprache Französisch (fr
):
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.entity,en:value,en:synonyms,fr:value,fr:synonyms
- Die aus Skills exportierten CSV-Dateien mit Versionen vor 20.12 enthalten die Spalten "entity", "value" und "synonyms", aber keine Sprachtags.
-
Klicken Sie in der seitlichen Navigationsleiste auf Entitys (
).
-
Klicken Sie auf Mehr, wählen Sie Werteliste-Entitys exportieren aus, und speichern Sie die Datei.
Beschreibung der Abbildung export-entities.pngDie 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.
- Klicken Sie auf + Entity.
- Wählen Sie in der Liste "Typ" den Eintrag Dynamische Entitys aus.
- 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).
- 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.- Sie können die dynamischen Entitys, die für einen Skill konfiguriert sind, über die generierte
entityId
mit derbotId
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 SiePATCH
-Anforderungen mit Hinzufügevorgängen senden.
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
- 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.
- 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
- 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." 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." 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.
- 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.
- 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 Spalteutterance
in der CSV-Datei für Äußerungstester. Übertragen Sie den Inhalt der SpalteintentName
in die SpalteexpectedIntent
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 Spalteutterance
in der CSV-Datei für Äußerungstester. Übertragen Sie den Inhalt der SpalteintentName
in die SpalteexpectedIntent
in der CSV-Datei des Äußerungstests.
- Bei Intent-Paraphrasierungsjobs: Übertragen Sie den Inhalt in der Spalte
- 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". - 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. - Trainieren Sie die Entity, indem Sie Entity auswählen.
- 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. - 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.
- 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
- 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.