Amazon Comprehend 自动化 PDF 预标记 | 亚马逊网络服务

Amazon Comprehend 自动化 PDF 预标记 | 亚马逊网络服务

亚马逊领悟 是一种自然语言处理 (NLP) 服务,提供预训练和自定义 API 以从文本数据中获取见解。 Amazon Comprehend 客户可以训练自定义命名实体识别 (NER) 模型来提取其业务特有的感兴趣实体,例如位置、人名和日期。

要训​​练自定义模型,您首先需要通过手动注释文档中的实体来准备训练数据。这可以通过 Comprehend 半结构化文档注释工具,这创建了一个 亚马逊SageMaker地面真相 使用自定义模板进行作业,允许注释者直接在 PDF 文档上围绕实体绘制边界框。然而,对于 SAP 等 ERP 系统中现有表格实体数据的公司来说,手动注释可能是重复且耗时的。

为了减少准备训练数据的工作量,我们使用以下方法构建了预标记工具 AWS步骤功能 使用现有的表格实体数据自动对文档进行预注释。这显着减少了在 Amazon Comprehend 中训练准确的自定义实体识别模型所需的手动工作。

在这篇文章中,我们将引导您完成设置预标记工具的步骤,并展示它如何自动注释公共文档的示例 数据集 PDF 格式的银行对账单样本。完整的代码可以在 GitHub回购.

解决方案概述

在本节中,我们讨论预标记工具的输入和输出,并概述解决方案架构。

输入和输出

预标记工具将包含待注释文本的 PDF 文档作为输入。对于演示,我们使用模拟银行对账单,如下例所示。

Amazon Comprehend 自动化 PDF 预标记 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

该工具还采用一个清单文件,将 PDF 文档与我们要从这些文档中提取的实体进行映射。实体由两部分组成: expected_text 从文档中提取(例如, AnyCompany Bank)和相应的 entity_type (例如, bank_name)。在本文后面,我们将展示如何从 CSV 文档构建此清单文件,如下例所示。

Amazon Comprehend 自动化 PDF 预标记 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

预标记工具使用清单文件自动注释文档及其相应的实体。然后,我们可以直接使用这些注释来训练 Amazon Comprehend 模型。

或者,您可以创建 SageMaker Ground Truth 标记作业以供人工审核和编辑,如以下屏幕截图所示。

Amazon Comprehend 自动化 PDF 预标记 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

审核完成后,您可以使用带注释的数据来训练 Amazon Comprehend 自定义实体识别器模型。

建筑

预标记工具由多个组成 AWS Lambda 由 Step Functions 状态机编排的函数。它有两个版本,使用不同的技术来生成预注释。

第一种技术是 模糊匹配。这需要一个包含预期实体的预清单文件。该工具使用模糊匹配算法通过比较文本相似度来生成预注释。

模糊匹配在文档中查找与预清单文件中列出的预期实体相似(但不一定相同)的字符串。它首先计算文档中预期文本和单词之间的文本相似度分数,然后匹配高于阈值的所有对。因此,即使没有精确匹配,模糊匹配也可以找到缩写和拼写错误等变体。这允许该工具预先标记文档,而不需要实体逐字显示。例如,如果 'AnyCompany Bank' 被列为预期实体,模糊匹配将注释出现的情况 'Any Companys Bank'。这比严格的字符串匹配提供了更大的灵活性,并使预标记工具能够自动标记更多实体。

下图说明了此 Step Functions 状态机的架构。

Amazon Comprehend 自动化 PDF 预标记 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

第二种技术需要 预训练的 Amazon Comprehend 实体识别器模型。该工具使用 Amazon Comprehend 模型生成预注释,遵循下图所示的工作流程。

Amazon Comprehend 自动化 PDF 预标记 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

下图展示了完整的架构。

Amazon Comprehend 自动化 PDF 预标记 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

在以下部分中,我们将逐步介绍实施该解决方案的步骤。

部署预标记工具

将存储库克隆到本地计算机:

git clone https://github.com/aws-samples/amazon-comprehend-automated-pdf-prelabeling-tool.git

该存储库构建在 Comprehend 半结构化文档注释工具之上,并通过使您能够使用已显示在 SageMaker Ground Truth UI 上的预注释来启动 SageMaker Ground Truth 标记作业来扩展其功能。

预标记工具包括 Comprehend 半结构化文档注释工具资源以及一些特定于预标记工具的资源。您可以使用以下方式部署该解决方案 AWS无服务器应用程序模型 (AWS SAM),一个开源框架,可用于定义无服务器应用程序基础设施代码。

如果您之前部署过 Comprehend 半结构化文档注释工具,请参阅常见问题解答部分 Pre_labeling_tool/README.md 有关如何仅部署特定于预标记工具的资源的说明。

如果您之前没有部署过该工具并且是全新开始,请执行以下操作来部署整个解决方案。

将当前目录更改为注释工具文件夹:

cd amazon-comprehend-semi-structured-documents-annotation-tools

构建并部署解决方案:

make ready-and-deploy-guided

创建预清单文件

在使用预标记工具之前,您需要准备数据。主要输入是 PDF 文档和预清单文件。预清单文件包含以下每个 PDF 文档的位置 'pdf' 以及 JSON 文件的位置,其中包含要标记的预期实体 'expected_entities'.

笔记本 生成预清单文件.ipynb 显示如何创建此文件。在演示中,预清单文件显示以下代码:

[ { 'pdf': 's3://<bucket>/data_aws_idp_workshop_data/bank_stmt_0.pdf', 'expected_entities': 's3://<bucket>/prelabeling-inputs/expected-entities/example-demo/fuzzymatching_version/file_bank_stmt_0.json' }, ...
]

预清单文件中列出的每个 JSON 文件(在 expected_entities) 包含一个字典列表,每个字典对应一个预期实体。字典有以下键:

  • '预期文本' – 与实体匹配的可能文本字符串的列表。
  • '实体类型' – 相应的实体类型。
  • 'ignore_list'(可选) – 匹配中应忽略的单词列表。这些参数应用于防止模糊匹配匹配您知道错误的特定单词组合。如果您想在查看姓名时忽略某些数字或电子邮件地址,这会很有用。

例如 expected_entities 之前显示的 PDF 如下所示:

[ { 'expected_texts': ['AnyCompany Bank'], 'entity_type': 'bank_name', 'ignore_list': [] }, { 'expected_texts': ['JANE DOE'], 'entity_type': 'customer_name', 'ignore_list': ['JANE.DOE@example_mail.com'] }, { 'expected_texts': ['003884257406'], 'entity_type': 'checking_number', 'ignore_list': [] }, ...
]

运行预标记工具

使用您在上一步中创建的预清单文件,开始运行预标记工具。更多详细信息,请参阅笔记本 start_step_functions.ipynb.

要启动预标记工具,请提供 event 使用以下键:

  • 预清单 – 将每个 PDF 文档映射到其 expected_entities 文件。这应该包含 亚马逊简单存储服务 (Amazon S3) 存储桶(下 bucket)和密钥(在 key)的文件。
  • 字首 – 用于创建 execution_id,它命名用于输出存储的 S3 文件夹和 SageMaker Ground Truth 标记作业名称。
  • 实体类型 – 显示在 UI 中供注释者进行标记。这些应包括预期实体文件中的所有实体类型。
  • 工作团队名称(可选) – 用于创建 SageMaker Ground Truth 标记作业。它对应于私人劳动力的使用。如果未提供,则仅创建清单文件,而不是 SageMaker Ground Truth 标记作业。您稍后可以使用清单文件创建 SageMaker Ground Truth 标记作业。请注意,截至撰写本文时,您在从笔记本创建标签作业时无法提供外部人员。但是,您可以克隆创建的作业并将其分配给 SageMaker Ground Truth 控制台上的外部员工。
  • comprehend_parameters(可选) – 用于直接训练 Amazon Comprehend 自定义实体识别器模型的参数。如果省略,将跳过此步骤。

要启动状态机,请运行以下 Python 代码:

import boto3
stepfunctions_client = boto3.client('stepfunctions')

response = stepfunctions_client.start_execution(
stateMachineArn=fuzzymatching_prelabeling_step_functions_arn,
input=json.dumps(<event-dict>)
)

这将启动状态机的运行。您可以在 Step Functions 控制台上监控状态机的进度。下图说明了状态机工作流程。

Amazon Comprehend 自动化 PDF 预标记 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。

状态机完成后,执行以下操作:

  • 检查保存在以下文件中的输出 prelabeling/ 的文件夹 comprehend-semi-structured-docs S3桶:
    • 文档每一页的单独注释文件(每个文档每页一个) temp_individual_manifests/
    • SageMaker Ground Truth 标记作业的清单 consolidated_manifest/consolidated_manifest.manifest
    • 可用于训练自定义 Amazon Comprehend 模型的清单 consolidated_manifest/consolidated_manifest_comprehend.manifest
  • 在 SageMaker 控制台上,打开创建的 SageMaker Ground Truth 标记作业以查看注释
  • 检查并测试经过训练的自定义 Amazon Comprehend 模型

如前所述,该工具只能为私人劳动力创建 SageMaker Ground Truth 标签作业。要外包人工标记工作,您可以在 SageMaker Ground Truth 控制台上克隆标记作业,并将任何劳动力附加到新作业。

清理

为避免产生额外费用,请使用以下命令删除您创建的资源并删除您部署的堆栈:

make delete

结论

预标记工具为公司提供了一种强大的方法,可以使用现有的表格数据来加速在 Amazon Comprehend 中训练自定义实体识别模型的过程。通过自动对 PDF 文档进行预注释,可以显着减少标记过程中所需的手动工作量。

该工具有两个版本:模糊匹配和基于 Amazon Comprehend,为如何生成初始注释提供了灵活性。文档预标记后,您可以在 SageMaker Ground Truth 标记作业中快速查看它们,甚至跳过审核并直接训练 Amazon Comprehend 自定义模型。

预标记工具使您能够快速释放历史实体数据的价值,并将其用于创建适合您的特定领域的自定义模型。通过加快流程中通常最劳动密集的部分,它使 Amazon Comprehend 的自定义实体识别比以往任何时候都更容易实现。

有关如何使用 SageMaker Ground Truth 标记作业标记 PDF 文档的更多信息,请参阅 自定义文档注释,用于使用 Amazon Comprehend 提取文档中的命名实体使用 Amazon SageMaker Ground Truth 标记数据.


关于作者

Amazon Comprehend 自动化 PDF 预标记 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。奥斯卡·施纳克 是生成人工智能创新中心的应用科学家。他热衷于深入研究机器学习背后的科学,以使客户能够使用它。工作之余,奥斯卡喜欢骑自行车和跟上信息论的趋势。

Amazon Comprehend 自动化 PDF 预标记 |亚马逊网络服务柏拉图区块链数据智能。垂直搜索。人工智能。罗曼·贝松布 是生成式人工智能创新中心的深度学习架构师。他热衷于构建创新架构,通过机器学习解决客户的业务问题。

时间戳记:

更多来自 AWS机器学习