本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
新增包含 Liquid 的自動化
我們的自訂範本系統使用 Liquid
Liquid 最常見的用途是剖析來自輸入資訊清單檔案的資料,並提取相關變數以建立任務。除非指定預先註釋 Lambda,否則 Ground Truth 會自動產生任務。Ground Truth 或 傳回的taskInput
物件註釋前 Lambda是您範本中的task.input
物件。
輸入資訊清單中的屬性會以 的形式傳遞到您的範本event.dataObject
。
範例 資訊清單資料物件
{ "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 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 儲存貯體中不可公開存取的相片、音訊或影片物件。
s3_presign
s3_presign
篩選條件的運作方式與grant_read_access
篩選條件相同。 s3_presign
會採用 Amazon 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 }} s3_presign: {{ "s3://amzn-s3-demo-bucket/myphoto.png" | s3_presign }}
輸出
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>
s3_presign: 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會因為在雙大括號之間而直接插入 。