Grundlegendes zur benutzerdefinierten benannten Entitätserkennung

Abgeschlossen

Die benutzerdefinierte Erkennung benannter Entitäten (NER) ist ein Azure API-Dienst, der Dokumente durchsucht, identifiziert und benutzerdefinierte Entitäten extrahiert. 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.

Die benutzerdefinierte NER ist Teil von Azure KI Language in Azure KI Services.

Benutzerdefinierte und integrierte Erkennung benannter Entitäten

Azure KI Language bietet eine integrierte Erkennung von Entitäten, z. B. von Personen, Orten, Organisationen oder URLs. Die integrierte Erkennung von Entitäten ermöglicht es Ihnen, den Dienst mit minimaler Konfiguration festzulegen und Entitäten zu extrahieren. Um eine integrierte Erkennung von Entitäten aufzurufen, erstellen Sie Ihren Dienst und rufen 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 Ihrer API-Anforderung https://<your-resource>.cognitiveservices.azure.com
<API-VERSION> Die Version der von Ihnen aufgerufenen API 2023-05-01

Der Textkörper dieses Aufrufs enthält das/die Dokument(e), aus dem/denen die Entitäten extrahiert wurden, und die Header enthalten Ihren Dienstschlüssel.

Die Antwort des obigen Aufrufs enthält ein Array der erkannten Entitäten, 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 für die Verwendung der integrierten Erkennung von Entitäten sind die Suche nach Orten, Namen oder URLs in langen Textdokumenten.

Tipp

Eine vollständige Liste der anerkannten Entitätskategorien finden Sie in den NER-Dokumenten.

Die benutzerdefinierte NER, auf die sich der Rest dieses Moduls konzentriert, 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 für Fälle, in denen Sie eine benutzerdefinierte NER wünschen, sind spezifische Rechts- oder Bankdaten, Wissensgewinnung zur Verbesserung der Katalogsuche oder die Suche nach spezifischem Text für Überwachungsrichtlinien. Jedes dieser Projekte erfordert einen bestimmten Satz an Entitäten und Daten, die es zu extrahieren gilt.

Projektlebenszyklus von Azure KI Language

Conceptual diagram showing a project steps to define entities, tag data, train model, view model, improve model, deploy model, and extract entities.

Die Erstellung eines Modells zur Extraktion von Entitäten verläuft in der Regel ähnlich wie bei den meisten Features des Azure KI Language-Diensts:

  1. Definieren von Entitäten: Begreifen der Daten und Entitäten, die Sie identifizieren möchten, und versuchen, diese so eindeutig wie möglich darzustellen. Sie können z. B. genau festlegen, welche Teile eines Kontoauszugs Sie extrahieren möchten.
  2. Taggen von Daten: Taggen oder markieren Sie Ihre vorhandenen Daten, und geben Sie an, welcher Text in Ihrem Dataset welcher Entität entspricht. Es ist wichtig, diesen Schritt genau und vollständig auszuführen, da falsche oder fehlende Tags die Effektivität des trainierten Modells verringern. Eine gute Variation der möglichen Eingabedokumente ist hilfreich. Markieren Sie z. B. den Namen der Bank, den Namen des Kunden, die Adresse des Kunden, bestimmte Kredit- oder Kontobedingungen, den Kredit- oder Kontobetrag und die Kontonummer.
  3. Trainieren des Modells: Trainieren Sie Ihr Modell, sobald Ihre Entitäten markiert sind. Durch das Training lernt Ihr Modell, die von Ihnen markierten Entitäten zu erkennen.
  4. Anzeigen des Modells: Zeigen Sie die Ergebnisse des Modells an, nachdem es trainiert wurde. Diese Seite enthält einen Score von 0 bis 1, der auf der Genauigkeit und dem Abruf der getesteten Daten basiert. Sie können sehen, welche Entitäten gut funktioniert haben (z. B. der Name des Kunden) und welche Entitäten verbessert werden müssen (z. B. die Kontonummer).
  5. Verbessern des Modells: Verbessern Sie Ihr Modell, indem Sie prüfen, welche Entitäten nicht identifiziert werden konnten und welche Entitäten fehlerhaft extrahiert wurden. Ermitteln Sie, welche Daten dem Training Ihres Modells hinzugefügt werden müssen, um die Leistung zu verbessern. Diese Seite zeigt Ihnen, wie bei Entitäten Fehler aufgetreten sind und welche Entitäten (z. B. Kontonummer) von anderen ähnlichen Entitäten (z. B. Kreditbetrag) unterschieden werden müssen.
  6. Bereitstellen des Modells: Sobald Ihr Modell wie gewünscht funktioniert, können Sie es über die API bereitstellen. In unserem Beispiel können Sie Anforderungen an das Modell senden, wenn es bereitgestellt wird, um Entitäten von Kontoauszügen zu extrahieren.
  7. Extrahieren von Entitäten: Verwenden Sie Ihr Modell zum Extrahieren von Entitäten. In diesem Lab wird behandelt, wie Sie die API verwenden können, und Sie können die Referenz zur API anzeigen, um weitere Informationen zu erhalten.

Überlegungen zur Datenauswahl und Einschränkung von Entitäten

Damit Sie die beste Leistung erzielen, müssen Sie sowohl hochwertige Daten zum Trainieren des Modells als auch eindeutig definierte Entitätstypen verwenden.

Qualitativ hochwertige Daten ermöglichen es Ihnen, weniger Zeit mit der Optimierung Ihres Modells zu verbringen und bessere Ergebnisse zu erzielen.

  • Vielfalt: Verwenden Sie ein möglichst vielfältiges Dataset, ohne die in den realen Daten erwartete Verteilung zu verlieren. Sie möchten Beispieldaten aus möglichst vielen Quellen verwenden, die jeweils ihre eigenen Formate und Mengen der Entitäten aufweisen. Am besten ist es, wenn Ihr Dataset aus so vielen verschiedenen Quellen wie möglich besteht.
  • Verteilung: Verwenden Sie die entsprechende Verteilung der 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 der Realität so nahe wie möglich kommen. Gefälschte Daten eignen sich gut, um den Trainingsprozess zu starten, aber sie unterscheiden sich wahrscheinlich von echten Daten in einer Weise, die dazu führen kann, dass Ihr Modell die Extraktion nicht ordnungsgemäß durchführt.

Auch Entitäten müssen sorgfältig bedacht und so eindeutig wie möglich definiert werden. Vermeiden Sie mehrdeutige Entitäten (z. B. zwei Namen nebeneinander auf einem Kontoauszug), da das Modell sonst Schwierigkeiten hat, sie zu unterscheiden. Wenn Sie einige mehrdeutige Entitäten benötigen, stellen Sie sicher, dass Sie mehr Beispiele haben, aus denen Ihr Modell lernen kann, sodass es den Unterschied verstehen kann.

Wenn Sie Ihre Entitäten getrennt halten, trägt dies auch wesentlich zur Leistung Ihres Modells bei. Wenn Sie z. B. versuchen, etwas wie „Kontaktinformationen“ zu extrahieren, bei dem es sich um eine Telefonnummer, ein Handle für soziale Medien oder eine E-Mail-Adresse handeln könnte, benötigen Sie mehrere Beispiele, um Ihr Modell richtig zu trainieren. Versuchen Sie stattdessen, sie in spezifischere Entitäten wie „Telefon“, „E-Mail“ und „Soziale Medien“ aufzuschlüsseln, und lassen Sie das Modell die Art der Kontaktinformationen markieren, die es findet.

Extrahieren von Entitäten

Für die Übermittlung einer Extraktionsaufgabe benötigt die API den JSON-Text zur Angabe der Aufgabe, die ausgeführt werden soll. Für die benutzerdefinierte Erkennung benannter Entitäten (NER) ist CustomEntityRecognition die Aufgabe für die JSON-Nutzdaten.

Ihre Nutzdaten werden ähnlich wie der folgende JSON-Code aussehen:

{
    "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 KI Language-Dienst erzwingt die folgenden Einschränkungen:

  • Training – Mindestens 10 Dateien und nicht mehr als 100.000.
  • Bereitstellungen – 10 Bereitstellungsnamen pro Projekt.
  • APIs
    • Erstellung – Diese API erstellt ein Projekt, trainiert Ihr Modell und stellt es bereit. Begrenzt auf 10 POST- und 100 GET-Vorgänge pro Minute
    • Analyse – Diese API übernimmt die eigentliche Extraktion der Entitäten. 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.

Ausführliche Informationen finden Sie auf der Seite Dienstgrenzwerte für Azure KI Language.