Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Eine benutzerdefinierte Vorlage für Worker-Aufgaben erstellen
Um einen benutzerdefinierten Labeling-Job zu erstellen, müssen Sie die Worker-Aufgabenvorlage aktualisieren, die Eingabedaten aus Ihrer Manifestdatei den in der Vorlage verwendeten Variablen zuordnen und die Ausgabedaten Amazon S3 zuordnen. Weitere Informationen zu erweiterten Funktionen, die Liquid Automation verwenden, finden Sie unterHinzufügen von Automation mit Liquid.
In den folgenden Abschnitten werden die einzelnen erforderlichen Schritte beschrieben.
Vorlage für Worker-Aufgaben
Eine Worker-Aufgabenvorlage ist eine Datei, die von Ground Truth verwendet wird, um die Worker-Benutzeroberfläche (UI) anzupassen. Sie können eine Vorlage für Arbeitsaufgaben mithilfe der Template-Sprache HTML CSS JavaScript,,, Liquid
In den folgenden Themen erfahren Sie, wie Sie eine Worker-Aufgabenvorlage erstellen können. Ein Repository mit Beispielvorlagen für Ground Truth Worker-Aufgaben finden Sie unter GitHub
Verwenden Sie die Base-Worker-Aufgabenvorlage in der SageMaker AI-Konsole
Mithilfe eines Vorlageneditors in der Ground-Truth-Konsole können Sie eine Vorlage erstellen. Dieser Editor enthält eine Reihe von vorgefertigten Basisvorlagen. Er unterstützt das automatische Ausfüllen von Code HTML und Crowd HTML Element Code.
So greifen Sie auf den Ground-Truth-Editor für benutzerdefinierte Vorlagen zu:
-
Folgen Sie den Anweisungen inErstellen eines Kennzeichnungsauftrags (Konsole).
-
Wählen Sie dann Benutzerdefiniert für den Aufgabentyp des Labeling-Jobs aus.
-
Wählen Sie Weiter, und dann können Sie im Abschnitt Einrichtung benutzerdefinierter Labeling-Aufgaben auf den Vorlageneditor und die Basisvorlagen zugreifen.
-
(Optional) Wählen Sie im Dropdown-Menü unter Vorlagen eine Basisvorlage aus. Wenn Sie eine Vorlage lieber von Grund auf neu erstellen möchten, wählen Sie im Dropdown-Menü die Option Benutzerdefiniert aus, um ein minimales Vorlagengerüst zu erhalten.
Im folgenden Abschnitt erfahren Sie, wie Sie eine in der Konsole entwickelte Vorlage lokal visualisieren können.
Visualisieren Sie Ihre Worker-Aufgabenvorlagen lokal
Sie müssen die Konsole verwenden, um zu testen, wie Ihre Vorlage eingehende Daten verarbeitet. Um das Erscheinungsbild Ihrer Vorlage und der benutzerdefinierten Elemente zu testen, können Sie Ihren Browser verwenden. HTML
Anmerkung
Variablen werden nicht analysiert. Möglicherweise müssen Sie sie durch Beispielinhalte ersetzen, während Sie Ihre Inhalte lokal anzeigen.
Der folgende Beispielcodeausschnitt lädt den erforderlichen Code zum Rendern der benutzerdefinierten HTML Elemente. Verwenden Sie dies, wenn Sie das Erscheinungsbild Ihrer Vorlage lieber in Ihrem bevorzugten Editor und nicht in der Konsole entwickeln möchten.
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script>
Ein einfaches HTML Aufgabenbeispiel erstellen
Da Sie nun über die Basisvorlage für Worker-Aufgaben verfügen, können Sie dieses Thema verwenden, um eine einfache HTML Aufgabenvorlage zu erstellen.
Im Folgenden finden Sie einen Beispieleintrag aus einer Eingabemanifestdatei.
{ "source": "This train is really late.", "labels": [ "angry" , "sad", "happy" , "inconclusive" ], "header": "What emotion is the speaker feeling?" }
In der HTML Aufgabenvorlage müssen wir die Variablen aus der Eingabemanifestdatei der Vorlage zuordnen. Die Variable aus dem Beispiel-Eingabemanifest würde mit der folgenden Syntax zugeordnet: task.input.source
task.input.labels
, undtask.input.header
.
Im Folgenden finden Sie ein einfaches Beispiel für eine HTML Worker-Aufgabenvorlage für die Tweet-Analyse. Alle Aufgaben beginnen und enden mit den <crowd-form> </crowd-form>
-Elementen. Wie bei HTML <form>
Standardelementen sollte Ihr gesamter Formularcode dazwischen liegen. Ground Truth generiert die Aufgaben der Mitarbeiter direkt aus dem in der Vorlage angegebenen Kontext, es sei denn, Sie implementieren ein Lambda mit Pre-Annotation. Das von Ground Truth zurückgegebene taskInput
Objekt oder Lambda zur Vorverarbeitung das task.input
Objekt in Ihren Vorlagen.
Für eine einfache Tweet-Analyseaufgabe verwenden Sie das <crowd-classifier>
-Element. Es erfordert die folgenden Attribute:
name — Der Name Ihrer Ausgabevariablen. Worker-Anmerkungen werden unter diesem Variablennamen in Ihrem Ausgabemanifest gespeichert.
Kategorien — ein JSON formatiertes Array der möglichen Antworten.
header (Header) – ein Titel für das Anmerkungstool.
Das <crowd-classifier>
Element benötigt mindestens die drei folgenden untergeordneten Elemente.
<classification-target>- Der Text, den der Worker anhand der im obigen
categories
Attribut angegebenen Optionen klassifizieren wird.<full-instructions>- Anweisungen, die über den Link „Vollständige Anweisungen anzeigen“ im Tool verfügbar sind. Dies kann leer bleiben, aber es wird empfohlen, dass Sie gute Anweisungen geben, um bessere Ergebnisse zu erzielen.
<short-instructions>- Eine kürzere Beschreibung der Aufgabe, die in der Seitenleiste des Tools angezeigt wird. Dies kann leer bleiben, aber es wird empfohlen, dass Sie gute Anweisungen geben, um bessere Ergebnisse zu erzielen.
Eine einfache Version dieses Tools würde wie folgt aussehen. Die Variable {{ task.input.source }}
gibt die Quelldaten aus Ihrer Eingabemanifestdatei an. Dies {{ task.input.labels | to_json }}
ist ein Beispiel für einen Variablenfilter, um das Array in eine JSON Repräsentation umzuwandeln. Das categories
Attribut muss seinJSON.
Beispiel von der Verwendung crowd-classifier
mit dem Beispiel-Eingabemanifest json
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script> <crowd-form> <crowd-classifier name=
"tweetFeeling"
categories="='{{ task.input.labels | to_json }}'
" header="{{ task.input.header }}'" > <classification-target>{{ task.input.source }}
</classification-target> <full-instructions header="Sentiment Analysis Instructions"> Try to determine the sentiment the author of the tweet is trying to express. If none seem to match, choose "cannot determine." </full-instructions> <short-instructions> Pick the term that best describes the sentiment of the tweet. </short-instructions> </crowd-classifier> </crowd-form>
Sie können den Code kopieren und in den Editor des Workflows zur Erstellung von Ground Truth Labeling-Jobs einfügen, um eine Vorschau des Tools anzuzeigen, oder eine Demo dieses Codes ausprobieren CodePen.
Eingabedaten, externe Ressourcen und Ihre Aufgabenvorlage
In den folgenden Abschnitten werden die Verwendung externer Ressourcen, die Anforderungen an das Eingabedatenformat und wann die Verwendung von Lambda-Funktionen vor der Annotation in Betracht gezogen werden sollte, beschrieben.
Anforderungen an das Eingabedatenformat
Wenn Sie eine Eingabe-Manifestdatei für Ihren benutzerdefinierten Ground Truth Labeling-Job erstellen, müssen Sie die Daten in Amazon S3 speichern. Die Eingabemanifestdateien müssen auch in derselben Datei gespeichert werden, AWS-Region in der Ihr benutzerdefinierter Ground Truth Truth-Labeling-Job ausgeführt werden soll. Darüber hinaus kann es in jedem Amazon S3 S3-Bucket gespeichert werden, auf den die IAM Servicerolle zugreifen kann, mit der Sie Ihren benutzerdefinierten Labeling-Job in Ground Truth ausführen.
Eingabe-Manifestdateien müssen das durch Zeilenumbrüche getrennte Format oder das JSON Zeilenformat verwenden. JSON Jede Zeile ist durch einen Standardzeilenumbruch oder begrenzt. \n
\r\n
Jede Zeile muss außerdem ein JSON gültiges Objekt sein.
Außerdem muss jedes JSON Objekt in der Manifestdatei einen der folgenden Schlüssel enthalten: source-ref
odersource
. Der Wert der Schlüssel wird wie folgt festgelegt:
-
source-ref
– Die Quelle des Objekts ist das im Wert angegebene Amazon-S3-Objekt. Verwenden Sie diesen Wert, wenn es sich bei dem Objekt um ein binäres Objekt handelt, z. B. ein Bild. -
source
– Die Quelle des Objekts ist der Wert. Verwenden Sie diesen Wert, wenn das Objekt ein Textwert ist.
Weitere Informationen zum Formatieren Ihrer Eingabe-Manifestdateien finden Sie unterEingabe-Manifestdateien.
Lambda-Funktion vor der Anmerkung
Sie können optional eine Lambda-Funktion vor der Anmerkung angeben, um zu verwalten, wie Daten aus Ihrer Eingabe-Manifestdatei vor der Kennzeichnung behandelt werden. Wenn Sie das isHumanAnnotationRequired
Schlüssel-Wert-Paar angegeben haben, müssen Sie eine Lambda-Funktion vor der Anmerkung verwenden. Wenn Ground Truth der Lambda-Funktion vor der Anmerkung eine JSON formatierte Anfrage sendet, verwendet sie die folgenden Schemas.
Beispiel Datenobjekt, das mit dem Schlüssel-Wert-Paar identifiziert wurde source-ref
{ "version": "2018-10-16", "labelingJobArn":
arn:aws:lambda:us-west-2:555555555555:function:my-function
"dataObject" : { "source-ref":s3://input-data-bucket/data-object-file-name
} }
Beispiel Datenobjekt, das mit dem Schlüssel-Wert-Paar identifiziert wurde source
{ "version": "2018-10-16", "labelingJobArn" :
arn:aws:lambda:us-west-2:555555555555:function:my-function
"dataObject" : { "source":Sue purchased 10 shares of the stock on April 10th, 2020
} }
Das Folgende ist die erwartete Reaktion der Lambda-Funktion, wenn sie verwendet isHumanAnnotationRequired
wird.
{ "taskInput":
{ "source": "This train is really late.", "labels": [ "angry" , "sad" , "happy" , "inconclusive" ], "header": "What emotion is the speaker feeling?" }
, "isHumanAnnotationRequired":False
}
Verwenden externer Assets
Benutzerdefinierte Vorlagen von Amazon SageMaker Ground Truth ermöglichen das Einbetten externer Skripts und Stylesheets. Der folgende Codeblock zeigt beispielsweise, wie Sie Ihrer Vorlage ein Stylesheet hinzufügen würden, das sich unter https://www.example.com/my-enhancement-styles.css
befindet.
<script src="https://www.example.com/my-enhancment-script.js"></script> <link rel="stylesheet" type="text/css" href="https://www.example.com/my-enhancement-styles.css">
Wenn Sie auf Fehler stoßen, stellen Sie sicher, dass Ihr Ursprungsserver die Header des richtigen MIME Typs und der richtigen Kodierung mit den Assets sendet.
Beispielsweise lauten die Kodierungstypen MIME und -typen für Remoteskripts:application/javascript;CHARSET=UTF-8
.
Der Kodierungstyp MIME und der Kodierungstyp für Remote-Stylesheets sind:. text/css;CHARSET=UTF-8
Ausgabedaten und Ihre Aufgabenvorlage
In den folgenden Abschnitten werden die Ausgabedaten eines benutzerdefinierten Labeling-Jobs beschrieben und es wird beschrieben, wann die Verwendung einer Lambda-Funktion nach der Anmerkung in Betracht gezogen werden sollte.
Ausgabedaten
Wenn Ihr benutzerdefinierter Labeling-Job abgeschlossen ist, werden die Daten in dem Amazon S3 S3-Bucket gespeichert, der bei der Erstellung des Labeling-Jobs angegeben wurde. Die Daten werden in einer output.manifest
Datei gespeichert.
Anmerkung
labelAttributeName
ist eine Platzhaltervariable. In Ihrer Ausgabe ist es entweder der Name Ihres Label-Jobs oder der Name des Label-Attributs, den Sie bei der Erstellung des Label-Jobs angeben.
-
source
odersource-ref
— Entweder die Zeichenfolge oder ein URI S3-Mitarbeiter wurden gebeten, sie zu beschriften. -
labelAttributeName
— Ein Wörterbuch, das konsolidierte Labelinhalte aus der Lambda-Funktion nach der Annotation enthält. Wenn keine Lambda-Funktion nach der Annotation angegeben ist, ist dieses Wörterbuch leer. -
labelAttributeName-metadata
— Metadaten aus Ihrem benutzerdefinierten Labeling-Job wurden von Ground Truth hinzugefügt. -
worker-response-ref
— Das S3 URI des Buckets, in dem die Daten gespeichert sind. Wenn eine Lambda-Funktion nach der Annotation angegeben wird, wird dieses Schlüssel-Wert-Paar nicht angezeigt.
In diesem Beispiel ist das JSON Objekt aus Gründen der Lesbarkeit formatiert. In der eigentlichen Ausgabedatei befindet sich das JSON Objekt in einer einzigen Zeile.
{ "source" : "
This train is really late.
", "labelAttributeName" : {}, "labelAttributeName-metadata": { # These key values pairs are added by Ground Truth "job_name": "test-labeling-job
", "type": "groundTruth/custom", "human-annotated": "yes", "creation_date": "2021-03-08T23:06:49.111000", "worker-response-ref": "s3://amzn-s3-demo-bucket/test-labeling-job/annotations/worker-response/iteration-1/0/2021-03-08_23:06:49.json
" } }
Verwenden Sie eine Post-Annotation Lambda, um die Ergebnisse Ihrer Mitarbeiter zu konsolidieren
Standardmäßig speichert Ground Truth die Antworten der Mitarbeiter unbearbeitet in Amazon S3. Um eine genauere Kontrolle darüber zu haben, wie Antworten behandelt werden, können Sie eine Lambda-Funktion nach der Anmerkung angeben. Beispielsweise könnte eine Lambda-Funktion nach der Annotation verwendet werden, um Annotationen zu konsolidieren, wenn mehrere Worker dasselbe Datenobjekt beschriftet haben. Weitere Informationen zum Erstellen von Lambda-Funktionen nach der Annotation finden Sie unter. Lambda zur Nachbearbeitung
Wenn Sie eine Lambda-Funktion nach der Annotation verwenden möchten, muss sie als Teil der AnnotationConsolidationConfig
in einer CreateLabelingJob
Anfrage angegeben werden.
Weitere Informationen darüber, wie die Konsolidierung von Anmerkungen funktioniert, finden Sie unter. Konsolidierung von Anmerkungen