使用 Amazon Comprehend 创建的自定义元数据通过 Amazon Kendra 智能处
利用 Amazon Comprehend 创建的自定义元数据智能处理保险索赔
关键要点
保险公司面临日益增长的索赔处理需求与复杂性。Amazon Comprehend 和 Amazon Kendra 可以通过自定义元数据结合使用,提升保险索赔的处理效率。此解决方案通过自定义分类和实体识别,帮助组织更好地管理和搜索其数据。这篇文章主要介绍如何利用 Amazon Comprehend 创建的自定义元数据,与 Amazon Kendra 一起智能处理保险索赔。保险公司在处理越来越多的索赔时,不仅数量在上升,索赔的复杂性也因涉及的各种保险文件和文档中存在的自定义实体而增加。存储结构化数据如数据库列中的信息和非结构化数据例如文本、图像或社交媒体帖子的需求正在持续增长。
根据国际数据公司IDC的数据,预计到 2025 年,全球数据量将增长十倍,非结构化数据将占据很大一部分。组织可能希望在处理文件时,添加自定义元数据来增强智能搜索能力,比如文档类型如 W2 表单或工资单、不同实体类型例如姓名、组织和地址和标准元数据如文件类型、创建日期或大小。这一自定义元数据能帮助组织更精准地组织信息,便于筛选和搜索。
客户可以运用 Amazon Comprehend 这一自然语言处理服务,提取文档内容的见解,并将其与数据一起作为索引导入 Amazon Kendra。Amazon Kendra 是一款高精度、易于使用的企业搜索服务,通过机器学习技术驱动。此元数据随后可以用于增强内容,以提供更好的 筛选和分面 能力。在 Amazon Kendra 中,分面是对一组搜索结果的特定视角。
解决方案概述
在本解决方案中,我们将进行以下步骤:1 将保险索赔提交分类为不同类别。2 从这些文档中提取保险相关的特定实体。
完成后,文件可以被引导到相应的部门或后续流程中。下图展示了提议的解决方案架构。
使用 Amazon Comprehend 的 自定义分类 API,可以将文档组织到用户定义的类别中。自定义分类过程分为两个步骤:首先,训练一个自定义分类模型分类器,使其识别您关心的类别;其次,使用该模型对任意数量的文档集进行分类。
此外,Amazon Comprehend 的 自定义实体识别 功能可以识别特定的实体类型,如保险公司、投保人姓名和保单号。构建自定义实体识别模型比使用简单的字符串匹配或正则表达式提取实体更加有效。自定义模型能够学习这些名称出现的上下文,从而提高识别率。
在深入讨论之前,让我们简单了解一下 Amazon Kendra。它是一个高精度、易于使用的企业搜索服务,能在组织内的大量内容中帮助用户找到所需信息,包括网站、数据库和内网等。我们将首先创建一个 Amazon Kendra 索引以导入文档,同时在导入数据时考虑自定义数据增强CDE的概念。
CDE 允许您通过将外部知识纳入搜索索引来增强搜索能力。具体信息请参考 在导入过程中增强文档。在这篇文章中,CDE 逻辑调用 Amazon Comprehend 的自定义 API,以用识别的类别和实体来增强文档。最后,我们通过 Amazon Kendra 搜索页面展示如何通过添加分面和筛选能力来增强搜索能力。
实施步骤
实现此解决方案的高层步骤如下:
使用训练数据训练 Amazon Comprehend 自定义分类器。使用训练数据训练 Amazon Comprehend 自定义实体识别模型。创建并部署 Amazon Comprehend 自定义分类器和自定义实体识别模型的端点。创建和部署用于后处理增强的 Lambda 函数。创建并填充 Amazon Kendra 索引。利用提取的实体在 Amazon Kendra 中过滤搜索。
我们还在 GitHub 仓库 中提供了示例应用以供参考。
数据安全和 IAM 考虑
本解决方案以安全为优先级,遵循最小权限原则,确保所使用的服务和功能符合这一原则。Amazon Comprehend 自定义分类和自定义实体识别所使用的 IAM 角色仅被授权访问来自测试存储桶的数据。Amazon Kendra 服务具有对特定 S3 存储桶和用于调用 Comprehend API 的 Lambda 函数的访问权限。Lambda 函数仅被允许调用 Amazon Comprehend API。更多信息,请参见笔记本中的第 12 和 13 节。
在将解决方案实施到生产环境之前,我们建议您在非生产环境中执行以下操作。
训练 Amazon Comprehend 自定义分类器的步骤
Amazon Comprehend 自定义分类支持两种注释文件数据格式:
使用 CSV 选项。使用增补清单文件选项,结合 SageMaker Ground Truth 来标记数据。由于我们的数据已经标记并存储为 CSV 文件,因此我们将以 CSV 文件格式的注释文件为例。需要提供以 UTF8 编码的文本,与 CSV 文件中的标记训练数据相对应。CSV 文件中不要包括表头行,添加表头行可能会导致运行时错误。以下是训练数据 CSV 文件的示例:
CLASS 文档 1 的文本CLASS 文档 2 的文本
为准备分类器的训练数据,请参考 准备分类器训练数据。CSV 文件中的第一列包含一个或多个类别标签,类别标签可以是任何有效的 UTF8 字符串。建议使用语义明确且不重叠的类别名称。名称可以包含空格,并且可以由下划线或连字符连接的多个单词组成。在 CSV 文件中的值之间的逗号前后均不得留有空格。
接下来,您可以选择使用 多类模式 或 多标签模式。特别是在多类模式下,每个文档只能分配一个类别,而在多标签模式下,各个类别代表不同的非独占类别。在我们的案例中,将使用多类模式处理纯文本模型。
您可以为 Amazon Comprehend 自定义分类器训练和模型评估准备单独的训练和测试数据集,也可以只提供一个数据集用于训练和测试。Amazon Comprehend 会自动从提供的数据集中选择 10 用作测试数据。在此示例中,我们提供了单独的训练和测试数据集。
下图显示了包含各种文档关联类名称的 CSV 文件示例。
文档格式 保险类型,文档 1 的内容
当自定义分类模型训练完成后,它能够捕捉文档中的不同保险类别如住宅险、汽车险或人寿险。
训练 Amazon Comprehend 自定义实体识别器的步骤
Amazon Comprehend 自定义实体识别NER训练数据集可以采用以下两种不同的方式准备:
注释 提供一个包含已注释实体的数据集,用于模式训练。实体列表仅限纯文本 提供一个实体列表以及它们的标签类型例如 “保险公司名称”、以及一组包含这些实体的未注释文档用于模型训练。有关更多信息,请参见 准备实体识别器训练数据。
训练模型时,使用实体列表需要提供两部分信息:实体名称的列表及其关联的自定义实体类型,以及出现这些实体的未注释文档集合。
一旦识别器训练完成,您就可以使用它在文档中检测自定义实体。您可以快速实时分析小段文本,也可以使用异步作业分析大量文档。
您可以为 Amazon Comprehend 自定义实体识别器培训和模型评估准备单独的训练和测试数据集,或者只提供一个数据集用于训练和测试。Amazon Comprehend 将自动从提供的数据集中选择 10 用作测试数据。在以下示例中,我们在 InputDataConfig 下指定了训练数据集作为 DocumentsS3Uri。
下图示例展示了含有实体名称的 CSV 文件:
一旦自定义实体NER模型训练完成,它将能够提取出各种实体,例如 “PAYOUT“,“INSURANCECOMPANY“,“LAWFIRM“,“POLICYHOLDERNAME“,“POLICYNUMBER“。
创建 Amazon Comprehend 自定义分类器和自定义实体识别端点
Amazon Comprehend 的端点使您的自定义模型可以实时分类。创建端点后,您可以根据业务需求进行调整。例如,您可以监控端点利用情况,并应用自动扩展,根据容量需求自动设置端点供应。如果不再需要某个端点,您可以删除它以节省成本。Amazon Comprehend 支持同步和异步两种选项;如果不需要实时分类,可以提交批量作业进行异步分类。
在此用例中,您将创建一个端点,使您自定义模型可用于实时分析。
为了满足文本处理的需求,您为端点分配推理单位,每个单位允许每秒处理 100 个字符。您可以根据需要调节吞吐量。
创建并部署后处理增强的 Lambda 函数
后处理的 Lambda 函数允许您实现处理 Amazon Kendra 从导入文档提取的文本的逻辑。我们配置的后处理函数实现了调用 Amazon Comprehend 来检测自定义实体和对文档进行自定义分类的代码,并使用它们来更新文档元数据,该元数据在 Amazon Kendra 搜索中以分面显示。该函数代码已嵌入在笔记本中。PostExtractionLambda 代码的处理逻辑如下:
将页面文本分割为不超过 Comprehend detectentities API 最大字节长度限制的段参见 限制。注意:该脚本使用简单的字符长度分割算法以简化示例,生产环境应实现重叠或基于 UTF8 字节长度的句子边界分割。
一元机场官网地址对于文本的每个部分,调用 Comprehend 实时端点检测自定义实体和自定义分类器以识别以下实体类型:[“PAYOUT“, “INSURANCECOMPANY“, “LAWFIRM“, “POLICYHOLDERNAME“,“POLICYNUMBER“, “INSURANCETYPE“]。
过滤掉低于置信度得分阈值的识别实体。我们使用 050 的阈值,即仅使用置信度 50 及以上的实体。可根据用例和需求进行调整。记录每个实体的频率计数。根据出现频率选择每页的前 N10 个唯一实体。对于文档分类,多类分类器为每个文档仅分配一个类别。在此 Lambda 函数中,文档将被分类为汽车保险、住宅保险或人寿保险。python
一个读取输入文本并使用 Comprehend 识别实体的函数
def entitydetector(doctext) #存储实体的 JSON 对象列表 entitydata = dict() #被识别为类别的文本字符串列表 categorytext = dict() #每个文本字符串的频率 textfrequency = dict() for et in categories entitydata[et] = [] categorytext[et] = [] textfrequency[et] = dict()
#循环进行 detectentitiesv2 调用,处理文本限制for i in range(0 len(doctext) compretextsize) try entities = compredetectentities(Text=doctext[iicompretextsize] LanguageCode=en EndpointArn=endpointcustomentity) except Exception as e loggerinfo(Exiting detectentitiesv2 terminated with exception) return [] for e in entities[Entities] #只选择置信度得分高于 minscore 的识别实体,而文本可打印,且没有引号,并且是未见过的 if ((e[Score] gt minscore) and (e[Text]isprintable()) and (not in e[Text]) and (not e[Text]upper() in categorytext[e[Type]])) #将文本附加到实体数据,以用作 Kendra 自定义属性 entitydata[e[Type]]append(e[Text]) #用大写文本跟踪,以确保不会因大小写不同而错误处理 categorytext[e[Type]]append(e[Text]upper()) #跟踪文本的频率,以便提取出现频率最高的文本 textfrequency[e[Type]][e[Text]upper()] = 1 elif (e[Text]upper() in categorytext[e[Type]]) #跟踪文本的频率,提取出现频率最高的文本 textfrequency[e[Type]][e[Text]upper()] = 1#Kendra 属性元数据的 JSON 对象将被填充metadata = dict()for et in categories metadata[et] = [] #取出频率最高的已识别文本字符串最多 elimit 个 el = [pair[0] for pair in sorted(textfrequency[et]items() key=lambda item item[1] reverse=True)][0elimit] for d in entitydata[et] if (dupper() in el) metadata[et]append(d)for md in metadata metaULappend({ name md value { stringListValue metadata[md] } })return metaUL请注意,截至目前,CDE 仅支持同步调用,或需要异步时,需要显式的等待循环。在后处理 Lambda 中, 最大执行时间 为 1 分钟。后处理自定义逻辑可以根据符合用例需求进行调整。
创建并填充 Amazon Kendra 索引
在此步骤中,我们将向 Amazon Kendra 索引导入数据,使其对用户可搜索。在导入过程中,我们将使用前面创建的 Lambda 函数作为后处理步骤,该函数将调用自定义分类和自定义实体识别NER端点,以创建自定义元数据字段。
实现此解决方案的高层步骤如下:
创建 Amazon Kendra 索引。创建 Amazon Kendra 数据源 有多种数据源可以用于导入数据集。在本文中,我们使用 S3 存储桶。创建分面 LawFirm、Payout、InsuranceCompany、PolicyNumber、PolicyHolderName、InsuranceType,类型为“STRINGLISTVALUE”。创建 Kendra CDE,并指向之前创建的后处理 Lambda 函数。执行同步过程以导入数据集。完成后,您可以使用 Kendra CDE 与后处理 Lambda 填充保险数据,基于自定义实体类型和分类作为自定义元数据字段过滤搜索。
在 Kendra 中使用提取的实体过滤搜索
现在索引已填充并准备使用。在 Amazon Kendra 控制台中,选择 数据管理下的搜索索引内容,执行以下操作:
查询以下内容:因延迟提交而导致的保险索赔列表?
,使用 AWS STS 在 JWT 中支持标签
使用 AWS STS 支援 JWT 标签的 ABAC 进行 SaaS 租户隔离由 Manuel Heinkel 和 Alex Pulver 于 2024 年 6 月 17 日发表在 进阶 (300),安全性、身份与合规性,技术操作永久链接评论 分享免费加...
使用 AWS IoT 设备管理作业安排远程操作 官方博客 物联网
使用 AWS IoT 设备管理作业调度远程操作关键要点在本文中,我们将介绍如何使用 AWS IoT 设备管理作业功能,远程管理 IoT 设备的操作并调度必要的更新。您将学习如何创建调度作业,控制作业的启动和结束时间,以及在特定时间窗口内执行关键任务,以减少对正常使用的干扰。简介一旦物联网 (IoT)...