自动化 PDF 预标记以便于 Amazon Comprehend 机器学习博客
自动化 PDF 预标记以便于亚马逊 Comprehend
作者 Oskar Schnaack 和 Romain Besombes 日期 2023年12月14日 发表在 Amazon Comprehend、Amazon SageMaker Ground Truth、Amazon Textract,和其他相关服务。
关键要点
亚马逊 Comprehend 是一个自然语言处理服务,可以通过预训练和自定义 API 从文本数据中提取见解。本文介绍了如何利用现有的表格实体数据自动化 PDF 文档的预标记,以简化训练自定义实体识别模型的过程,从而减少人工注释的时间和精力。该解决方案使用 AWS Step Functions 和 AWS Lambda 来实现自动标记,用户只需提供 PDF 文档和预清单文件即可开始工作。亚马逊 Comprehend 是一个强大的自然语言处理 (NLP) 服务,它提供易于使用的 API 用于从文本数据中获取有价值的见解。用户能够训练自定义名称实体识别 (NER) 模型,以提取与其业务相关的特定实体,如地点、姓名和日期等。
为了训练自定义模型,用户需要手动对文档中的实体进行注释,这是一个繁琐而耗时的过程。为此,我们构建了一个预标记工具,借助 AWS Step Functions 自动根据现有的表格实体数据对文档进行预注释,这显著减少了训练自定义实体识别模型的手动工作量。
本文将逐步引导您如何设置预标记工具,并展示该工具如何自动注释来自公开 数据集 的示例银行账单 PDF 文档。完整代码可在 GitHub 仓库 查看。
解决方案概述
在本节中,我们将讨论预标记工具的输入和输出,并提供解决方案架构的概述。
输入和输出
预标记工具接受需要被注释的 PDF 文档作为输入。示例中,我们使用了模拟的银行账单,如下图所示:
工具还需要一个清单文件,该文件将 PDF 文档与我们希望从中提取的实体相映射。实体包括两个部分:要从文档中提取的 expectedtext例如,AnyCompany Bank和相应的 entitytype例如,bankname。本文稍后将展示如何从 CSV 文档构建此清单文件。
预标记工具利用清单文件自动注释文档及其对应的实体。我们可以直接使用这些注释来训练亚马逊 Comprehend 模型。
另外,用户还可以为人工审核和编辑创建 SageMaker Ground Truth 标签作业,如下图所示:
审核完成后,可以使用注释数据来训练亚马逊 Comprehend 的自定义实体识别模型。
架构
预标记工具由多个 AWS Lambda 函数构成,由 Step Functions 状态机进行编排。该工具有两个版本,使用不同的技术生成预注释。
第一种技术是 模糊匹配。此方法需要一个预清单文件,其中包含预期实体。工具利用模糊匹配算法通过比较文本相似性来生成预注释。
模糊匹配会在文档中寻找与预清单文件中列出的预期实体相似但不一定完全相同的字符串。首先计算预期文本和文档中单词之间的相似性得分,然后匹配所有高于阈值的配对。因此,即使没有完全匹配,模糊匹配也能找到缩写和拼写错误的变体。这允许工具在未完全匹配实体的情况下预标记文档,例如,如果 ‘AnyCompany Bank’ 列为预期实体,模糊匹配会注释出现的 ‘Any Companys Bank’。
第二种技术需要一个 预训练的亚马逊 Comprehend 实体识别模型。该工具依照工作流程生成预注释,如下图所示:
以下图示展示了完整的架构。
接下来的部分将通过步骤指导您实现该解决方案。

部署预标记工具
将仓库克隆到本地机器:
bashgit clone https//githubcom/awssamples/amazoncomprehendautomatedpdfprelabelingtoolgit
该仓库建立在 Comprehend 半结构化文档注释工具的基础上,扩展了其功能,允许用户在 SageMaker Ground Truth UI 上显示已预注释的内容,启动一个 SageMaker Ground Truth 标签作业。
此预标记工具包括 Comprehend 半结构化文档注释工具的资源以及一些特定于预标记工具的资源。您可以使用 AWS Serverless Application Model (AWS SAM) 来部署该解决方案,AWS SAM 是一个开源框架,您可以利用其定义无服务器应用基础设施代码。
如果您之前已经部署过 Comprehend 半结构化文档注释工具,请参阅 Prelabelingtool/READMEmd 中的 FAQ 部分,以了解如何仅部署与预标记工具相关的资源。
如果您是首次部署该工具并从头开始,请执行以下步骤以全部部署解决方案。
将当前目录更改为注释工具文件夹:
魔方云加速器官网入口bashcd amazoncomprehendsemistructureddocumentsannotationtools
构建并部署解决方案:
bashmake readyanddeployguided
创建预清单文件
在使用预标记工具之前,需要准备数据。主要输入是 PDF 文档和预清单文件。预清单文件包含每个 PDF 文档的位置,以 pdf 字段标识,以及 JSON 文件的期望实体的位置,以 expectedentities 字段标识。
笔记本 generatepremanifestfileipynb 展示了如何创建此文件。在示例中,预清单文件示例代码如下:
json[ { pdf s3//ltbucketgt/dataawsidpworkshopdata/bankstmt0pdf expectedentities s3//ltbucketgt/prelabelinginputs/expectedentities/exampledemo/fuzzymatchingversion/filebankstmt0json } ]
预清单文件中列出的每个 JSON 文件在 expectedentities 下均包含一个字典列表,每个字典描述一个期望实体。字典包括以下键:
‘expectedtexts’:匹配实体的可能文本字符串的列表。‘entitytype’:对应的实体类型。‘ignorelist’ (可选):在匹配时应该忽略的单词列表。这些参数旨在防止模糊匹配错误匹配某些特定组合的单词,如要忽略某些数字或电子邮件地址。例如,之前银行账单的 expectedentities 如下所示:
json[ { expectedtexts [AnyCompany Bank] entitytype bankname ignorelist [] } { expectedtexts [JANE DOE] entitytype customername ignorelist [JANEDOE@examplemailcom] } { expectedtexts [003884257406] entitytype checkingnumber ignorelist [] } ]
运行预标记工具
使用您在上一步中创建的预清单文件,开始运行预标记工具。有关详细信息,请参考笔记本 startstepfunctionsipynb。
要启动预标记工具,提供一个包含以下键的 event 字典:
Premanifest:将每个 PDF 文档映射到其 expectedentities 文件。应包含 Amazon Simple Storage Service (Amazon S3) 存储桶在 bucket 下和文件键在 key 下。Prefix:用于创建 executionid,即输出存储的 S3 文件夹名和 SageMaker Ground Truth 标签作业名称。entitytypes:在 UI 中显示给注释人员标签的实体类型。这些应包括预期实体文件中所有的实体类型。workteamname (可选):用于创建 SageMaker Ground Truth 标签作业,对应于使用的私有工作团队。如果未提供,则只会创建一个清单文件,而不会创建 SageMaker Ground Truth 标签作业。您可以稍后使用该清单文件创建 SageMaker Ground Truth 标签作业。请注意,截至目前,您无法在从笔记本创建标签作业时提供外部工作团队,不过可以在 SageMaker Ground Truth 控制台上复制创建的作业并将其分配给外部工作团队。comprehendparameters (可选):用于直接训练亚马逊 Comprehend 自定义实体识别模型的参数。如果省略,则跳过此步骤。要启动状态机,运行以下 Python 代码:
pythonimport boto3import json
stepfunctionsclient = boto3client(stepfunctions)
response = stepfunctionsclientstartexecution( stateMachineArn=fuzzymatchingprelabelingstepfunctionsarn input=jsondumps())
这将开始状态机的运行。您可以在 Step Functions 控制台中监控状态机的进度。下图展示了状态机的工作流。
当状态机完成时,请执行以下操作:
检查 comprehendsemistructureddocs S3 存储桶的 prelabeling/ 文件夹中保存的以下输出:每个文档每一页的单独注释文件,存储于 tempindividualmanifests/ 中。用于 SageMaker Ground Truth 标签作业的清单,存储于 consolidatedmanifest/consolidatedmanifestmanifest 中。可用于训练自定义亚马逊 Comprehend 模型的清单,存储于 consolidatedmanifest/consolidatedmanifestcomprehendmanifest 中。在 SageMaker 控制台中,打开创建的 SageMaker Ground Truth 标签作业以审核注释。检查并测试训练好的自定义亚马逊 Comprehend 模型。如前所述,该工具只能为私有工作团队创建 SageMaker Ground Truth 标签作业。要外包人工标记工作,您可以在 SageMaker Ground Truth 控制台上复制该标签作业并附加任何外部工作组到新作业。
清理
为了避免产生额外费用,请删除您创建的资源,并通过以下命令删除所部署的堆栈:
bashmake delete
结论
预标记工具为公司提供了一种强大的方法,利用现有的表格数据加速训练特定的亚马逊 Comprehend 自定义实体识别模型的过程。通过自动预注释 PDF 文档,该工具显著减少了标注过程中的人工工作。
该工具有两个版本:模糊匹配和基于亚马逊 Comprehend,提供了生成初始注释的灵活性。预标记文档后,用户可以快速在 SageMaker Ground Truth 标签作业中审核它们,甚至可以跳过审核并直接训练自定义模型。
预标记工具使您能够快速挖掘历史实体数据的价值,并利用它创作特定领域的定制模型。通过加速通常最繁杂的流程,它使得亚马逊 Comprehend 的自定义实体识别变得前所未有的轻松。
想了解更多关于如何使用 SageMaker Ground Truth 标签作业标记 PDF 文档的信息,请参见 使用亚马逊 Comprehend 提取文档中命名实体的自定义文档注释 和 使用亚马逊 SageMaker Ground Truth 标注数据。
关于作者
Oskar Schnaack 是生成 AI 创新中心的应用科学家,致力于挖掘机器学习背后的科学,让客户更易于接触。工作之外,Oskar 喜欢骑行并关注信息理论的趋势。
Romain Besombes 是生成 AI 创新中心的深度学习架构师,热衷于构建创新架构来解决客户的商业问题。
更快的 LLM 通过推测解码和 AWS Inferentia2 机器学习博客
加速大型语言模型的推理过程关键要点大型语言模型LLMs在自然语言处理任务中取得了显著进展。较大的模型通常可以提供更好的结果,但计算需求和部署成本也随之增加。使用 AWS Inferentia 和 Tr...