本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
新增包含 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>
請注意上面將 “ | to_json
” 新增至 labels
屬性。這是將陣列轉換為陣列JSON表示法的篩選條件。下一節將說明變數篩選條件。
下列清單包含兩種 Liquid 標籤,您可能會發現這些標籤對於自動化範本輸入資料處理很有用。如果您選取下列其中一種標籤類型,系統會將您重新導向至 Liquid 文件。
-
控制流程
:包括程式設計邏輯運算子,例如 if/else
、unless
、case/when
。 -
迭代
:可讓您使用 for 循環之類的陳述式重複執行程式碼區塊。 如需使用 Liquid 元素建立 for loop 的HTML範本範例,請參閱 中的 translation-review-and-correction.liquid.html
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由於在雙捲曲支架之間而直接插入 。