Press "Enter" to skip to content

基于 Bert-NER 构建特定领域的中文信息抽取框架(上)

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

知识图谱(Knowledge Graph)主要由实体、关系和属性构成,而 信息抽取(Information Extraction) 作为构建知识图谱最重要的一个环节,目的就是从文本当中抽取出三元组信息,包括“实体 – 关系 – 实体”以及“实体 – 属性 – 实体”两类。然后将抽取后的多个三元组信息储存到关系型数据库(neo4j)中,便可得到一个简单的知识图谱。

 

本文通过多个实验的对比发现,结合 Bert-NER 和特定的分词、词性标注 等中文语言处理方式,获得更高的准确率和更好的效果,能在特定领域的中文信息抽取任务中取得优异的效果。

 

信息抽取和知识图谱

 

1 命名实体识别

 

综述

 

命名实体识别(Name Entity Recognition)是获取三元组中的实体的关键。 命名实体 指的是文本中具有特定意义或者指代性强的实体,常见的包括人名、地名、组织名、时间、专有名词等。就目前来说,使用 序列标注 的方法能够在 NER 任务中获得比较优异的效果,相对来说比较成熟。

 

NER 发展趋势图

 

序列标注任务,即在给定的文本序列上预测序列中需要作出标注的标签。处理方式可简单概括为:先将 token 从离散 one-hot 表示映射到低维空间中成为稠密的 embedding,随后将句子的 embedding 序列输入到 RNN 中,使用神经网络自动提取特征以及 Softmax 来预测每个 token 的标签。

 

本文对比了基于 Bert 的命名实体识别框架和普通的序列标注框架在模型训练、实体预测等方面的效果,并对基于小数据集的训练效果做出实验验证。

 

模型

 

Word Embedding-BiLSTM-CRF

 

众多实验表明,该结构属于命名实体识别中最主流的模型,代表的工具有: NeuroNER 。它主要由 Embedding 层(主要有词向量,字向量以及一些额外特征)、双向 LSTM 层、以及最后的 CRF 层构成,而本文将分析该模型在中文 NER 任务中的表现。

 

“词向量 +BiLSTM+CRF”三层模型构造图

 

注:NER 任务需要得到实体词的输出,所以使用字向量作为输入。

 

Bert-BiLSTM-CRF

 

随着 Bert 语言模型在 NLP 领域横扫了 11 项任务的最优结果,将其在中文命名实体识别中 Fine-tune 必然成为趋势。它主要是使用 bert 模型替换了原来网络的 部分,从而构成 Embedding 层,同样使用双向 LSTM 层以及最后的 CRF 层来完成序列预测。

 

NeuroNER 和 BertNER 的中文 NER 实验

 

实验数据

 

数据来源:本文的 NER 实验数据是来自于 人民网 的将近 7 万句(250 万字)中文新闻语料。

 

CSV 格式的原始数据

 

数据样式:

 

本文选用 BIO 标注法 ,其中”B“表示实体起始位置,”I“表示实体内容位置,”O“表示非实体。将 7 万条数据样本经过清洗后,按字进行分割,使用 BIO 标注形式标注四类命名实体,包括人名(PERSON)、地名(LOCATION)、组织机构名(ORGANIAZATION)以及时间(TIME),构成中文命名实体识别语料库。

 

数据标注样式图

 

数据划分:

 

训练集、验证集、测试集以“7:1:2”的比例划分。其中训练集达到 49600 条的样本数,标注实体共 88192 个;验证集为 7000 条,包含 12420 个标注实体;测试集为 14000 条,标注实体共 25780 个。

 

 

命名实体识别结果展示

展示用例: 屠呦呦,女,汉族,中共党员,药学家。1930 年 12 月 30 日生于浙江宁波,1951 年考入北京大学,在医学院药学系生药专业学习。1955 年,毕业于北京医学院(今北京大学医学部)。
展示用例抽取结果: [[‘PERSON’, ‘屠呦呦’], [‘TIME’, ‘1930 年 12 月 30 日’], [‘LOCATION’, ‘浙江宁波’], [‘TIME’, ‘1951 年’], [‘ORGANIZATION’, ‘北京大学’], [‘ORGANIZATION’, ‘医学院药学系’], [‘TIME’, ‘1955 年’], [‘ORGANIZATION’, ‘北京医学院’], [‘ORGANIZATION’, ‘北京大学医学部’]]

实验结果

 

 

工具分类 epoch 训练时长 测试集 F1 值 模型加载速度 预测速度
BertNER 30 5h 49m 96.18 2.8s 80ms
NeuroNER 30 14h 19m 91.93 23s 2s
NeuroNER 100 2d 7h 10m 92.33 23s 2s

 

注:实验配置为 11G Nvidia RTX2080Ti、Intel® Core i7-8700K CPU @ 3.70GHz、16G 内存、2T 硬盘

 

结论

 

 

    1. 实验表明,两者在相同的迭代次数训练后,测试集的 F1 值上 BertNER 比 NeuroNER 高出超过 4 个百分点 。即使 NeuroNER 迭代 epoch 增加到 100,仍然是 BertNER 的识别效果更优。

 

    1. Bert NER 在训练时长、模型加载速度、预测速度上都占据了很大的优势,达到工业级的水平,更适合应用在生产环境当中。

 

    1. 综上所述,Bert-BiLSTM-CRF 模型在中文命名实体识别的任务中完成度更高。

 

 

Bert-NER 在小数据集下训练的表现

 

实验数据

 

从 5 万句(250 万字)的中文新闻语料中按文本数据的字数(万字为单位)划分出 10W、30W、50W 的小数据集,同样以“7:1:2”的比例得到对应的训练集、验证集、测试集。

 

命名实体识别结果展示

展示用例: 屠呦呦,女,汉族,中共党员,药学家。1930 年 12 月 30 日生于浙江宁波,1951 年考入北京大学,在医学院药学系生药专业学习。1955 年,毕业于北京医学院(今北京大学医学部)。
展示用例抽取结果: [[‘PERSON’, ‘屠呦呦’], [‘TIME’, ‘1930 年 12 月 30 日’], [‘LOCATION’, ‘浙江宁波’], [‘TIME’, ‘1951 年’], [‘ORGANIZATION’, ‘北京大学’], [‘ORGANIZATION’, ‘医学院药学’], [‘TIME’, ‘1955 年’], [‘ORGANIZATION’, ‘北京医学院’], [‘ORGANIZATION’, ‘北京大学医学部’]]

实验结果

在相同实验配置下,四种数据集经过 30 个 epoch 的迭代训练,将句子数、训练市场、测试集 F1 值三个维度的实验结果进行归一化处理后,最终得到以下实验结果图表:

实验结果图

效能分析:本文将以 10W 的数据集实验结果作为基础,探讨在 30W、50W 和 250W 三种数据集训练, 每当数据量增长一倍 (即每增长 10W 的数据量),所带来的训练时长增长和模型提升比例:

效能对比表

 

结论

 

 

    1. BertNER 在小数据集甚至极小数据集的情况下,测试集 F1 值均能达到 92 以上的水平,证明其也能在常见的文本命名实体识别任务中达到同样优秀的效果。

 

    1. 实验结果证明,利用小数据集训练,可以大大降低人工标注成本的同时,训练时长也越少,也将极大地提高模型迭代的能力,有利于更多实体类型的 NER 模型构建。

 

    1. 经过效能分析可以看出,数据量往上增加的同时,训练时长以相同的比例增加,而 F1 值提升的幅度在逐渐下降。因此,我们在扩充实体类别的时候,可以参考此效能比例,从而衡量所要投入的资源以及所能达到的模型效果。

 

 

2 中文分词和词性标注

 

综述

 

:语言通常是需要用词来描述事物、表达情感、阐述观点等,可是在词法结构上中文与英文有较大的区别。其中最大的不同是英文将词组以空格的形式区分开来,较为容易被自动化抽取出来,而中文的词组往往需要由两个以上的字来组成,则需要通过分词工具来将语句拆分,以便进一步分析内容和意图。

 

词性标注:对分词后的单词在用法上进行分类,为句法分析、信息抽取等工作打下基础。常见的词性包括名词、、形容词、代词、副词等。

 

分词和词性标注工具对比

 

分词和词性标注往往是一同完成的。本文选取了主流的四款中文自然语言处理工具包括: JiebaPyltpPkuSegTHULAC

 

 

对比测试了它们分词和词性标注上的效果、、功能以及集成程度等。其中速度方面的测试,使用了百度百科上 100 位科技人物的首句人物介绍,经过预测得到每句文本的平均计算。

 

注:实验配置为 11G Nvidia RTX2080Ti、Intel® Core i7-8700K CPU @ 3.70GHz、16G 内存、2T 硬盘

 

测试文本:

 

 

效果对比:

Jieba:

 

注:v(动词)、e(叹词)、b(区别词)、n(名词)、ns(地名)、nz(其他专名)、q(量词)、m(数词)、x(非语素字)

Pyltp:

 

注:nh(人名)、n(名词)、ns(地名)、nt(时间名词)、nz(其他专名)、b(区别词)、wp(标点符号)

PkuSeg:

 

注:nr(人名)、ns(地名)、nz(其他专名)、t(时间词)、b(区别词)、j(简称)、w(标点符号)

THULAC:

 

注:g(语素词根)、ns(地名)、nz(其他专名)、t(时间词)、a(形容词)、j(简称)、w(标点符号)

Jieba 分词 + Bert-NER + Pyltp 词性标注:

 

注:nh(人名)、n(名词)、ns(地名)、nt(时间名词)、nz(其他专名)、b(区别词)、wp(标点符号)

 

结论

 

 

    1. 经过 NER、分词、词性标注的对比测试后发现,Jieba 分词同时具有速度快和支持用户自定义词典的两大优点,Pyltp 具有单独使用词性标注的灵活性。因此,使用 “Jieba 分词 + BertNER 作自定义词典 + Pyltp 词性标注” 的组合策略后,可以弥补 Jieba 分词在实体识别的缺点,保证较高的准确率和产品速度。

 

    1. PkuSeg 和 THULAC: 初始化模型就需要很长时间,导致分词和词性标注的模型预测速度慢,同时部分人名的命名实体识别有所缺失。

 

    1. Pyltp:分词效果太过于细化,而且实际上是无法用到用户自定义词典的。因为 LTP 的分词模块并非采用词典匹配的策略,而是 外部词典以特征方式加入机器学习算法当中 ,并不能保证所有的词都是按照词典里的方式进行切分。

 

 

3 中文指代消解

 

综述

 

指代消解(Coreference Resolution),即在文本中确定代词指向哪个名词短语,解决多个指称对应同一实体对象的问题。

 

常见用于实现指代消解的工具包: NeuralCorefStanford coreNLPAllenNLP 等。

 

大部分工具包都是基于语义结构中的词和句的规则来实现指代消解,而且都是在英文的语言结构当中实现了不错的效果, NeuralCoref 和 AllenNLP 不支持中文,而 Stanford coreNLP 是具有多种语言模型,其中包括了中文模型,但 Stanford coreNLP 的指代消解在中文的表现并不理想。目前而言,基于深度学习的端到端指代消解模型还达不到生产应用的要求。

 

基于 Stanford coreNLP 的指代消解模型

 

系统架构:

 

运用 Stanford coreNLP 中文模型的 词性标注 、 实体识别 和 句法依存 功能模块 + 规则 来构成一个中文指代消解系统。

 

输入:

 

 

结果:

 

 

” 屠呦呦 ” 被拆分为两个元素,这也直接导致了主语识别成了呦呦。最后的结果为:

 

 

基于 BertNER 的中文指代消解框架

 

本文选取 Pyltp 中文工具包中的依存句法分析模块,结合“Jieba 分词 + BertNER 作自定义词典 + Pyltp 词性标注”的词性标注和 BertNER 实体识别模块,以确定输入文本段落的主语和实体,从而将文本中出现的代词指代到对应的实体上。并且还实现了对缺失主语的部分文本进行主语补齐。

 

实验结果:

 

 

经过反复的实验表明,基于 BertNER 的中文指代消解框架比基于 Stanford coreNLP 的指代消解模型在中文上获得 更高的准确率和更好的效果 ,同时实现了主语补齐的功能,有助于抽取更多的有用三元组信息。

 

4 中文信息抽取系统

 

以下是基于 Bert-NER 的中文信息抽取系统的最终实验结果,模型细节请关注我们下一篇:《 基于 Bert-NER 构建特定领域的中文信息抽取框架(下)》。

 

中文信息抽取框架测试结果

 

目前的规则配置文档定义了五类关系:出生于,配偶,毕业于,工作在,父(母)子。

 

基于 80 条百度百科人物介绍,使用 StanfordCoreNLP 提取三元组的效果如下图所示。五类的关系抽取三元组准确率为 0.89,抽取率达到 0.69。

 

 

基于 80 条百度百科人物介绍,使用本文中文抽取模型,取得较为明显的改进,五类的关系抽取三元组准确率达到 0.99,抽取率达到 0.96。

 

 

测试用例结果展示

 

本文实验代码:

 

中文命名实体识别: https://github.com/EOA-AILab/NER-Chinese

 

中文分词与词性标注: https://github.com/EOA-AILab/Seg_Pos

 

原文地址: https://zhuanlan.zhihu.com/p/74803327

Be First to Comment

发表评论

邮箱地址不会被公开。 必填项已用*标注