Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Adición de automatización con Liquid
Nuestro sistema de plantillas personalizado utiliza Liquid
El uso más frecuente de Liquid consistirá en analizar los datos procedentes de su Lambda de preanotación y extraer las variables pertinentes para crear la tarea. El objeto taskInput
devuelto por el Lambda de preanotación estará disponible como el objeto task.input
de las plantillas.
Las propiedades de los objetos de datos de su manifiesto se transfieren a su Lambda de preanotación como event.dataObject
. Un sencillo script de transferencia simplemente devuelve dicho objeto como el objeto taskInput
. Se representarían valores del manifiesto como variables tal y como se indica a continuación.
ejemplo Objeto de datos de manifiesto
{ "source": "This is a sample text for classification", "labels": [ "angry" , "sad" , "happy" , "inconclusive" ], "header": "What emotion is the speaker feeling?" }
ejemplo Ejemplo de HTML uso de variables
<crowd-classifier name='tweetFeeling' categories='{{ task.input.labels | to_json }}' header='{{ task.input.header }}' > <classification-target> {{ task.input.source }} </classification-target>
Tenga en cuenta la incorporación de " | to_json
" a la propiedad labels
anterior. Es un filtro para convertir la matriz en una JSON representación de la matriz. Los filtros de variables se explican en la siguiente sección.
La siguiente lista incluye dos tipos de etiquetas de Liquid que podrían ser útiles para automatizar el procesamiento de los datos de entrada de las plantillas. Si selecciona uno de los siguientes tipos de etiquetas, se le redirigirá a la documentación de Liquid.
-
Flujo de control
: incluye operadores lógicos de programación, como if/else
,unless
ycase/when
. -
Iteración
: permite ejecutar bloques de código repetidamente con instrucciones como los bucles for. Para ver un ejemplo de una HTML plantilla que usa elementos de Liquid para crear un bucle, consulta translation-review-and-correction.liquid.html
en. GitHub
Para obtener más información y documentación, visite la página de inicio de Liquid
Filtros de variables
Además de los filtros|
) después del nombre de la variable y luego especificando un nombre de filtro. Los filtros se pueden encadenar en forma de:
{{ <content> | <filter> | <filter> }}
Autoescape y escape explícito
De forma predeterminada, las entradas estarán HTML ocultas para evitar confusiones entre el texto de la variable y. HTML Puede añadir de forma explícita el filtro escape
para que sea más evidente para la persona que esté leyendo la fuente de la plantilla que se esta realizando un escape.
escape_once
escape_once
garantiza que si ya ha escapado el código, no se vuelva a realizar un escape encima de este. Por ejemplo, garantiza que & no se convierta en &amp;.
skip_autoescape
skip_autoescape
es útil cuando tu contenido está pensado para usarse comoHTML. Por ejemplo, puede que tenga unos cuantos párrafos de texto y algunas imágenes en las instrucciones completas de un cuadro delimitador.
Utilice skip_autoescape con moderación
La práctica recomendada en el caso de las plantillas es evitar trasferir código funcional o de marcado con skip_autoescape
, a menos que esté absolutamente seguro de que tiene un control estricto sobre lo que se transfiere. Si está pasando entradas de usuario, podría estar dejando a sus trabajadores desprotegidos ante un ataque de scripts de sitios.
to_json
to_json
codificará aquello a lo que lo introduzcas JSON (notación de JavaScript objetos). Si introduce un objeto, lo serializará.
grant_read_access
grant_read_access
toma un S3 URI y lo codifica en uno HTTPS URL con un token de acceso de corta duración para ese recurso. Esto permite mostrar a los trabajadores objetos de foto, audio o vídeo almacenados en buckets de S3 a los que, de lo contrario, no se podría obtener acceso públicamente.
ejemplo de los filtros
Entrada
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 & 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://amzn-s3-demo-bucket/myphoto.png" | grant_read_access }}
Salida
auto-escape: Have you read 'James & the Giant Peach'? explicit escape: Have you read 'James & the Giant Peach'? explicit escape_once: Have you read 'James & the Giant Peach'? skip_autoescape: Have you read 'James & the Giant Peach'? to_json: { "point_number": 8, "coords": [ 59, 76 ] } grant_read_access: https://s3.amazonaws.com/amzn-s3-demo-bucket/myphoto.png?
<access token and other params>
ejemplo de una plantilla de clasificación automatizada.
Para automatizar el ejemplo de clasificación de texto sencillo, sustituya el texto del tweet por una variable.
La plantilla de clasificación de texto siguiente tiene automatización añadida. Los cambios o adiciones se resaltan en negrita.
<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>
Ahora, el texto del tweet del ejemplo anterior se ha sustituido por un objeto. El entry.taskInput
objeto utiliza source
(u otro nombre que especifique en su Lambda previa) como nombre de propiedad del texto y se inserta directamente en él HTML al estar entre corchetes dobles.