怎么使用带有spaCy3的BERT变换器训练联合实体和关系提取分类器


这篇文章主要介绍“怎么使用带有spaCy3的BERT变换器训练联合实体和关系提取分类器”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用带有spaCy3的BERT变换器训练联合实体和关系提取分类器”文章能帮助大家解决问题。NLP 技术最有用的应用之一是从非结构化文本(合同、财务文件、医疗记录等)中提取信息,它支持自动数据查询以获得新的见解。传统上,命名实体识别已被广泛用于识别文本中的实体并存储数据以进行高级查询和过滤。但是,如果我们想从语义上理解非结构化文本,仅靠 NER 是不够的,因为我们不知道实体之间是如何关联的。执行联合 NER 和关系提取将通过知识图开辟一种全新的信息检索方式,您可以在其中导航不同的节点以发现隐藏的关系。因此,联合执行这些任务将是有益的。在我之前的文章的基础上,我们使用 spaCy 3 为 NER 微调了 BERT 模型,现在我们将使用 spaCy 的新 Thinc 库将关系提取添加到管道中。我们按照spaCy 文档中概述的步骤训练关系提取模型。我们将比较使用转换器和 tok2vec 算法的关系分类器的性能。最后,我们将在网上找到的职位描述上测试该模型。从本质上讲,关系提取模型是一个分类器,用于预测给定实体对{e1, e2}的关系r。在转换器的情况下,这个分类器被添加到输出隐藏状态的顶部。我们要微调的预训练模型是基于 roberta 的模型,但您可以使用 Hugging Face 库中可用的任何预训练模型,只需在配置文件中输入名称(见下文)。在本教程中,我们将提取两个实体 {Experience, Skills} 之间的关系作为Experience_in和 {Diploma, Diploma_major} 之间的关系作为degree_in。目标是提取特定技能所需的多年经验以及与所需文凭相关的文凭专业。当然,您可以为自己的用例训练自己的关系分类器,例如在健康记录或财务文件中的公司收购中查找症状的原因/影响。可能性是无限的……在本教程中,我们将只介绍实体关系提取部分。使用spaCy 3对BERT NER进行微调,请参考我之前的文章。在这里我们使用UBIAI文本注释工具来执行联合实体和关系注释,因为它的通用接口允许我们在实体和关系注释之间轻松切换(见下文):UBIAI 的联合实体和关系标注接口。在本教程中,我只注释了大约 100 个包含实体和关系的文档。对于生产,我们肯定需要更多带注释的数据。在训练模型之前,我们需要将带注释的数据转换为二进制 spacy 文件。我们首先将 UBIAI 生成的 annotation 拆分为 training/dev/test 并分别保存。我们修改spaCy 的教程存储库中提供的代码,为我们自己的注释(转换代码)创建二进制文件。我们对训练、开发和测试数据集重复此步骤以生成三个二进制 spacy 文件(Github 中提供的文件)。对于训练,我们将提供黄金语料库中的实体,并在这些实体上训练分类器。打开一个新的 Google Colab 项目,并确保在笔记本设置中选择 GPU 作为硬件加速器。确保GPU是通过运行启用:!nvidia-smi。安装spacy-nightly:安装wheel包并克隆 spacy 的关系提取 repo:安装变压器管道和spacy transformers库:将目录更改为 rel_component 文件夹:cd rel_component.在 rel_component 中创建一个名为“data”的文件夹,并将训练、开发和测试二进制文件上传到其中:Training 文件夹打开 project.yml 文件并更新训练、开发和测试路径:您可以通过转到 configs/rel_trf.cfg 并输入模型名称来更改预训练的转换器模型(例如,如果您想使用不同的语言):在开始训练之前,我们将max_lengthconfigs/rel_trf.cfg 中的 configs/rel_trf.cfg 从默认的 100 个令牌减少到 20 个以提高我们模型的效率。max_length 对应于两个实体之间的最大距离,如果超过该距离,它们将不会被考虑用于关系分类。因此,来自同一文档的两个实体将被分类,只要它们彼此之间的最大距离(以标记数计)即可。我们终于准备好训练和评估关系提取模型了;只需运行以下命令:您应该开始看到 P、R 和 F 分数得到更新模型完成训练后,对测试数据集的评估将立即开始并显示预测与黄金标签。该模型将与我们模型的分数一起保存在名为“training”的文件夹中。要训练非变压器模型tok2vec,请改为运行以下命令:我们可以比较两个模型的性能:基于transformer的模型的准确率和召回分数明显优于tok2vec,并证明了transformers在处理少量带注释数据时的有用性。假设我们已经像我之前的帖子一样训练了一个 Transformer NER 模型,我们将从在线找到的工作描述中提取实体(这不是训练的一部分,也不是开发集的一部分),并将它们提供给关系提取模型以对关系。安装空间变压器和变压器管道。加载 NER 模型并提取实体:我们打印提取的实体:我们已经成功地从文本中提取了所有的技能、经验年数、文凭和文凭专业!接下来,我们加载关系提取模型并对实体之间的关系进行分类。注意:确保将 rel_pipe 和 rel_model 从脚本文件夹复制到您的主文件夹中在这里,我们显示了所有具有Experience_in关系且置信度得分高于 90%的实体:值得注意的是,我们能够正确提取几乎所有多年的经验以及他们各自的技能,没有误报或否定!让我们看看具有关系degree_in的实体:再次,我们成功提取了文凭和文凭专业之间的所有关系!这再次证明了使用少量注释数据将转换器模型微调到您自己的特定领域案例是多么容易,无论是用于 N免费云主机域名ER 还是关系提取。只有一百个带注释的文档,我们就能够训练出一个性能良好的关系分类器。此外,我们可以使用这个初始模型以最少的校正自动注释数百个未标记的数据。这可以显着加快注释过程并提高模型性能。关于“怎么使用带有spaCy3的BERT变换器训练联合实体和关系提取分类器”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注百云主机行业资讯频道,小编每天都会为大家更新不同的知识点。

相关推荐: JavaScript如何实现确认后提交

这篇文章给大家分享的是有关JavaScript如何实现确认后提交的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。确认后提交把如下代码加入 感谢各位的阅读!关于“JavaScript如何实现确认后提交”这篇文章就分享到这里了,希望以上内…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 09/10 17:32
Next 09/10 17:32

相关推荐