Das Amazon Machine Learning Solutions Lab (MLSL) hat kürzlich ein Tool zum Kommentieren von Text mit Named-Entity-Recognition (NER) und Beziehungslabels erstellt Amazon Sagemaker Ground Truth. Annotatoren verwenden dieses Tool, um Text mit benannten Entitäten zu kennzeichnen und ihre Beziehungen zu verknüpfen, wodurch ein Datensatz zum Trainieren modernster Machine Learning (ML)-Modelle für die Verarbeitung natürlicher Sprache (NLP) erstellt wird. Am wichtigsten ist, dass dies jetzt für alle AWS-Kunden öffentlich verfügbar ist.
Kundenanwendungsfall: Booking.com
Booking.com ist eine der weltweit führenden Online-Reiseplattformen. Zu verstehen, was Kunden über die über 28 Millionen Immobilienangebote des Unternehmens auf der Plattform sagen, ist für die Aufrechterhaltung eines erstklassigen Kundenerlebnisses von entscheidender Bedeutung. Bisher konnte Booking.com nur traditionelle Stimmungsanalysen nutzen, um kundengenerierte Bewertungen in großem Umfang zu interpretieren. Um die Spezifität dieser Interpretationen zu verbessern, wandte sich Booking.com kürzlich an die MLSL, um Hilfe beim Erstellen eines benutzerdefinierten kommentierten Datensatzes zum Trainieren eines aspektbasierten Stimmungsanalysemodells zu erhalten.
Bei der traditionellen Stimmungsanalyse wird ein Textstück als positiv, negativ oder neutral klassifiziert einzigartiges Gefühl. Dies funktioniert, um allgemein zu verstehen, ob Benutzer mit einer bestimmten Erfahrung zufrieden oder unzufrieden sind. Bei der traditionellen Stimmungsanalyse kann beispielsweise der folgende Text als „neutral“ eingestuft werden:
Unser Aufenthalt im Hotel war schön. Das Personal war freundlich und die Zimmer waren sauber, aber unsere Betten waren ziemlich unbequem.
Die aspektbasierte Stimmungsanalyse bietet ein differenzierteres Verständnis von Inhalten. Im Fall von Booking.com kann es, anstatt eine Kundenbewertung als Ganzes zu nehmen und kategorisch zu klassifizieren, die Stimmung innerhalb einer Bewertung nehmen und sie bestimmten Aspekten zuordnen. Beispielsweise loben Kundenbewertungen eines bestimmten Hotels den makellosen Pool- und Fitnessbereich, geben aber kritisches Feedback zum Restaurant und zur Lounge.
Die Aussage, die von der traditionellen Sentimentanalyse als „neutral“ eingestuft worden wäre, wird bei der aspektbasierten Sentimentanalyse zu:
Unser Aufenthalt im Hotel war schön. Das Personal war freundlich und die Zimmer waren sauber, aber unsere Betten waren ziemlich unbequem.
- Hotel: Positiv
- Mitarbeiter: Positiv
- Zimmer: Positiv
- Betten: Negativ
Booking.com versuchte, ein benutzerdefiniertes aspektbasiertes Stimmungsanalysemodell zu erstellen, das ihnen sagen würde, welche spezifischen Teile des Gästeerlebnisses (aus einer Liste von über 50 Aspekten) waren positiv, Negativ, oder neutral.
Bevor Booking.com einen Trainingsdatensatz für dieses Modell erstellen konnte, brauchten sie eine Möglichkeit, es zu kommentieren. Das Anmerkungstool von MLSL bot die dringend benötigte kundenspezifische Lösung. Eine menschliche Überprüfung wurde für eine große Sammlung von Hotelbewertungen durchgeführt. Anschließend vervollständigten die Annotatoren die Annotation benannter Entitäten zu Stimmungs- und Gästeerlebnis-Textspannen und -Phrasen, bevor sie die entsprechenden Spannen miteinander verknüpften.
Mit dem neuen aspektbasierten Modell kann Booking.com sowohl Unterkünfte als auch Bewertungen für seine Kunden personalisieren. Die Hervorhebung der positiven und negativen Aspekte jeder Unterkunft ermöglicht es den Kunden, ihre perfekte Übereinstimmung zu wählen. Darüber hinaus interessieren sich unterschiedliche Kunden für unterschiedliche Aspekte der Unterkunft, und das neue Modell eröffnet die Möglichkeit, jedem die relevantesten Bewertungen anzuzeigen.
Kennzeichnungsanforderungen
Obwohl Ground Truth eine integrierte NER-Textanmerkungsfunktion bietet, bietet es nicht die Möglichkeit, Entitäten miteinander zu verknüpfen. Vor diesem Hintergrund haben Booking.com und MLSL die folgenden allgemeinen Anforderungen für ein neues Textkennzeichnungstool zur Erkennung benannter Entitäten ausgearbeitet, das:
- Akzeptiert als Eingabe: Text, Entitätsetiketten, Beziehungsetiketten und Klassifizierungsetiketten.
- Akzeptiert optional als Eingabe vorannotierte Daten mit den vorangehenden Bezeichnungs- und Beziehungsanmerkungen.
- Präsentiert dem Kommentator entweder nicht kommentierten oder vorkommentierten Text.
- Ermöglicht Kommentatoren das Hervorheben und Kommentieren von beliebigem Text mit einer Entitätsbezeichnung.
- Ermöglicht Annotatoren das Erstellen von Beziehungen zwischen zwei Entitätsannotationen.
- Ermöglicht Kommentatoren die einfache Navigation durch eine große Anzahl von Entitätsbezeichnungen.
- Unterstützt das Gruppieren von Entitätslabels in Kategorien.
- Überlappende Beziehungen zulassen, was bedeutet, dass dasselbe kommentierte Textsegment mit mehr als einem anderen kommentierten Textsegment in Beziehung stehen kann.
- Erlaubt überlappende Entitätsbeschriftungsanmerkungen, was bedeutet, dass zwei Anmerkungen denselben Text überlappen können. Beispielsweise kann der Text „Seattle Space Needle“ sowohl die Annotationen „Seattle“ → „Locations“ als auch „Seattle Space Needle“ → „Attractions“ enthalten.
- Das Ausgabeformat ist mit dem Eingabeformat kompatibel und kann in nachfolgende Etikettieraufgaben zurückgeführt werden.
- Unterstützt UTF-8-codierten Text mit Emojis und anderen Multibyte-Zeichen.
- Unterstützt Sprachen von links nach rechts.
Beispielanmerkung
Betrachten Sie das folgende Dokument:
Wir liebten die Lage dieses Hotels! Die Lounge auf dem Dach gab uns den perfekten Blick auf die Weltraumnadel. Es ist auch nur eine kurze Autofahrt vom Pike Place Market und der Uferpromenade entfernt.
Essen war nur über den Zimmerservice erhältlich, was ein wenig enttäuschend war, aber in dieser Welt nach der Pandemie Sinn macht.
Insgesamt ein preiswertes Erlebnis.
Das Laden dieses Dokuments in die neue NER-Annotation präsentiert einen Worker mit der folgenden Schnittstelle:
In diesem Fall besteht die Aufgabe des Arbeitnehmers darin:
- Kennzeichnen Sie mit der Immobilie verbundene Entitäten (Lage, Preis, Essen usw.)
- Beschriften Sie Entitäten im Zusammenhang mit der Stimmung (positiv, negativ oder neutral)
- Verknüpfen Sie unternehmensbezogene benannte Entitäten mit stimmungsbezogenen Schlüsselwörtern, um das Gästeerlebnis genau zu erfassen
Die Annotationsgeschwindigkeit war ein wichtiger Aspekt des Tools. Mithilfe einer Reihe intuitiver Tastenkombinationen und Mausgesten können Kommentatoren die Benutzeroberfläche steuern und:
- Anmerkungen zu benannten Entitäten hinzufügen und entfernen
- Fügen Sie Beziehungen zwischen benannten Entitäten hinzu
- Zum Anfang und Ende des Dokuments springen
- Reichen Sie das Dokument ein
Darüber hinaus gibt es Unterstützung für überlappende Beschriftungen. Zum Beispiel, Seattle Space Needle
: in diesem Satz, Seattle
wird sowohl als eigenständiger Ort als auch als Teil des Attraktionsnamens kommentiert.
Die vollständige Anmerkung bietet eine vollständigere, differenziertere Analyse der Daten:
Beziehungen können auf vielen Ebenen konfiguriert werden, von Entitätskategorien zu anderen Entitätskategorien (z. B. von „Essen“ zu „Gefühl“) oder zwischen einzelnen Entitätstypen. Beziehungen sind gerichtet, sodass Annotatoren einen Aspekt wie Essen mit einem Gefühl verknüpfen können, aber nicht umgekehrt (sofern nicht ausdrücklich aktiviert). Beim Zeichnen von Beziehungen leitet das Anmerkungstool automatisch die Beziehungsbezeichnung und -richtung ab.
Konfigurieren des NER-Anmerkungstools
In diesem Abschnitt behandeln wir, wie Sie das NER-Anmerkungstool für kundenspezifische Anwendungsfälle anpassen können. Dazu gehört die Konfiguration:
- Der zu kommentierende Eingabetext
- Entitätsetiketten
- Beziehungsetiketten
- Klassifizierungsetiketten
- Vorannotierte Daten
- Arbeiteranweisungen
Wir werden die Besonderheiten der Eingabe- und Ausgabedokumentformate behandeln und jeweils einige Beispiele liefern.
Dokumentformat eingeben
Das NER-Anmerkungstool erwartet das folgende JSON-formatierte Eingabedokument (Felder mit einem Fragezeichen neben dem Namen sind optional).
Kurz gesagt, das Eingabeformat hat diese Eigenschaften:
- Entweder
entityLabels
orclassificationLabels
(oder beide) sind zum Kommentieren erforderlich. - If
entityLabels
sind also gegebenrelationshipLabels
Kann hinzugefügt werden. - Beziehungen können zwischen verschiedenen Entitäts-/Kategoriebezeichnungen oder einer Mischung aus diesen zulässig sein.
- Die „Quelle“ einer Beziehung ist die Entität, mit der der gerichtete Pfeil beginnt, während das „Ziel“ dort ist, wohin er führt.
Feld | Typ | Beschreibung |
Text | Schnur | Erforderlich. Geben Sie Text für die Anmerkung ein. |
tokenRows | Zeichenfolge[][] | Optional. Benutzerdefinierte Tokenisierung von Eingabetext. Array von Arrays von Zeichenfolgen. Das Array der obersten Ebene stellt jede Textzeile (Zeilenumbrüche) dar, und das Array der zweiten Ebene stellt Tokens in jeder Zeile dar. Alle Zeichen/Runen im Eingabetext müssen in tokenRows berücksichtigt werden, einschließlich aller Leerzeichen. |
Dokument Identifikation | Schnur | Optional. Optionaler Wert für Kunden, um das mit Anmerkungen versehene Dokument zu verfolgen. |
EntityLabels | Objekt[] | Erforderlich, wenn „classificationLabels“ leer ist. Array von Entitätslabels. |
EntityLabels[].Name | Schnur | Erforderlich. Anzeigename des Entitätslabels. |
EntityLabels[].Kategorie | Schnur | Optional. Kategoriename der Entitätsbezeichnung. |
EntityLabels[].Kurzname | Schnur | Optional. Zeigen Sie diesen Text anstelle des vollständigen Namens über annotierten Entitäten an. |
EntityLabels[].shortCategory | Schnur | Optional. Zeigen Sie diesen Text anstelle der ersten vier Buchstaben des Kategorienamens in der Auswahl-Dropdown-Liste für Entitätsanmerkungen an. |
EntityLabels.color | Schnur | Optional. Hex-Farbcode mit dem Präfix „#“. Wenn leer, wird der Entitätsbeschriftung automatisch eine Farbe zugewiesen. |
Beziehungslabels | Objekt[] | Optional. Array von Beziehungslabels. |
BeziehungLabels[].Name | Schnur | Erforderlich. Anzeigename des Beziehungslabels. |
RelationshipLabels[].allowedRelationships | Objekt[] | Optional. Array von Werten, die einschränken, welchen Arten von Quell- und Zielentitätsbezeichnungen diese Beziehung zugewiesen werden kann. Jedes Element im Array wird zusammen „ODER-verknüpft“. |
RelationshipLabels[].allowedRelationships[].sourceEntityLabelCategories | Zeichenfolge[] | Erforderlich, um entweder sourceEntityLabelCategories oder sourceEntityLabels (oder beides) festzulegen. Liste der Label-Kategorietypen der juristischen Person für diese Beziehung. |
RelationshipLabels[].allowedRelationships[].targetEntityLabelCategories | Zeichenfolge[] | Erforderlich, um entweder targetEntityLabelCategories oder targetEntityLabels (oder beides) festzulegen. Liste der Label-Kategorietypen der juristischen Zieleinheit für diese Beziehung. |
RelationshipLabels[].allowedRelationships[].sourceEntityLabels | Zeichenfolge[] | Erforderlich, um entweder sourceEntityLabelCategories oder sourceEntityLabels (oder beides) festzulegen. Liste der Bezeichnungstypen der juristischen Person für diese Beziehung. |
RelationshipLabels[].allowedRelationships[].sourceEntityLabels | Zeichenfolge[] | Erforderlich, um entweder targetEntityLabelCategories oder targetEntityLabels (oder beides) festzulegen. Liste der Beschriftungstypen der juristischen Zieleinheit für diese Beziehung. |
KlassifizierungEtiketten | Zeichenfolge[] | Erforderlich, wenn entityLabels leer ist. Liste der Klassifizierungslabels auf Dokumentebene. |
EntityAnmerkungen | Objekt[] | Optional. Array von Entitätsanmerkungen, mit denen Eingabetext vorannotiert werden soll. |
EntityAnnotations[].id | Schnur | Erforderlich. Eindeutiger Bezeichner für diese Entitätsanmerkung. Wird verwendet, um auf diese Entität in RelationshipAnnotations zu verweisen. |
EntityAnnotations[].start | Anzahl | Erforderlich. Starten Sie den Runenversatz dieser Entitätsanmerkung. |
EntityAnnotations[].end | Anzahl | Erforderlich. Endrune-Offset dieser Entitätsanmerkung. |
EntityAnnotations[].text | Schnur | Erforderlich. Textinhalt zwischen Start- und Endrune Offset. |
EntityAnnotations[].label | Schnur | Erforderlich. Name der zugeordneten Entitätsbezeichnung (aus den Namen in entityLabels). |
EntityAnnotations[].labelCategory | Schnur | Optional. Label-Kategorie der zugeordneten Entität (aus den Kategorien in entityLabels). |
BeziehungAnmerkungen | Objekt[] | Optional. Array von Beziehungsanmerkungen. |
RelationshipAnnotations[].sourceEntityAnnotationId | Schnur | Erforderlich. Anmerkungs-ID der Quellentität für diese Beziehung. |
RelationshipAnnotations[].targetEntityAnnotationId | Schnur | Erforderlich. Anmerkungs-ID der Zielentität für diese Beziehung. |
BeziehungAnmerkungen[].label | Schnur | Erforderlich. Bezeichnungsname der zugeordneten Beziehung. |
KlassifikationAnmerkungen | Zeichenfolge[] | Optional. Array von Klassifizierungen, mit denen das Dokument vorab kommentiert werden soll. |
Ziel | Objekt | Optional. Zusätzliche Konfigurationsparameter. |
meta.instruktionen | Schnur | Optional. Anleitung für den Beschriftungs-Annotator im Markdown-Format. |
meta.disableSubmitConfirmation | boolean | Optional. Auf „true“ setzen, um das Übermittlungsbestätigungsmodal zu deaktivieren. |
meta.multiClassification | boolean | Optional. Auf „true“ setzen, um den Multi-Label-Modus für „classificationLabels“ zu aktivieren. |
Hier sind einige Beispieldokumente, um ein besseres Gefühl für dieses Eingabeformat zu bekommen
Dokumente, die diesem Schema entsprechen, werden Ground Truth als einzelne Posten in einem Eingabemanifest bereitgestellt.
Ausgabedokumentformat
Das Ausgabeformat ist so konzipiert, dass es problemlos in eine neue Annotationsaufgabe rückgekoppelt werden kann. Optionale Felder im Ausgabedokument werden gesetzt, wenn sie auch im Eingabedokument gesetzt sind. Der einzige Unterschied zwischen den Eingabe- und Ausgabeformaten ist die meta
Objekt.
Feld | Typ | Beschreibung |
meta.abgelehnt | boolean | Wird auf true gesetzt, wenn der Annotator dieses Dokument abgelehnt hat. |
meta.rejectedReason | Schnur | Der Grund des Annotators für die Ablehnung des Dokuments. |
meta.runen | Zeichenfolge[] | Array von Runen, die alle Zeichen im Eingabetext berücksichtigen. Wird verwendet, um die Start- und End-Offsets von Entity-Anmerkungen zu berechnen. |
Hier ist ein Beispiel für ein Ausgabedokument, das mit Anmerkungen versehen wurde:
Hinweis zu Runen:
Eine „Rune“ ist in diesem Zusammenhang ein einzelnes, hervorzuhebendes Zeichen im Text, einschließlich Multibyte-Zeichen wie Emoji.
- Da verschiedene Programmiersprachen Multibyte-Zeichen unterschiedlich darstellen, bedeutet die Verwendung von „Runen“, um jedes hervorhebbare Zeichen als ein einzelnes atomares Element zu definieren, dass wir eine eindeutige Möglichkeit haben, eine bestimmte Textauswahl zu beschreiben.
- Beispielsweise behandelt Python die schwedische Flagge als vier Zeichen:
Aber JavaScript behandelt dasselbe Emoji als zwei Zeichen
Um jegliche Mehrdeutigkeit zu beseitigen, behandeln wir die schwedische Flagge (und alle anderen Emojis und Multi-Byte-Zeichen) als ein einzelnes atomares Element.
- Offset: Runenposition relativ zum Eingabetext (beginnend mit Index 0)
Durchführen von NER-Anmerkungen mit Ground Truth
Als vollständig verwalteter Datenkennzeichnungsdienst erstellt Ground Truth Trainingsdatensätze für ML. Für diesen Anwendungsfall verwenden wir Ground Truth, um eine Sammlung von Textdokumenten zur Annotation an einen Pool von Mitarbeitern zu senden. Abschließend prüfen wir die Qualität.
Ground Truth kann konfiguriert werden, um einen Datenkennzeichnungsauftrag mit dem neuen NER-Tool als benutzerdefinierte Vorlage zu erstellen.
Konkret werden wir:
- Erstellen Sie eine Belegschaft für die private Kennzeichnung von Mitarbeitern, um die Anmerkungsaufgabe auszuführen
- Erstellen Sie ein Ground Truth-Eingabemanifest mit den Dokumenten, die wir kommentieren möchten, und laden Sie es dann hoch Einfacher Amazon-Speicherdienst (Amazon S3)
- Erstellen Sie Lambda-Funktionen für Pre-Labeling-Aufgaben und Post-Labeling-Aufgaben
- Erstellen Sie einen Ground Truth-Etikettierungsauftrag mit der benutzerdefinierten NER-Vorlage
- Dokumente kommentieren
- Ergebnisse überprüfen
NER-Tool-Ressourcen
Eine vollständige Liste der referenzierten Ressourcen und Beispieldokumente finden Sie in der folgenden Tabelle:
Etikettierung der Schaffung von Arbeitskräften
Ground Truth verwendet SageMaker-Kennzeichnungsteams, um Mitarbeiter zu verwalten und Aufgaben zu verteilen. Erstellen Sie eine private Belegschaft, ein Arbeiterteam namens Ner-Arbeiter-Team, und weisen Sie sich dem Team zu, indem Sie die Anweisungen in verwenden Erstellen Sie eine private Belegschaft (Amazon SageMaker Console).
Nachdem Sie sich zu einer privaten Belegschaft hinzugefügt und Ihre E-Mail bestätigt haben, notieren Sie sich die URL des Mitarbeiterportals aus der AWS-Managementkonsole:
- Navigieren
SageMaker
- Navigieren
Ground Truth → Labeling workforces
- Wähle aus
Private
Tab - Notieren Sie sich die URL
Labeling portal sign-in URL
Melden Sie sich beim Worker-Portal an, um Kennzeichnungsaufgaben anzuzeigen und mit der Arbeit zu beginnen.
Eingabemanifest
Das Eingabedatenmanifest von Ground Truth ist eine JSON-Zeilendatei, in der jede Zeile eine einzelne Workeraufgabe enthält. In unserem Fall enthält jede Zeile ein einzelnes JSON-codiertes Eingabedokument, das den zu kommentierenden Text und das NER-Anmerkungsschema enthält.
Laden Sie ein Beispiel-Eingabemanifest herunter reviews.manifest
für https://assets.solutions-lab.ml/NER/0.2.1/sample-data/reviews.manifest
Note: Jede Zeile im Eingabemanifest benötigt einen Schlüssel der obersten Ebene source
or source-ref
. Sie können mehr erfahren in Verwenden Sie eine Eingabemanifestdatei im Amazon SageMaker-Entwicklerhandbuch.
Laden Sie das Eingabemanifest in Amazon S3 hoch
Laden Sie dieses Eingabemanifest mithilfe der AWS Management Console oder über die Befehlszeile in einen S3-Bucket hoch und ersetzen Sie es dadurch your-bucket
mit einem tatsächlichen Bucket-Namen.
Laden Sie eine benutzerdefinierte Worker-Vorlage herunter
Laden Sie die benutzerdefinierte Worker-Vorlage für das NER-Tool von herunter https://assets.solutions-lab.ml/NER/0.2.1/worker-template.liquid.html indem Sie die Quelle anzeigen und den Inhalt lokal speichern oder von der Befehlszeile aus:
Erstellen Sie Lambda-Funktionen für Pre-Labeling-Aufgaben und Post-Labeling-Aufgaben
Laden Sie die Lambda-Funktion für eine Vorabkennzeichnungsaufgabe herunter: smgt-ner-pre-labeling-task-lambda.py
für https://assets.solutions-lab.ml/NER/0.2.1/sample-scripts/smgt-ner-pre-labeling-task-lambda.py
Laden Sie die Lambda-Funktion für eine Vorabkennzeichnungsaufgabe herunter: smgt-ner-post-labeling-task-lambda.py
für https://assets.solutions-lab.ml/NER/0.2.1/sample-scripts/smgt-ner-post-labeling-task-lambda.py
- Erstellen Sie eine Lambda-Funktion für Vorabkennzeichnungsaufgaben in der AWS-Managementkonsole:
- Navigieren
Lambda
- Auswählen
Create function
- Angeben
Function name
assmgt-ner-pre-labeling-task-lambda
- Auswählen
Runtime
→Python 3.6
- Auswählen
Create function
- In
Function code
→lambda_hanadler.py
, fügen Sie den Inhalt von einsmgt-ner-pre-labeling-task-lambda.py
- Auswählen
Deploy
- Navigieren
- Erstellen Sie die Lambda-Funktion für Post-Labeling-Aufgaben in der AWS-Managementkonsole:
- Navigieren
Lambda
- Auswählen
Create function
- Angeben
Function name
assmgt-ner-post-labeling-task-lambda
- Auswählen
Runtime
→Python 3.6
- Erweitern Sie die Funktionalität der
Change default execution role
- Auswählen
Create a new role from AWS policy templates
- Geben Sie die
Role name
:smgt-ner-post-labeling-task-lambda-role
- Auswählen
Create function
- Wähle aus
Permissions
Tab - Wähle aus
Role name
:smgt-ner-post-labeling-task-lambda-role
, um die IAM-Konsole zu öffnen - Fügen Sie der Rolle zwei Richtlinien hinzu
- Auswählen
Attach policies
- Hänge an
AmazonS3FullAccess
Datenschutzrichtlinien - Auswählen
Add inline policy
- Wähle aus
JSON
Tab - Fügen Sie die folgende Inline-Richtlinie ein:
- Auswählen
- Navigieren Sie zurück zu
smgt-ner-post-labeling-task-lambda
Lambda-Funktionskonfigurationsseite - Wähle aus
Configuration
Tab - In
Function code
→ lambda_hanadler.py
, fügen Sie den Inhalt von einsmgt-ner-post-labeling-task-lambda.py
- Auswählen
Deploy
- Navigieren
Erstellen Sie einen Ground Truth-Beschriftungsjob
Von der AWS Management Console:
- Navigieren Sie zu der
Amazon SageMaker
- Navigieren
Ground Truth
→Labeling Jobs
. - Auswählen
Create labeling job
- Geben Sie a an
Job Name
- Auswählen
Manual Data Setup
- Geben Sie den Speicherort des Eingabe-Datasets an, in den Sie das Eingabemanifest zuvor hochgeladen haben (z. B. s
3://your-bucket/ner-input/sample-smgt-input-manifest.jsonl
) - Geben Sie den Speicherort des Ausgabe-Datasets so an, dass er auf einen anderen Ordner im selben Bucket verweist (z. B.
s3://your-bucket/ner-output/
) - Geben Sie eine an
IAM Role
durch die AuswahlCreate new role
- Erlauben Sie dieser Rolle den Zugriff auf alle S3-Buckets, indem Sie auswählen
S3 buckets you specify
→Any S3 bucket
beim Erstellen der Richtlinie - Öffnen Sie in einem neuen AWS Management Console-Fenster die
IAM
Konsole und auswählenRoles
- Suchen Sie nach dem Namen der Rolle, die Sie gerade erstellt haben (z. B.
AmazonSageMaker-ExecutionRole-20210301T154158
) - Wählen Sie den Rollennamen aus, um die Rolle in der Konsole zu öffnen
- Hängen Sie die folgenden drei Richtlinien an:
- Wählen Sie Richtlinien anhängen aus
- Hänge an
AWSLambda_FullAccess
zur Rolle - Auswählen
Trust Relationships
→Edit Trust Relationships
- Bearbeiten Sie die Vertrauensbeziehung JSON,
- Ersetzen
YOUR_ACCOUNT_NUMBER
mit Ihrer numerischen AWS-Kontonummer, um zu lesen: - Speichern Sie die Vertrauensstellung
- Erlauben Sie dieser Rolle den Zugriff auf alle S3-Buckets, indem Sie auswählen
- Kehren Sie zum neuen Ground Truth-Job im vorherigen AWS Management Console-Fenster zurück: unter
Task Category
WählenCustom
- Auswählen
Next
- Auswählen
Worker types
:Private
- Wähle aus
Private team
:ner-worker-team
die im vorigen Abschnitt erstellt wurde - Im
Custom labeling task setup
Textbereich, löschen Sie den Standardinhalt und fügen Sie den Inhalt der einworker-template.liquid.html
zuvor erhaltene Datei - Präzisiere das
Pre-labeling task Lambda function
mit der zuvor erstellten Funktion:smgt-ner-pre-labeling
- Präzisiere das
Post-labeling task Lambda function
mit der zuvor erstellten Funktion:smgt-ner-post-labeling
- Auswählen
Create
Dokumente kommentieren
Sobald der Ground Truth-Job erstellt ist, können wir mit dem Kommentieren von Dokumenten beginnen. Öffnen Sie das zuvor erstellte Mitarbeiterportal für unsere Belegschaft (navigieren Sie in der AWS-Managementkonsole zu SageMaker
, Ground Truth → Labeling workforces
, Private
und öffnen Sie die Labeling portal sign-in URL
)
Melden Sie sich an und wählen Sie die erste Beschriftungsaufgabe in der Tabelle aus. Wählen Sie dann „Mit der Arbeit beginnen“, um den Annotator zu öffnen. Führen Sie Ihre Anmerkungen durch und wählen Sie „Senden“ für alle drei Beispieldokumente aus.
Ergebnisse überprüfen
Wenn Ground Truth-Annotatoren Aufgaben erledigen, sind die Ergebnisse im Ausgabe-S3-Bucket verfügbar:
Sobald alle Aufgaben für einen Etikettierauftrag abgeschlossen sind, steht die konsolidierte Ausgabe in der zur Verfügung output.manifest
Datei befindet sich hier:
Dieses Ausgabemanifest ist eine JSON-Zeilendatei mit einem kommentierten Textdokument pro Zeile im zuvor angegebenen „Ausgabedokumentformat“. Diese Datei ist mit dem „Input Document Format“ kompatibel und kann für eine weitere Annotationsrunde direkt in einen nachfolgenden Ground-Truth-Job eingespeist werden. Alternativ kann es analysiert und an einen ML-Trainingsjob gesendet werden. Einige Szenarien, in denen wir eine zweite Runde von Anmerkungen verwenden könnten, sind:
- Unterteilen des Annotationsprozesses in zwei Schritte, in denen der erste Annotator Entitätsannotationen identifiziert und der zweite Annotator Beziehungen zeichnet
- Nehmen Sie eine Probe von unserem
output.manifest
und Senden an einen zweiten, erfahreneren Kommentator zur Überprüfung als Qualitätskontrolle
Benutzerdefinierte Ground-Truth-Anmerkungsvorlagen
Das in diesem Dokument beschriebene NER-Annotationstool wird als benutzerdefinierte Ground-Truth-Annotationsvorlage implementiert. AWS-Kunden können ihre eigenen benutzerdefinierten Anmerkungsschnittstellen erstellen, indem sie die hier zu findenden Anweisungen verwenden:
Zusammenfassung
Durch die Zusammenarbeit konnten Booking.com und Amazon MLSL ein leistungsstarkes Textannotationstool entwickeln, das in der Lage ist, komplexe Named-Entity-Erkennungs- und Beziehungsannotationen zu erstellen.
Wir empfehlen AWS-Kunden mit einem Anwendungsfall für NER-Textanmerkungen, das in diesem Beitrag beschriebene Tool auszuprobieren. Wenn Sie Hilfe benötigen, um den Einsatz von ML in Ihren Produkten und Dienstleistungen zu beschleunigen, wenden Sie sich bitte an die Amazon Machine Learning Solutions Lab.
Über die Autoren
Dan Edel ist Softwareentwicklungsingenieur bei Amazon, wo er dabei hilft, ansprechende Benutzererlebnisse zu schaffen. In seiner Freizeit liest er gerne, trainiert und erlebt Abenteuer mit seiner Familie.
Pri Nonis ist Deep Learning Architect im Amazon ML Solutions Lab, wo er mit Kunden aus verschiedenen Branchen zusammenarbeitet und ihnen hilft, ihre Cloud-Migration zu beschleunigen und ihre ML-Probleme mit modernsten Lösungen und Technologien zu lösen.
Niharika Jayanthi ist Front End Engineer bei AWS, wo sie benutzerdefinierte Annotationslösungen für Amazon SageMaker-Kunden entwickelt. Außerhalb der Arbeit geht sie gerne in Museen und trainiert.
Amit Beka ist Machine Learning Manager bei Booking.com, mit über 15 Jahren Erfahrung in der Softwareentwicklung und im maschinellen Lernen. Er ist fasziniert von Menschen und Sprachen und wie Computer immer noch von beidem verwirrt sind.
- '
- 100
- 11
- 7
- Über uns
- Zugang
- Konto
- Buchhaltung
- über
- Action
- Zusatz
- Zusätzliche
- Alle
- Amazon
- Amazon Machine Learning
- Amazon Sage Maker
- Mehrdeutigkeit
- Analyse
- Bereich
- verfügbar
- Verfügbar für alle
- AWS
- Anfang
- Sein
- bauen
- Building
- österreichische Unternehmen
- Fälle
- Einstufung
- Cloud
- Code
- Sammlung
- Komplex
- Computer
- Konfiguration
- Berücksichtigung
- Konsul (Console)
- Inhalt
- Inhalt
- könnte
- Erstellen
- kritischem
- Customer Experience
- Kunden
- technische Daten
- tiefe Lernen
- entwickeln
- Entwickler:in / Unternehmen
- Entwicklung
- anders
- Unterlagen
- Tut nicht
- leicht
- bewirken
- emoji
- ermutigen
- Ingenieur
- etc
- Beispiel
- Ausführung
- erwartet
- ERFAHRUNGEN
- Erfahrungen
- Familie
- Fed
- Feedback
- Felder
- Endlich
- Vorname
- Fitness
- Nahrung,
- Format
- gefunden
- voller
- Funktion
- gif
- gehen
- GUEST
- Guide
- Hilfe
- hilft
- hier
- Hervorheben
- Hotels
- Ultraschall
- Hilfe
- HTTPS
- IAM
- umgesetzt
- wichtig
- Einschließlich
- Index
- Krankengymnastik
- IT
- JavaScript
- Job
- Reise
- Wesentliche
- Beschriftung
- Etiketten
- Sprache
- Sprachen
- grosse
- führenden
- LERNEN
- lernen
- Rechtlich
- Niveau
- Cholesterinspiegel
- Line
- LINK
- Flüssigkeit
- Liste
- Liste
- örtlich
- Standorte
- suchen
- Maschinelles Lernen
- Management
- Kennzeichen
- Markt
- Spiel
- Meta
- Geist / Bewusstsein
- ML
- Modell
- mehr
- Museen
- Namen
- Natürliche Sprache
- Verarbeitung natürlicher Sprache
- erforderlich
- Nlp
- Zahlen
- Angebote
- Offset
- Online
- XNUMXh geöffnet
- öffnet
- Gelegenheit
- Andere
- Personen
- Sätze
- Plattform
- Plattformen
- Politik durchzulesen
- Datenschutzrichtlinien
- Pool
- Portal
- nach der Pandemie
- größte treibende
- Preis
- Principal
- privat
- Prozessdefinierung
- Produkte
- Programmierung
- Programmiersprachen
- Resorts
- die
- bietet
- Python
- Qualität
- Frage
- Lesebrillen
- Beziehungen
- Voraussetzungen:
- Ressourcen
- Downloads
- im Deck Restaurant
- Die Ergebnisse
- Überprüfen
- Bewertungen
- Schlafzimmer
- sagemaker
- Einsparung
- Skalieren
- Sinn
- Gefühl
- Leistungen
- kompensieren
- Short
- Einfacher
- So
- Software
- Software-Entwicklung
- Lösungen
- LÖSEN
- Raumfahrt
- Geschwindigkeit
- Anfang
- Erklärung
- bleiben
- storage
- Support
- Target
- Technologies
- Die Quelle
- Zeit
- gemeinsam
- Tokenisierung
- Tokens
- Werkzeug
- Top
- Top-Level
- verfolgen sind
- traditionell
- Ausbildung
- reisen
- behandeln
- behandelt
- Vertrauen
- us
- Nutzer
- Wert
- Version
- Anzeigen
- Was
- .
- Arbeiten
- gearbeitet
- Arbeiter
- Belegschaft
- arbeiten,
- ausarbeiten
- Werk
- weltweit wie ausgehandelt und gekauft ausgeführt wird.
- weltweit
- würde
- Jahr