Ajout de l'automatisation avec Liquid - Amazon SageMaker

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Ajout de l'automatisation avec Liquid

Notre système de modèle personnalisé utilise Liquid pour l'automatisation. Il s'agit d'un langage de balisage open source en ligne. Dans Liquid, le texte entre accolades simples et symboles de pourcentage est une instruction ou balise qui exécute une opération telle qu'un flux de contrôle ou une itération. Le texte entre accolades doubles est une variable ou un objet qui génère sa valeur.

L'utilisation la plus courante de Liquid consistera à analyser les données provenant de vos tâches de pré-étiquetage Lambda et à en extraire les variables appropriées pour créer la tâche. L'objet taskInput renvoyé par votre Lambda de pré-annotation sera disponible en tant qu'objet task.input dans vos modèles.

Les propriétés de votre manifeste de données sont transmises à vos objets Lambda de pré-annotation en tant que event.dataObject. Un simple script de passerelle renvoie simplement cet objet en tant qu'objet taskInput. Vous pouvez représenter les valeurs de votre manifeste en tant que variables comme suit.

Exemple Objet des données de manifeste
{ "source": "This is a sample text for classification", "labels": [ "angry" , "sad" , "happy" , "inconclusive" ], "header": "What emotion is the speaker feeling?" }
Exemple Échantillon HTML utilisant des variables
<crowd-classifier name='tweetFeeling' categories='{{ task.input.labels | to_json }}' header='{{ task.input.header }}' > <classification-target> {{ task.input.source }} </classification-target>

Notez l'ajout de «  | to_json » à la propriété labels ci-dessus. Il s'agit d'un filtre qui transforme le tableau en une JSON représentation du tableau. Les filtres de variables sont expliqués en la section suivante.

La liste suivante comprend deux types de balises Liquid qui peuvent être utiles pour automatiser le traitement des données source de modèle. La sélection de l'un des types de balises suivants vous redirige vers la documentation Liquid.

  • Contrôle de flux : inclut des opérateurs logiques de programmation tels que if/else, unless et case/when.

  • Itération : vous permet d'exécuter des blocs de code de façon répétée en utilisant des instructions comme pour les boucles.

    Pour un exemple de HTML modèle utilisant des éléments Liquid pour créer une boucle for, voir translation-review-and-correction.liquid.html dans. GitHub

Pour obtenir plus d'informations et la documentation, consultez la page d'accueil de Liquid.

Filtres de variables

Outre les actions et filtres Liquid standard, Ground Truth propose quelques filtres supplémentaires. Les filtres sont appliqués en plaçant une barre verticale (|) après le nom de la variable, puis en spécifiant un nom de filtre. Les filtres peuvent être associés sous la forme de :

{{ <content> | <filter> | <filter> }}

Échappement automatique et échappement explicite

Par défaut, les entrées seront HTML ignorées pour éviter toute confusion entre votre texte variable etHTML. Vous pouvez ajouter explicitement le filtre escape afin que les personnes qui lisent la source de votre modèle comprennent qu'il s'agit d'un échappement.

escape_once

escape_once s'assure que votre code ne sera pas placé dans une seconde séquence d'échappement alors qu'il l'est déjà. Par exemple, afin que &amp; ne devienne pas &amp;amp;.

skip_autoescape

skip_autoescapeest utile lorsque votre contenu est destiné à être utilisé commeHTML. Par exemple, vous pouvez avoir quelques paragraphes de texte et des images dans les instructions complètes d'un cadre de délimitation.

Utilisez skip_autoescape avec modération

La bonne pratique consiste à éviter de transmettre du code fonctionnel ou du balisage avec skip_autoescape, sauf si vous êtes absolument certain que vous maîtrisez parfaitement ce qui est transmis. Si vous transmettez l'entrée d'un utilisateur, vous risquez d'exposer vos employés à une attaque de script intersite.

to_json

to_jsonencodera ce que vous lui transmettez JSON (notation JavaScript d'objet). Si vous lui fournissez un objet, il va le sérialiser.

grant_read_access

grant_read_accessprend un S3 URI et l'encode dans un HTTPS URL jeton d'accès de courte durée pour cette ressource. Cela permet de montrer aux employés des objets photo, audio ou vidéo stockés dans des compartiments S3 qui ne sont pas autrement accessibles publiquement.

Exemple des filtres

Entrée

auto-escape: {{ "Have you read 'James & the Giant Peach'?" }} explicit escape: {{ "Have you read 'James & the Giant Peach'?" | escape }} explicit escape_once: {{ "Have you read 'James &amp; the Giant Peach'?" | escape_once }} skip_autoescape: {{ "Have you read 'James & the Giant Peach'?" | skip_autoescape }} to_json: {{ jsObject | to_json }} grant_read_access: {{ "s3://mybucket/myphoto.png" | grant_read_access }}

Sortie

auto-escape: Have you read &#39;James &amp; the Giant Peach&#39;? explicit escape: Have you read &#39;James &amp; the Giant Peach&#39;? explicit escape_once: Have you read &#39;James &amp; the Giant Peach&#39;? skip_autoescape: Have you read 'James & the Giant Peach'? to_json: { "point_number": 8, "coords": [ 59, 76 ] } grant_read_access: https://s3.amazonaws.com/mybucket/myphoto.png?<access token and other params>
Exemple d'un modèle de classification automatique.

Pour automatiser l'exemple de classification de texte simple, remplacez le texte du tweet par une variable.

Le modèle de classification de texte se trouve ci-dessous et comprend l'automatisation. Les modifications/ajouts sont mis en évidence en gras.

<script src="https://assets.crowd.aws/crowd-html-elements.js"></script> <crowd-form> <crowd-classifier name="tweetFeeling" categories="['positive', 'negative', 'neutral', 'cannot determine']" header="Which term best describes this tweet?" > <classification-target> {{ task.input.source }} </classification-target> <full-instructions header="Analyzing a sentiment"> Try to determine the feeling the author of the tweet is trying to express. If none seem to match, choose "other." </full-instructions> <short-instructions> Pick the term best describing the sentiment of the tweet. </short-instructions> </crowd-classifier> </crowd-form>

Le texte du tweet de l'exemple précédent est désormais remplacé par un objet. L'entry.taskInputobjet utilise source (ou un autre nom que vous spécifiez dans votre Lambda de pré-annotation) comme nom de propriété pour le texte et il est inséré directement dans HTML le parce qu'il se trouve entre des accolades doubles.