Grundlegendes zur benutzerdefinierten benannten Entitätserkennung
Benutzerdefinierter NER ist ein Azure-API-Dienst, der Dokumente betrachtet, identifiziert und extrahiert benutzerdefinierte Entitäten. Diese Entitäten können alles Mögliche sein, von Namen und Adressen aus Bankauszügen bis hin zur Wissensgewinnung (Knowledge Mining) zur Verbesserung der Suchergebnisse.
Benutzerdefinierter NER ist Teil von Azure Language in Foundry Tools.
Benutzerdefiniert vs. integrierte NER
Azure Language bietet bestimmte integrierte Entitätserkennung, um Dinge wie eine Person, einen Standort, eine Organisation oder EINE URL zu erkennen. Mit integriertem NER können Sie den Dienst mit minimaler Konfiguration einrichten und Entitäten extrahieren. Um einen integrierten NER aufzurufen, erstellen Sie Ihren Dienst, und rufen Sie den Endpunkt für diesen NER-Dienst wie folgt auf:
<YOUR-ENDPOINT>/language/analyze-text/jobs?api-version=<API-VERSION>
| Platzhalter | Wert | Beispiel |
|---|---|---|
<YOUR-ENDPOINT> |
Der Endpunkt für Ihre API-Anforderung | https://<your-resource>.cognitiveservices.azure.com |
<API-VERSION> |
Die Version der API, die Sie aufrufen | 2023-05-01 |
Der Textkörper dieses Aufrufs enthält die Dokumente, aus denen die Entitäten extrahiert werden, und die Header enthalten Ihren Dienstschlüssel.
Die Antwort des obigen Aufrufs enthält ein Array von Entitäten, die erkannt werden, z. B.:
<...>
"entities":[
{
"text":"Seattle",
"category":"Location",
"subcategory":"GPE",
"offset":45,
"length":7,
"confidenceScore":0.99
},
{
"text":"next week",
"category":"DateTime",
"subcategory":"DateRange",
"offset":104,
"length":9,
"confidenceScore":0.8
}
]
<...>
Beispiele dafür, wann das integrierte NER verwendet werden kann, sind die Suche nach Standorten, Namen oder URLs in langen Textdokumenten.
Tipp
Eine vollständige Liste der erkannten Entitätskategorien ist in den NER-Dokumenten verfügbar.
Benutzerdefinierter NER, der den Fokus des restlichen Moduls darstellt, ist verfügbar, wenn die entitäten, die Sie extrahieren möchten, nicht Teil des integrierten Diensts sind oder Sie nur bestimmte Entitäten extrahieren möchten. Sie können Ihr benutzerdefiniertes NER-Modell so einfach oder komplex gestalten, wie es für Ihre App erforderlich ist.
Beispiele dafür, wann man benutzerdefinierte NER verwenden möchte, sind spezifische rechtliche oder Bankdaten, Knowledge Mining zur Verbesserung der Katalogsuche oder die Suche nach spezifischem Text für Prüfungsrichtlinien. Jedes dieser Projekte erfordert eine bestimmte Gruppe von Entitäten und Daten, die extrahiert werden müssen.
Lebenszyklus von Azure Language-Projekten
Das Erstellen eines Entitätsextraktionsmodells folgt in der Regel einem ähnlichen Pfad zu den meisten Azure Language-Dienstfeatures:
- Definieren sie Entitäten: Grundlegendes zu den Daten und Entitäten, die Sie identifizieren möchten, und versuchen Sie, sie so klar wie möglich zu machen. Definieren Sie beispielsweise genau, welche Teile einer Bankabrechnung Extrahiert werden sollen.
- Tagdaten: Kennzeichnen oder taggen Sie Ihre vorhandenen Daten und geben Sie an, welcher Text in Ihrem Datensatz zu welcher Entität gehört. Es ist wichtig, diesen Schritt genau und vollständig durchzuführen, da fehlerhafte oder nicht erkannte Labels die Effektivität des trainierten Modells verringern. Eine gute Variante möglicher Eingabedokumente ist nützlich. Beispielsweise beschriften Sie Bankname, Kundenname, Kundenadresse, bestimmte Kredit- oder Kontobedingungen, Kredit- oder Kontobetrag und Kontonummer.
- Modell trainieren: Trainieren Sie Ihr Modell, sobald Ihre Entitäten gekennzeichnet sind. Beim Training lernt Ihr Modell, die Entitäten zu erkennen, die Sie kennzeichnen.
- Modell anzeigen: Zeigen Sie die Ergebnisse des Modells an, nachdem es trainiert wurde. Diese Seite enthält eine Bewertung von 0 bis 1, die auf der Genauigkeit und dem Rückruf der getesteten Daten basiert. Sie können sehen, welche Entitäten gut funktioniert haben (z. B. Kundenname) und welche Entitäten Verbesserung benötigen (z. B. Kontonummer).
- Verbesserungsmodell: Verbessern Sie Ihr Modell, indem Sie sehen, welche Entitäten nicht identifiziert werden konnten und welche Entitäten falsch extrahiert wurden. Erfahren Sie, welche Daten zur Verbesserung der Leistung zum Training Ihres Modells hinzugefügt werden müssen. Auf dieser Seite wird gezeigt, wie Entitäten fehlgeschlagen sind und welche Entitäten (z. B. Kontonummer) von anderen ähnlichen Entitäten (z. B. Kreditbetrag) unterschieden werden müssen.
- Bereitstellen des Modells: Sobald ihr Modell wie gewünscht ausgeführt wird, stellen Sie ihr Modell bereit, um es über die API verfügbar zu machen. In unserem Beispiel können Sie Anforderungen an das Modell senden, wenn es bereitgestellt wird, um Entitäten von Kontoauszügen zu extrahieren.
- Extrahieren von Entitäten: Verwenden Sie Ihr Modell zum Extrahieren von Entitäten. Im Labor wird erklärt, wie die API genutzt wird, und Sie können die API-Referenz einsehen, um weitere Details zu erhalten.
Überlegungen zur Datenauswahl und zum Verfeinern von Entitäten
Um eine optimale Leistung zu erzielen, müssen Sie sowohl hochwertige Daten verwenden, um das Modell zu trainieren als auch klar definierte Entitätstypen zu trainieren.
Mit qualitativ hochwertigen Daten können Sie weniger Zeit beim Verfeinern verbringen und bessere Ergebnisse aus Ihrem Modell erzielen.
- Vielfalt: Verwenden Sie ein möglichst vielfältiges Dataset, ohne die in den realen Daten erwartete Verteilung zu verlieren. Sie sollten Beispieldaten aus so vielen Quellen wie möglich verwenden, jeweils mit eigenen Formaten und Anzahl von Entitäten. Es ist am besten, dass Ihr Dataset so viele verschiedene Quellen wie möglich darstellt.
- Verteilung – Verwenden Sie die entsprechende Verteilung von Dokumenttypen. Ein vielfältigeres Dataset zum Trainieren Ihres Modells hilft Ihrem Modell, keine falschen Beziehungen zwischen den Daten zu lernen.
- Genauigkeit – Verwenden Sie Daten, die so nah an realen Daten wie möglich sind. Gefälschte Daten funktionieren, um den Schulungsprozess zu starten, aber sie unterscheiden sich wahrscheinlich von echten Daten auf eine Weise, die dazu führen kann, dass Ihr Modell nicht korrekt extrahieren kann.
Entitäten müssen auch sorgfältig berücksichtigt und so eindeutig wie möglich definiert werden. Vermeiden Sie mehrdeutige Entitäten (z. B. zwei Namen nebeneinander auf einer Bankausweisung), da das Modell schwer zu unterscheiden ist. Wenn einige mehrdeutige Entitäten erforderlich sind, stellen Sie sicher, dass Sie weitere Beispiele für Ihr Modell haben, aus denen Sie lernen können, damit sie den Unterschied verstehen kann.
Indem Sie Ihre Entitäten klar voneinander unterscheiden, tragen Sie wesentlich zur Leistungsfähigkeit Ihres Modells bei. Wenn Sie beispielsweise versuchen, etwas wie "Kontaktinformationen" zu extrahieren, das eine Telefonnummer, ein Handle für soziale Medien oder eine E-Mail-Adresse sein könnte, benötigen Sie mehrere Beispiele, um Ihr Modell richtig zu unterrichten. Versuchen Sie stattdessen, sie in spezifischere Entitäten wie "Telefon", "E-Mail" und "Soziale Medien" aufzuteilen, und lassen Sie das Modell anzugeben, welche Art von Kontaktinformationen es findet.
Extrahieren von Entitäten
Zum Übermitteln einer Extraktionsaufgabe benötigt die API den JSON-Text, um anzugeben, welche Aufgabe ausgeführt werden soll. Für die benutzerdefinierte Erkennung benannter Entitäten (NER) ist CustomEntityRecognition die Aufgabe für die JSON-Nutzdaten.
Ihre Nutzlast sieht ähnlich wie die folgende JSON aus:
{
"displayName": "string",
"analysisInput": {
"documents": [
{
"id": "doc1",
"text": "string"
},
{
"id": "doc2",
"text": "string"
}
]
},
"tasks": [
{
"kind": "CustomEntityRecognition",
"taskName": "MyRecognitionTaskName",
"parameters": {
"projectName": "MyProject",
"deploymentName": "MyDeployment"
}
}
]
}
Projekteinschränkungen
Der Azure-Sprachdienst erzwingt die folgenden Einschränkungen:
- Schulung – mindestens 10 Dateien und nicht mehr als 100.000
- Bereitstellungen – 10 Bereitstellungsnamen pro Projekt
-
APIs
- Erstellung - Diese API erstellt ein Projekt, trainiert und stellt Ihr Modell bereit. Beschränkt auf 10 POST und 100 GET pro Minute
- Analysieren - diese API erledigt die Arbeit, die Entitäten tatsächlich zu extrahieren; sie fordert eine Aufgabe an und ruft die Ergebnisse ab. Begrenzt auf 20 GET- oder POST-Vorgänge
- Projekte – nur 1 Speicherkonto pro Projekt, 500 Projekte pro Ressource und 50 trainierte Modelle pro Projekt
- Entitäten – jede Entität kann bis zu 500 Zeichen lang sein. Sie können bis zu 200 Entitätstypen haben.
Detaillierte Informationen finden Sie auf der Seite "Dienstgrenzwerte für Azure Language ".