本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
建立自訂工作者任務範本
若要建立自訂標籤工作,您需要更新工作者任務範本、將資訊清單檔案的輸入資料對應至範本中使用的變數,以及將輸出資料對應至 Amazon S3。若要進一步了解使用 Liquid 自動化的進階功能,請參閱 新增包含 Liquid 的自動化。
下列各節說明每個必要步驟。
工作者任務範本
工作者任務範本是 Ground Truth 用來自訂工作者使用者介面 (UI) 的檔案。您可利用 HTML、CSS、JavaScript、Liquid 範本語言
您可利用下列主題來了解如何建立工作者任務範本。您可於 GitHub
在 SageMaker AI 主控台中使用基礎工作者任務範本
您可利用 Ground Truth 主控台的範本編輯器開始建立範本。此編輯器包含許多預先設計的基礎範本。它支援自動填入 HTML 和 Crowd HTML Element 程式碼。
若要存取 Ground Truth 自訂範本編輯器:
-
遵循 中的指示建立標籤工作 (主控台)。
-
然後針對標籤工作任務類型選取自訂。
-
選擇下一步,然後您可以在自訂標籤任務設定區段中存取範本編輯器和基本範本。
-
(選用) 從 Templates (範本) 的下拉式功能表選取基礎範本。如您偏好從頭開始建立範本,請從下拉式功能表選擇 Custom (自訂),即可取得最簡單的範本骨架。
使用下列章節,了解如何視覺化在本機主控台中開發的範本。
在本機視覺化您的工作者任務範本
您必須使用 主控台來測試範本處理傳入資料的方式。若要測試範本 HTML 和自訂元素的外觀和風格,您可以使用瀏覽器。
注意
將不會剖析變數。在本機檢視內容時,您可能需要將它們取代為範例內容。
下列程式碼片段範例會載入必要的程式碼,以轉譯自訂 HTML 元素。如果您想要以您偏好的編輯器 (而不是主控台) 來開發範本外觀和風格,請使用此操作。
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script>
建立簡單的 HTML 任務範例
現在您已擁有基礎工作者任務範本,您可以使用此主題來建立簡單的 HTML 型任務範本。
以下是輸入資訊清單檔案的範例項目。
{ "source": "This train is really late.", "labels": [ "angry" , "sad", "happy" , "inconclusive" ], "header": "What emotion is the speaker feeling?" }
在 HTML 任務範本中,我們需要將變數從輸入資訊清單檔案映射到範本。來自範例輸入資訊清單的變數將使用下列語法 task.input.source
、 task.input.labels
和 進行映射task.input.header
。
以下是 tweet-analysis 的 HTML 工作者任務範本範例。所有任務都以 <crowd-form> </crowd-form>
元素開始和結束。如同標準 HTML <form>
元素,所有表單程式碼都應該放置於其中間。Ground Truth 會直接從範本中指定的內容產生工作者的任務,除非您實作預先註釋 Lambda。Ground Truth 傳回的taskInput
物件,或 註釋前 Lambda是 範本中的task.input
物件。
針對簡單的推文分析任務,請使用 <crowd-classifier>
元素。需要下列屬性:
name - 輸出變數的名稱。工作者註釋會儲存至輸出資訊清單中的此變數名稱。
類別– 多種可能解答的 JSON 格式陣列。
標題 - 註釋工具的標題
<crowd-classifier>
元素至少需要下列三個子元素。
<classification-target> - 工作者將根據上述
categories
屬性中指定的選項進行分類的文字。<full-instructions> - 可從工具中的「檢視完整說明」連結取得的說明。您可以將這項保留空白,但建議您提供完善說明以獲得更佳結果。
<short-instructions> - 工具側邊列中顯示的任務的更簡短描述。您可以將這項保留空白,但建議您提供完善說明以獲得更佳結果。
此工具的簡單版本如下所示。變數{{ task.input.source }}
是指定輸入資訊清單檔案來源資料的變數。{{ task.input.labels | to_json }}
是將陣列轉換為 JSON 表示法的變數篩選條件範例。categories
屬性必須是 JSON。
範例 使用 crowd-classifier
搭配範例輸入資訊清單 json
<script src="https://assets.crowd.aws/crowd-html-elements.js"></script> <crowd-form> <crowd-classifier name=
"tweetFeeling"
categories="='{{ task.input.labels | to_json }}'
" header="{{ task.input.header }}'" > <classification-target>{{ task.input.source }}
</classification-target> <full-instructions header="Sentiment Analysis Instructions"> Try to determine the sentiment the author of the tweet is trying to express. If none seem to match, choose "cannot determine." </full-instructions> <short-instructions> Pick the term that best describes the sentiment of the tweet. </short-instructions> </crowd-classifier> </crowd-form>
在 Ground Truth 標籤工作建立工作流程,您可將程式碼複製並貼到編輯器以便預覽工具,或試用 CodePen 上此程式碼的示範。
輸入資料、外部資產和您的任務範本
以下各節說明外部資產的使用、輸入資料格式需求,以及何時考慮使用預先註釋 Lambda 函數。
輸入資料格式需求
當您建立要在自訂 Ground Truth 標籤任務中使用的輸入資訊清單檔案時,您必須將資料存放在 Amazon S3 中。輸入資訊清單檔案也必須儲存在執行自訂 Ground Truth 標籤任務 AWS 區域 的相同位置。此外,它可以存放在任何 Amazon S3 儲存貯體中,可供您用來在 Ground Truth 中執行自訂標籤工作的 IAM 服務角色存取。
輸入資訊清單檔案必須使用以新行分隔的 JSON 或 JSON 行格式。每行都以標準換行符號分隔,\n
或 \r\n
。每行也必須是有效的 JSON 物件。
此外,資訊清單檔案中的每個 JSON 物件必須包含下列其中一個金鑰: source-ref
或 source
。鍵的值會解譯為如下:
-
source-ref
– 物件來源是數值所指定的 Amazon S3 物件。當物件是二進位物件 (例如映像) 時,請使用此值。 -
source
– 物件的來源即為數值。當物件為文字值時,請使用此值。
若要進一步了解如何格式化輸入資訊清單檔案,請參閱 輸入資訊清單檔案。
註釋前 Lambda 函數
您可以選擇指定預先註釋 Lambda 函數,以管理在標記之前處理輸入資訊清單檔案的資料的方式。如果您已指定isHumanAnnotationRequired
索引鍵/值對,則必須使用預先註釋的 Lambda 函數。當 Ground Truth 傳送預先註釋 Lambda 函數為 JSON 格式的請求時,會使用下列結構描述。
範例 使用source-ref
鍵/值對識別的資料物件
{ "version": "2018-10-16", "labelingJobArn":
arn:aws:lambda:us-west-2:555555555555:function:my-function
"dataObject" : { "source-ref":s3://input-data-bucket/data-object-file-name
} }
範例 使用source
鍵/值對識別的資料物件
{ "version": "2018-10-16", "labelingJobArn" :
arn:aws:lambda:us-west-2:555555555555:function:my-function
"dataObject" : { "source":Sue purchased 10 shares of the stock on April 10th, 2020
} }
以下是使用 Lambda isHumanAnnotationRequired
函數時的預期回應。
{ "taskInput":
{ "source": "This train is really late.", "labels": [ "angry" , "sad" , "happy" , "inconclusive" ], "header": "What emotion is the speaker feeling?" }
, "isHumanAnnotationRequired":False
}
使用外部資產
Amazon SageMaker Ground Truth 自訂範本允許嵌入外部指令碼與樣式表。例如,下列程式碼區塊示範如何將位於 https://www.example.com/my-enhancement-styles.css
的樣式表新增至範本。
<script src="https://www.example.com/my-enhancment-script.js"></script> <link rel="stylesheet" type="text/css" href="https://www.example.com/my-enhancement-styles.css">
如果發生錯誤,請確保您的原始伺服器傳送資產的正確 MIME 類型和編碼標題。
例如,遠端指令碼的 MIME 和編碼類型為:application/javascript;CHARSET=UTF-8
。
遠端樣式表的 MIME 和編碼類型為:text/css;CHARSET=UTF-8
。
輸出資料和您的任務範本
下列各節說明自訂標籤工作的輸出資料,以及何時考慮使用註釋後 Lambda 函數。
輸出資料
當您的自訂標籤任務完成時,資料會儲存在建立標籤任務時指定的 Amazon S3 儲存貯體中。資料會儲存在 output.manifest
檔案中。
注意
labelAttributeName
是預留位置變數。在輸出中,它是標籤任務的名稱,或是您在建立標籤任務時指定的標籤屬性名稱。
-
source
或source-ref
– 字串或 S3 URI 工作者被要求標記。 -
labelAttributeName
– 包含來自註釋後 Lambda 函數之合併標籤內容的字典。如果未指定註釋後 Lambda 函數,則此字典將為空。 -
labelAttributeName-metadata
– Ground Truth 所新增自訂標籤任務的中繼資料。 -
worker-response-ref
– 儲存資料的儲存貯體 S3 URI。如果指定註釋後 Lambda 函數,則不會出現此鍵/值對。
在此範例中,JSON 物件經過格式化以便於閱讀;在實際輸出檔案中,JSON 物件位於單一行上。
{ "source" : "
This train is really late.
", "labelAttributeName" : {}, "labelAttributeName-metadata": { # These key values pairs are added by Ground Truth "job_name": "test-labeling-job
", "type": "groundTruth/custom", "human-annotated": "yes", "creation_date": "2021-03-08T23:06:49.111000", "worker-response-ref": "s3://amzn-s3-demo-bucket/test-labeling-job/annotations/worker-response/iteration-1/0/2021-03-08_23:06:49.json
" } }
使用文章註釋 Lambda 合併工作者的結果
根據預設,Ground Truth 會將未處理的工作者回應儲存在 Amazon S3 中。若要更精細地控制回應的處理方式,您可以指定註釋後 Lambda 函數。例如,如果多個工作者已標記相同的資料物件,則可以使用註釋後 Lambda 函數來合併註釋。若要進一步了解如何建立註釋後 Lambda 函數,請參閱 註釋後 Lambda。
如果您想要使用註釋後 Lambda 函數,則必須在CreateLabelingJob
請求AnnotationConsolidationConfig
中將其指定為 的一部分。
若要進一步了解註釋合併的運作方式,請參閱 註釋合併。