freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

0

1

2

3

4

5

6

7

8

9

基于Bert-NER构建特定领域的中文信息抽取框架(上)
逸立学院 2019-07-23 15:15:19 451849

导语


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

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


1 信息抽取和知识图谱

信息抽取和知识图谱

 

目录

1 命名实体识别

Ø Bert-BiLSTM-CRF命名实体识别模型

Ø NeuroNER和BertNER的中文NER对比

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

2 中文分词与词性标注

Ø (Jieba、Pyltp、PkuSeg、THULAC)中文分词和词性标注工具性能对比

Ø 分词工具与BertNER结合使用的性能

3 中文指代消解

Ø 基于Stanford coreNLP的指代消解模型

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

4 中文信息提取系统

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

 

 

    一、命名实体识别

 

1.1 综述:

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


1563865826_5d36b2e269979.png!small 

2 NER发展趋势图


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

 

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

 

1.2模型:

 

1.2.1 Word Embedding-BiLSTM-CRF:

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


1563865840_5d36b2f047022.png!small 

3 词向量+BiLSTM+CRF”模型构造

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


 1.2.2 Bert-BiLSTM-CRF:随着Bert语言模型在NLP领域横扫了11项任务的最优结果,将其在中文命名实体识别中Fine-tune必然成为趋势。它主要是使用bert模型替换了原来网络的word2vec部分,从而构成Embedding层,同样使用双向LSTM层以及最后的CRF层来完成序列预测。详细的使用方法可参考:[基于BERT预训练的中文NER]https://blog.csdn.net/macanv/article/details/85684284

 

 

1.3 NeuroNER和BertNER的中文NER实验

1.2.1实验数据

1.2.1.1数据来源:

本文的NER实验数据是来自于[人民网]http://www.people.com.cn/的将近7万句(250万字)中文新闻语料。


4.png

4 CSV格式的原始数据

 

1.2.1.2 数据样式:

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

1563865877_5d36b315e2128.png!small 

5 

1563865884_5d36b31c05802.png!small 

6 数据

1.2.1.3数据划分:

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


数据集样本数(句)标注实体(个)
训练集4960088192
验证集700012420
测试集1400025780

7

 

1.2.1.4命名实体识别结果展示:

展示用例:屠呦呦,女,族,中共党学家。19301230日生于浙江宁波,1951年考入北京大学,在医学院学系生药专业1955年,毕业于北京医学院(今北京大学医学部)。

展示用例抽取结果:[['PERSON', '屠呦呦'], ['TIME', '19301230'], ['LOCATION', '浙江宁波'], ['TIME', '1951'], ['ORGANIZATION', '北京大学'], ['ORGANIZATION', '医学院学系'], ['TIME', '1955'], ['ORGANIZATION', '北京医学院'], ['ORGANIZATION', '北京大学医学部']]


1.2.1.5实验结果:

工具分epoch训练时长测试集F1模型加速度预测速
BertNER305h 49m96.182.8s80ms
NeuroNER3014h 19m91.9323s2s
NeuroNER1002d 7h 10m92.3323s2s

8

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

 

1.2.2结论

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

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

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

 

 

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

 

1.3.1实验数据:

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

 

1.3.2命名实体识别结果展示:

展示用例:屠呦呦,女,族,中共党学家。19301230日生于浙江宁波,1951年考入北京大学,在医学院学系生药专业1955年,毕业于北京医学院(今北京大学医学部)

展示用例抽取结果:[['PERSON', '屠呦呦'], ['TIME', '19301230'], ['LOCATION', '浙江宁波'], ['TIME', '1951'], ['ORGANIZATION', '北京大学'], ['ORGANIZATION', '医学院'], ['TIME', '1955'], ['ORGANIZATION', '北京医学院'], ['ORGANIZATION', '北京大学医学部']]

 

1.3.3实验结果:

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


1563865915_5d36b33b1639b.png!small

                              9 实验结果图


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

 

数据集训练时长增长比例F1值提升比例
30W1.20.25%
50W1.2倍0.17%
250W1.2倍0.11% 

10 效能对比表 

1.3.4结论

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

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

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

 

 

二、中文分词和词性标注

 

2.1综述:

 

分词:

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

 

词性标注:

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

 

2.2 分词和词性标注工具对比:

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


工具分平均速度自定义词集成程度来源
Jieba6ms支持,不与模型加分词可单独使用百度员工
Pyltp2ms作为特征加载到模型中注均可独使用哈工大
PkuSeg1.4s支持,与模型加载分词可单独使用北京大学
THULAC1.6s支持,与模型加载分词可单独使用清华大学

11


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

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

 

2.2.1测试文本:

1563865960_5d36b3683db6a.png!small 

12

2.2.2效果对比


Jieba:

1563865968_5d36b3709bd89.png!small

13

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

 

Pyltp:

1563865982_5d36b37e41a19.png!small 14

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

 

PkuSeg:

1563865995_5d36b38b0fab1.png!small

15

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

 

THULAC:

1563866003_5d36b393c9146.png!small

16

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

 

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

1563866011_5d36b39b7af50.png!small

17

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

 

2.3结论:

 

a. 经过NER、分注的测试发现Jieba具有速度快和支持用自定义词典的两大点,Pyltp具有独使用注的灵活性。因此,使用“Jieba + BertNER作自定义词 + Pyltp词性标注合策略后,可以弥Jieba识别的缺点,保证较高的准确率和品速度。

b. PkuSegTHULAC 初始化模型就需要很长时间致分注的模型预测速度慢,同部分人名的命名识别有所缺失。

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

 


三、中文指代消解

 

3.1综述:

 

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

 

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

 

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

 

3.2基于Stanford coreNLP的指代消解模型:

 

3.2.1架构:

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

 

3.2.2输入

 1563866026_5d36b3aa5d223.png!small

18

3.2.3结果:

 

主语屠呦呦
词性标注[('屠', 'NR'), ('呦呦', 'NR')]
命名实体识别[('屠', 'O'), ('呦呦', 'O')]

19

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

 

1563866034_5d36b3b281630.png!small

20

 

 

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

 

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

 

3.3.1实验结果:

1563866044_5d36b3bc4f39b.png!small

21

 

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

 

     四、中文信息抽取系统

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


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

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

 

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

1563866069_5d36b3d57036a.png!small

22

 

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

1563866077_5d36b3ddcabbc.png!small 23

 

4.1.3测试用例结果展示:

1563866085_5d36b3e505dd1.png!small 24

 

---

本文实验代码:

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

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


作者 | 朱展锋、李秋建、金立达

学校 | 英国帝国理工学院

机构 | 逸立学院AI Lab

研究方向 | 自然语言处理、信息抽取、知识图谱  

# 知识图谱 # Bert-NER # 信息抽取
本文为 逸立学院 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
逸立学院
逸立学院 LV.1
上海垚秋企业管理咨询有限公司
  • 2 文章数
  • 2 关注者
基于Bert-NER构建特定领域的中文信息抽取框架(上)
2019-08-02
文章目录