亚马逊AWS官方博客

Amazon Comprehend 发布异步批处理操作

我的同事 Jeff Barr 最近写了一篇关于 Amazon Comprehend 的文章,这是一项用于发现文本中的见解和关系的服务,在 2017 年的 AWS re:Invent 大会上发布。如今,在反复研究客户反馈之后,我们将发布适用于 Comprehend 的全新异步批量推理功能。异步批处理操作可处理存储在 Amazon Simple Storage Service (S3) 存储桶中的文档,并可执行所有常规 Comprehend 操作,例如实体识别、关键短语提取、情绪分析和语言检测。与单文档 API 和批处理 API 相比,这些新的异步批处理 API 支持的文档要大得多,从而减少了客户截断文档以获取服务的需求。当然,所有单文档 API 和批处理同步 API 操作仍可用于提供实时结果。通过增加异步操作,开发人员可以选择最适合其应用程序的工具。让我们深入了解一下这一新型 API。

异步 API 操作

新的批处理 API 遵循与 Amazon Comprehend 的 TopicDetection API 相同的异步调用结构。在分析一系列文档时,我们首先要调用某个 Start* API,例如 StartDominantLanguageDetectionJobStartEntitiesDetectionJobStartKeyPhrasesDetectionJobStartSentimentDetectionJob

这些 API 中的每一个都采用 InputDataConfig 和 OutputDataConfig,用以指定传入数据的格式和位置,以及相关结果应存储在 S3 的哪个位置。InputDataConfig 用于指定应将输入数据视为每个文件一个文档还是每行一个文档。

另外,我们还可以给任务命名并添加一个用于同步用途的唯一请求标识符。如果我们不提供这些信息,Comprehend 服务将自动生成它们。

在撰写本文时,对于实体和关键短语检测、语言检测及情绪检测,异步操作支持的最大单个文档大小分别为 100KB、1MB 和 5KB。批处理中所有文件的总大小必须小于 5GB,而且对于每个批次,我们提交的单独文件数不能超过 100 万个。

现在我们已经了解了 API 的功能,接下来我们来看看更新后的控制台并启动任务!

Amazon Comprehend 分析控制台

首先,我将导航到 AWS 管理控制台并打开 Amazon Comprehend。接下来,我将选择新的分析控制台。

在此,我可以单击控制台右上角的“创建”按钮来创建一个新的分析任务。我将创建一个实体检测任务并选择英语作为我的文档语言。然后,我会指示控制台选择一些示例数据。

现在,我将配置输出数据的位置,并确保所选服务角色有权访问该 S3 存储桶。然后,我将启动任务!

在如下页面上,我可以看到在控制台中启动的操作,并可等到操作完成后再查看详细结果。

在任务页面上,我可以看到任务的状态和输出位置。如果我从 S3 位置下载结果,则可以查看示例文本中检测到的实体。

在这里,我已截断结果,但大多数情况下它们如下所示:

{
  "Entities": [
    {
      "BeginOffset": 875,
      "EndOffset": 899,
      "Score": 0.9936646223068237,
      "Text": "University of California",
      "Type": "ORGANIZATION"
    },
    {
      "BeginOffset": 903,
      "EndOffset": 911,
      "Score": 0.9519965648651123,
      "Text": "Berkeley",
      "Type": "LOCATION"
    },
    {
      "BeginOffset": 974,
      "EndOffset": 992,
      "Score": 0.9981470108032227,
      "Text": "Christopher Monroe",
      "Type": "PERSON"
    },
    {
      "BeginOffset": 997,
      "EndOffset": 1010,
      "Score": 0.9992995262145996,
      "Text": "Mikhail Lukin",
      "Type": "PERSON"
    },
    {
      "BeginOffset": 1095,
      "EndOffset": 1099,
      "Score": 0.9990954399108887,
      "Text": "2017",
      "Type": "DATE"
    }
  ],
  "File": "Sample.txt",
  "Line": 8
}

很酷吧!我们可以通过类似的步骤进行情感检测或关键短语检测。由于我们可以在一个批次中提交多达 5GB 的数据,因此客户将花费较少的时间来转换和截断文档。

我个人推荐使用 AWS Step Functions 之类的工具,以编程方式检查任务状态。设置和构建编程分析管道非常简单。

正如我们在 Roy Hasson 撰写的这篇博客文章中提到的,您还可以使用 AWS Glue 将 Comprehend 作为您常规 ETL 操作的一部分加以调用。

附加信息

您可以在该文档中找到有关这些新 API 的详细信息,并了解有关限制和最佳实践的更多信息。

如前所述,同步批处理 API 仍然可用,并且适合用于较小的文档集和较小的文档。

和往常一样,欢迎随时在这里或在 Twitter 上分享您的反馈。

 

本篇作者

Randall Hunt

AWS 全球高级布道师。此前供职于 NASA, SpaceX 及 MongoDB。