介绍
NLP技术最有用的应用之一是从非结构化文本(合同、财务文档、医疗记录等)中提取信息,这使得自动数据查询能够有用武之地。
传统上,命名实体识别被广泛用于识别文本中的实体并存储数据以进行高级查询和过滤。然而,如果我们想从语义上理解非结构化文本,仅仅使用NER是不够的,因为我们不知道实体之间是如何相互关联的。
执行NER和关系提取将打开一个全新的信息检索方式,通过知识知识图谱,你可以浏览不同的节点,以发现隐藏的关系。因此,共同执行这些任务将是有益的。
在我上一篇文章的基础上,我们使用spaCy3对NER的BERT模型进行了微调,现在我们将使用spaCy的Thinc库向管道添加关系提取。
我们按照spaCy文档中概述的步骤训练关系提取模型。我们将比较使用transformer和tok2vec算法的关系分类器的性能。最后,我们将在网上找到的职位描述上测试该模型。
关系分类:
关系抽取模型的核心是一个分类器,它为给定的一对实体{e1,e2}预测关系r。在transformer的情况下,这个分类器被添加到输出隐藏状态的顶部。有关关系提取的更多信息,请阅读这篇优秀的文章,其中概述了用于关系分类的微调transformer模型的理论:https://towardsdatascience.com/bert-s-for-relation-extraction-in-nlp-2c7c3ab487c4
我们将要微调的预训练模型是roberta基础模型,但是你可以使用huggingface库中提供的任何预训练模型,只需在配置文件中输入名称即可(见下文)。
在本教程中,我们将提取作为经验的两个实体{经验,技能}和作为学位的两个实体{文凭,文凭专业}之间的关系。
目标是提取特定技能的经验年数以及与所需文凭和文凭专业。当然,你可以为你自己的用例训练你自己的关系分类器,例如在健康记录或财务文档中的公司收购中查找症状的原因/影响。
在本教程中,我们将只介绍实体关系提取部分。对于使用spacy3进行微调bert ner,请参阅我的上一篇文章:https://towardsdatascience.com/how-to-fine-tune-bert-transformer-with-spacy-3-6a90bfe57647
数据注释:
在我的上一篇文章中,我们使用ubai文本注释工具来执行联合实体提取和关系抽取,因为它的多功能接口允许我们在实体和关系注释之间轻松切换(见下文):