本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon Comprehend 的非同步分析
以下各節使用 Amazon Comprehend API 執行非同步操作,以分析 Amazon Comprehend。
必要條件
文件必須是 UTF-8 格式的文字檔案。您可以使用兩種格式提交文件。您使用的格式取決於您要分析的文件類型,如下表所述。
描述 | 格式 |
---|---|
每個檔案都包含一個輸入文件。這是最適合大型文檔的集合。 | 每個檔案一個文件 |
輸入是一個或多個文件。檔案中的每一行都被視為一個文件。這最適合短文件,例如社交媒體張貼。 每行必須以換行符(LF,\ n),回車符(CR,\ r)或兩者結束(CRLF,\ r\ n)。您不能使用 UTF-8 行分隔符(u+2028)來結束一行。 |
每行一個文件 |
開始分析任務時,您可以指定輸入資料的 S3 位置。URI 必須與您呼叫的 API 端點位於相同的AWS區域。URI 可以指向單個文件,也可以是數據文件集合的前綴。如需詳細資訊,請參閱資InputDataConfig料類型。
您必須將包含文件收集和輸出檔案的 Amazon S3 儲存貯體授與 Amazon Comprehend 存取權。如需詳細資訊,請參閱 非同步操作所需的角色型許可。
開始分析工作
若要提交分析任務,請使用 Amazon Comprehend 主控台或適當Start*
的操作:
-
StartDominantLanguageDetectionJob— 啟動工作以檢測集合中每個文檔中的主要語言。如需文件中主要語言的詳細資訊,請參閱主要语言。
-
StartEntitiesDetectionJob— 啟動工作以偵測集合中每個文件中的實體。如需實體的詳細資訊,請參閱實體。
-
StartKeyPhrasesDetectionJob— 啟動工作以檢測集合中每個文檔中的關鍵短語。如需關鍵片語的詳細資訊,請參閱關鍵短語。
-
StartPiiEntitiesDetectionJob— 開始一項工作以檢測集合中的每個文檔中的個人身份信息(PII)。如需 PII 的詳細資訊,請參閱偵測PII實體。
-
StartSentimentDetectionJob— 啟動工作以偵測集合中每個文件中的情緒。如需情緒的詳細資訊,請參閱情緒。
監視分析工作
作Start*
業會傳回可用來監視工作進度的 ID。
若要使用 API 監視進度,請根據您要監視個別工作的進度還是多個工作的進度,使用兩種作業的其中一種。
若要監視個別分析工作的進度,請使用作Describe*
業。您可以提供作業傳回的工Start*
作 ID。Describe*
作業的回應包含具有工作狀態的JobStatus
欄位。
若要監視多個分析工作的進度,請使用這些作List*
業。 List*
作業會傳回您提交給亞馬遜的任務清單。回應包含每個工作的JobStatus
欄位,告訴您工作的狀態。
如果狀態欄位設定為COMPLETED
或FAILED
,表示工作處理已完成。
若要取得個別工Describe*
作的狀態,請使用您正在執行的分析作業。
若要取得多個工List*
作的狀態,請使用您正在執行的分析的作業。
若要將結果限制為符合特定條件的工單,請使用作List*
業的參數Filter
。您可以篩選工作名稱、工作狀態以及提交工作的日期和時間。如需詳細資訊,請Filter
參閱 Amazon Comprehend API 參考資料中每個List*
作業的參數。
取得分析結果
分析工作完成後,使用Describe*
作業取得結果的位置。如果任務狀態為COMPLETED
,則回應會包含一個OutputDataConfig
欄位,其中包含具有輸出檔案 Amazon S3 位置的欄位。檔案是output.tar.gz
包含分析結果的壓縮歸檔。
如果工作的狀態為FAILED
,則回應會包含描述分析工作未順利完成原因的Message
欄位。
若要取得個別工作的狀態,請使用適當的Describe*
作業:
結果會以單一檔案傳回,每個文件都有一個 JSON 結構。每個回應檔案也包含狀態欄位設定為的任何工作的錯誤訊息FAILED
。
以下各節顯示兩種輸入格式的輸出範例。
取得主要語言偵測結果
以下是偵測到主要語言之分析的輸出檔案範例。輸入的格式是每行一個文檔。有關更多資訊,請參閱 DetectDominantLanguage 操作。
{"File": "0_doc", "Languages": [{"LanguageCode": "en", "Score": 0.9514502286911011}, {"LanguageCode": "de", "Score": 0.02374090999364853}, {"LanguageCode": "nl", "Score": 0.003208699868991971}, "Line": 0}
{"File": "1_doc", "Languages": [{"LanguageCode": "en", "Score": 0.9822712540626526}, {"LanguageCode": "de", "Score": 0.002621392020955682}, {"LanguageCode": "es", "Score": 0.002386554144322872}], "Line": 1}
以下是分析輸出的範例,其中輸入的格式為每個檔案一個文件:
{"File": "small_doc", "Languages": [{"LanguageCode": "en", "Score": 0.9728053212165833}, {"LanguageCode": "de", "Score": 0.007670710328966379}, {"LanguageCode": "es", "Score": 0.0028472368139773607}]}
{"File": "huge_doc", "Languages": [{"LanguageCode": "en", "Score": 0.984955906867981}, {"LanguageCode": "de", "Score": 0.0026436643674969673}, {"LanguageCode": "fr", "Score": 0.0014206881169229746}]}
取得實體偵測結果
以下是分析中偵測到文件中圖元的輸出檔案範例。輸入的格式是每行一個文檔。有關更多資訊,請參閱 DetectEntities 操作。輸出包含兩個錯誤訊息,一個用於太長的文件,另一個用於不是 UTF-8 格式的文件。
{"File": "50_docs", "Line": 0, "Entities": [{"BeginOffset": 0, "EndOffset": 22, "Score": 0.9763959646224976, "Text": "Cluj-NapocaCluj-Napoca", "Type": "LOCATION"}"]}
{"File": "50_docs", "Line": 1, "Entities": [{"BeginOffset": 11, "EndOffset": 15, "Score": 0.9615424871444702, "Text": "Maat", "Type": "PERSON"}}]}
{"File": "50_docs", "Line": 2, "ErrorCode": "DOCUMENT_SIZE_EXCEEDED", "ErrorMessage": "Document size exceeds maximum size limit 102400 bytes."}
{"File": "50_docs", "Line": 3, "ErrorCode": "UNSUPPORTED_ENCODING", "ErrorMessage": "Document is not in UTF-8 format and all subsequent lines are ignored."}
以下是分析輸出的範例,其中輸入的格式為每個檔案一個文件。輸出包含兩個錯誤訊息,一個用於太長的文件,另一個用於不是 UTF-8 格式的文件。
{"File": "non_utf8.txt", "ErrorCode": "UNSUPPORTED_ENCODING", "ErrorMessage": "Document is not in UTF-8 format and all subsequent line are ignored."}
{"File": "small_doc", "Entities": [{"BeginOffset": 0, "EndOffset": 4, "Score": 0.645766019821167, "Text": "Maat", "Type": "PERSON"}]}
{"File": "huge_doc", "ErrorCode": "DOCUMENT_SIZE_EXCEEDED", "ErrorMessage": "Document size exceeds size limit 102400 bytes."}
取得關鍵片語偵測結果
以下是分析中偵測到文件中關鍵片語的輸出檔案範例。輸入的格式是每行一個文檔。有關更多資訊,請參閱 DetectKeyPhrases 操作。
{"File": "50_docs", "KeyPhrases": [{"BeginOffset": 0, "EndOffset": 22, "Score": 0.8948641419410706, "Text": "Cluj-NapocaCluj-Napoca"}, {"BeginOffset": 45, "EndOffset": 49, "Score": 0.9989854693412781, "Text": "Cluj"}], "Line": 0}
以下是分析輸出的範例,其中輸入的格式為每個檔案一個文件。
{"File": "1_doc", "KeyPhrases": [{"BeginOffset": 0, "EndOffset": 22, "Score": 0.8948641419410706, "Text": "Cluj-NapocaCluj-Napoca"}, {"BeginOffset": 45, "EndOffset": 49, "Score": 0.9989854693412781, "Text": "Cluj"}]}
取得個人識別資訊 (PII) 偵測結果
以下是分析工作中偵測到文件中 PII 實體的輸出檔案範例。輸入的格式是每行一個文檔。
{"Entities":[{"Type":"NAME","BeginOffset":40,"EndOffset":69,"Score":0.999995},{"Type":"ADDRESS","BeginOffset":247,"EndOffset":253,"Score":0.998828},{"Type":"BANK_ACCOUNT_NUMBER","BeginOffset":406,"EndOffset":411,"Score":0.693283}],"File":"doc.txt","Line":0} {"Entities":[{"Type":"SSN","BeginOffset":1114,"EndOffset":1124,"Score":0.999999},{"Type":"EMAIL","BeginOffset":3742,"EndOffset":3775,"Score":0.999993},{"Type":"PIN","BeginOffset":4098,"EndOffset":4102,"Score":0.999995}],"File":"doc.txt","Line":1}
以下是分析輸出的範例,其中輸入的格式為每個檔案一個文件。
{"Entities":[{"Type":"NAME","BeginOffset":40,"EndOffset":69,"Score":0.999995},{"Type":"ADDRESS","BeginOffset":247,"EndOffset":253,"Score":0.998828},{"Type":"BANK_ROUTING","BeginOffset":279,"EndOffset":289,"Score":0.999999}],"File":"doc.txt"}
取得情緒偵測結果
以下是來自分析的輸出檔案範例,此分析會偵測到文件中所表達的情緒。它包含錯誤訊息,因為一個文件太長。輸入的格式是每行一個文檔。有關更多資訊,請參閱 DetectSentiment 操作。
{"File": "50_docs", "Line": 0, "Sentiment": "NEUTRAL", "SentimentScore": {"Mixed": 0.002734508365392685, "Negative": 0.008935936726629734, "Neutral": 0.9841893315315247, "Positive": 0.004140198230743408}}
{"File": "50_docs", "Line": 1, "ErrorCode": "DOCUMENT_SIZE_EXCEEDED", "ErrorMessage": "Document size is exceeded maximum size limit 5120 bytes."}
{"File": "50_docs", "Line": 2, "Sentiment": "NEUTRAL", "SentimentScore": {"Mixed": 0.0023119584657251835, "Negative": 0.0029857370536774397, "Neutral": 0.9866572022438049, "Positive": 0.008045154623687267}}
以下是分析輸出的範例,其中輸入的格式為每個檔案一個文件。
{"File": "small_doc", "Sentiment": "NEUTRAL", "SentimentScore": {"Mixed": 0.0023450672160834074, "Negative": 0.0009663937962614, "Neutral": 0.9795311689376831, "Positive": 0.017157377675175667}}
{"File": "huge_doc", "ErrorCode": "DOCUMENT_SIZE_EXCEEDED", "ErrorMessage": "Document size is exceeds the limit of 5120 bytes."}