本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Liquid 添加自动化
我们的自定义模板系统使用 Liquid
Liquid 的最常见用途是分析来自注释前 Lambda 的数据,并提取相关变量以创建任务。注释前 Lambda 返回的 taskInput
对象将作为模板中的 task.input
对象。
清单的数据对象中的属性将作为 event.dataObject
传递到 注释前 Lambda。简单的传递脚本仅将该对象作为 taskInput
对象返回。您可以将清单中的值表示为变量,如下所示。
例 清单数据对象
{ "source": "This is a sample text for classification", "labels": [ "angry" , "sad" , "happy" , "inconclusive" ], "header": "What emotion is the speaker feeling?" }
例 HTML使用变量的示例
<crowd-classifier name='tweetFeeling' categories='{{ task.input.labels | to_json }}' header='{{ task.input.header }}' > <classification-target> {{ task.input.source }} </classification-target>
请注意,在上面的 labels
属性中添加了“ | to_json
”。这是一个过滤器,用于将数组转换为数组的JSON表示形式。下一节将介绍变量筛选条件。
以下列表包括两种类型的 Liquid 标签,在自动化模板输入数据的处理时,这些标签可能会非常有用。如果您选择了以下标签类型之一,您将被重定向到 Liquid 文档。
-
控制流
:包括编程逻辑运算符,如 if/else
、unless
和case/when
。 -
迭代
:使您能够使用 for 循环之类的语句重复运行代码块。 有关使用 Liquid 元素创建 for 循环的HTML模板示例,请参阅中的.li translation-review-and-correctionquid.htm
l。 GitHub
有关更多信息和文档,请访问 Liquid 主页
变量筛选条件
除了标准的 Liquid 筛选条件|
) 字符,然后指定筛选条件名称,以应用筛选条件。筛选条件可以采用以下形式链接起来:
{{ <content> | <filter> | <filter> }}
自动转义和显式转义
默认情况下,将对输入进行HTML转义以防止在变量文本和之间出现混淆HTML。您可以显式添加 escape
筛选条件,以使其对于正读取正在进行转义的模板源的用户更显而易见。
escape_once
escape_once
可确保您的代码已经转义,而不会再次重新转义。例如,确保 & 不会变为 &amp;。
skip_autoescape
skip_autoescape
当你的内容打算用作时,它很有用HTML。例如,您可能在边界框的完整说明中有一些文本段落和一些图像。
请谨慎使用 skip_autoescape
模板中的最佳实践是避免使用 skip_autoescape
传递功能代码或标记,除非您绝对确信您对正传递的内容具有严格的控制。如果您传递用户输入,就可能使您的工作人员遭受跨站点脚本攻击。
to_json
to_json
将对您输入的内容进行编码JSON(JavaScript 对象表示法)。如果您向其提供对象,它会对该对象序列化。
grant_read_access
grant_read_access
获取 S3 URI 并将其编码为HTTPSURL带有该资源的短期访问令牌的。这样,就可以向工作人员显示存储在 S3 存储桶中但原本无法公开访问的照片、音频或视频对象。
例 筛选条件
输入
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 }}
输出
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>
例 自动化的分类模板。
要自动执行简单文本分类示例,请将推文文本替换为变量。
文本分类模板如下,添加了自动化功能。更改/添加以粗体突出显示。
<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>
前面示例中的推文文本现已替换为一个对象。该entry.taskInput
对象使用source
(或您在预注释 Lambda 中指定的其他名称)作为文本的属性名称,并且由于位于双大括号之间,它直接插入到中HTML。