As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Adicionar automação com o Liquid
Nosso sistema de modelo personalizado usa o Liquid
O uso mais comum do Liquid será para analisar os dados provenientes do pre-annotation Lambda (Lambda de pré-anotação) e extrair as variáveis relevantes para criar a tarefa. O objeto taskInput
retornado pelo Lambda de pré-anotação estará disponível como o objeto task.input
em seus modelos.
As propriedades nos objetos de dados do seu manifesto são passadas para o seu Lambda de pré-anotação como o event.dataObject
. Um simples script de passagem simplesmente retorna esse objeto como o objeto taskInput
. Você representa valores do seu manifesto como variáveis da seguinte forma.
exemplo Objeto de dados do manifesto
{ "source": "This is a sample text for classification", "labels": [ "angry" , "sad" , "happy" , "inconclusive" ], "header": "What emotion is the speaker feeling?" }
exemplo Amostra HTML usando variáveis
<crowd-classifier name='tweetFeeling' categories='{{ task.input.labels | to_json }}' header='{{ task.input.header }}' > <classification-target> {{ task.input.source }} </classification-target>
Observe a adição de " | to_json
" à propriedade labels
acima. Esse é um filtro para transformar a matriz em uma JSON representação da matriz. Os filtros de variáveis são explicados na próxima seção.
A lista a seguir inclui dois tipos de tags Liquid que podem ser úteis para automatizar o processamento de dados de entrada em modelos. Se você selecionar um dos seguintes tipos de tags, será redirecionado para a documentação do Liquid.
-
Fluxo de controle
: inclui operadores lógicos de programação como if/else
,unless
ecase/when
. -
Iteração
: permite que você execute blocos de código repetidamente usando instruções como for loops. Para ver um exemplo de um HTML modelo que usa elementos Liquid para criar um loop for, consulte translation-review-and-correction.liquid.html
em. GitHub
Para obter mais informações e acessar a documentação, visite a página inicial Liquid
Filtros de variáveis
Além dos filtros e ações padrão do Liquid|
) após o nome da variável e, em seguida, especificando um nome do filtro. Os filtros podem ser encadeados na forma de:
{{ <content> | <filter> | <filter> }}
Escape automático e escape explícito
Por padrão, as entradas serão HTML escapadas para evitar confusão entre o texto da variável e. HTML Você pode adicionar explicitamente o filtro escape
para tornar mais óbvio para alguém que esteja lendo a origem do seu modelo que o escape está sendo feito.
escape_once
escape_once
garante que, se você já tiver escapado seu código, ele não será reexibido além disso. Por exemplo, para que & não se torne &amp;.
skip_autoescape
skip_autoescape
é útil quando seu conteúdo deve ser usado comoHTML. Por exemplo, você pode ter alguns parágrafos de texto e algumas imagens nas instruções completas de uma caixa delimitadora.
Use skip_autoescape com moderação
A prática recomendada em modelos é evitar transmitir código da função ou marcação com skip_autoescape
, a menos que você tenha absoluta certeza de que tem o controle rígido sobre o que está sendo transmitido. Se você estiver transmitindo a entrada do usuário, poderá expor seus funcionários a um ataque de Cross Site Scripting.
to_json
to_json
codificará o conteúdo para o qual você o alimenta JSON (notação de JavaScript objeto). Se você alimentar um objeto, ele será serializado.
grant_read_access
grant_read_access
pega um S3 URI e o codifica em um HTTPS URL com um token de acesso de curta duração para esse recurso. Isso possibilita exibir aos trabalhadores fotos, áudio ou vídeo de armazenados em buckets do S3 que de outra forma não são acessíveis publicamente.
exemplo dos 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 }}
Saída
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>
exemplo de um modelo de classificação automatizado.
Para automatizar a amostra de classificação de texto simples, substitua o texto do tweet por uma variável.
O modelo de classificação de texto está abaixo com automação adicionada. As alterações/adições estão destacadas em negrito.
<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>
O texto do tweet que estava no exemplo anterior agora é substituído por um objeto. O entry.taskInput
objeto usa source
(ou outro nome que você especifica em sua pré-anotação Lambda) como o nome da propriedade do texto e é inserido diretamente no em virtude de estar entre chaves HTML duplas.