Amazon Comprehend 见解的异步分析 - Amazon Comprehend

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

Amazon Comprehend 见解的异步分析

下面的示例说明如何使用Amazon Comprehend API 进行实时分析,使用AWS CLI、Java 和 Python。使用示例了解 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 Comprehend 存储Amazon S3 的访问权限,该存储桶包含您的文档集合和输出文件。有关更多信息,请参阅 异步操作所需的基于角色的权限

开始分析作业

要提交分析作业,请使用Amazon Comprehend 控制台或相应的Start*operation.

监控分析作业

这些区域有:Start*operation 会返回一个 ID,您可以使用它监控作业的进度。

要使用 API 监控进度,您可以使用两种操作之一,具体取决于您是要监视单个作业还是多个作业的进度。

要监控单个分析作业的进度,请使用Describe*operation. 您提供由返回的任务 IDStart*operation. 来自的响应如下:Describe*操作包含JobStatus字段中包含作业的状态。

要监控多个分析作业的进度,请使用List*operation.List*操作会返回您提交给 Amazon Comprehend 的任务列表。响应包括一个JobStatus每个作业的字段,告诉您作业的状态。

如果状态字段设置为COMPLETED要么FAILED,作业处理已完成。

要获取单个作业的状态,请使用Describe*您正在执行的分析的操作。

要获取多个作业的状态,请使用List*您正在执行的分析的操作。

要将结果限制为符合特定条件的作业,请使用List*operation.Filter参数。您可以筛选作业名称、作业状态以及提交作业的日期和时间。有关更多信息,请参阅 。Filter每个的参数List*中的操作操作引用。

获取分析结果

分析作业完成后,使用Describe*operation. 如果作业状态为COMPLETED,则响应中包含一个OutputDataConfig字段,其中包含输出文件的 Amazon S3 位置的字段。这个文件,output.tar.gz,是包含分析结果的、包含分析结果的。

如果作业的状态为FAILED,则响应包含Message字段,描述分析作业未成功完成的原因。

要获取单个作业的状态,请使用相应的Describe*operation.

结果在单个文件中返回,每个文档都有一个 JSON 结构。每个响应文件还包含状态字段设置为的任何作业的错误消息FAILED.

以下各节都显示了两种输入格式的输出示例。

获取占主导地位的语言检测结果

以下是检测到主导语言的分析的输出文件示例。输入的格式为每行一个文档。有关更多信息,请参阅 。DetectDominantLanguageoperation.

{"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}]}

获取实体检测结果

以下是分析中检测到文档中的实体的输出文件示例。输入的格式为每行一个文档。有关更多信息,请参阅 。DetectEntitiesoperation. 输出包含两条错误消息,一条针对过长的文档,另一条针对不是 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."}

获取关键短语检测结果

以下是分析中检测到文档中的关键短语的输出文件示例。输入的格式为每行一个文档。有关更多信息,请参阅 。DetectKeyPhrasesoperation.

{"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"}

获取情绪检测结果

以下是分析的输出文件示例,该文件检测到文档中表达的情绪。它包含一条错误消息,因为一个文档太长。输入的格式为每行一个文档。有关更多信息,请参阅 。DetectSentimentoperation.

{"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."}