基于维基百科的中文嵌套命名实体识别语料库自动构建

2018-11-20 06:42:56李雁群何云琪钱龙华周国栋
计算机工程 2018年11期
关键词:维基百科维基嵌套

李雁群,何云琪,钱龙华,周国栋

(苏州大学 计算机科学与技术学院 自然语言处理实验室,江苏 苏州 215006)

0 概述

信息抽取的目的是从无结构的自由文本中抽取出实体及其相互关系并转化为结构化表达形式,从而为知识库的构造提供数据基础[1-2]。嵌套命名实体是一种特殊形式的实体,其内部包含其他实体,嵌套在里面的实体称为内部实体,最外层的实体称为外部实体。如外部实体“[[[中共]nt [北京]ns 市委]nt 宣传部]nt”包含“[中共]nt”“[北京]ns”和“[中共北京市委]nt”3个内部实体。其中,嵌套实体的类型标注采用《人民日报》语料的格式,即nr表示人名,ns表示地名,nt表示组织名。由于嵌套命名实体含有丰富的实体信息以及实体之间的相互关系,且其结构复杂多变,因此嵌套命名实体的识别成为信息抽取中值得研究的任务之一。

目前的嵌套命名实体识别都采用有监督的机器学习方法,因而需要一定规模的语料库。GENIA V3.02[3]是生物医学领域内的命名实体语料库,其中包含了嵌套命名实体,被广泛应用于生物医学领域的命名实体识别研究。该语料库包含2 000条MEDLLINE摘要和94 014个实体引用,其中约有17%的实体嵌套在其他实体中。EPPI[4]是生物医学领域内另一个标注了蛋白质及其相互作用关系的语料库,它包含217个从PubMed和PubMedCentral选出来的摘要和全文文献,总共有134 059个实体引用。RCAHMS[5]是一个标注实体及其语义关系的历史档案语料库,包含1 546个文本和28 272个实体引用,其中18.7%的实体嵌套在其他实体中。

中文方面的命名实体语料有来源广泛的MSRA语料和新闻领域的1998年1月份的 《人民日报》语料,两者都标注了最外层实体,但后者还标出了嵌套在内层的命名实体,因此中文嵌套命名实体识别研究大都基于《人民日报》语料[6-7]。该语料库总共有61 922个实体引用,其中,13.8%的实体嵌套在其他实体中。不过,由于《人民日报》语料是1998年的新闻语料,因而其局限性较大,难于拓展到其他领域的嵌套命名实体识别。本文提出基于中文维基百科的方法来自动构建面向宽泛领域的中文嵌套命名实体识别语料库。该方法对中文维基百科的条目进行实体分类,并从这些实体条目中自动构造出中文嵌套命名实体。

1 相关工作

嵌套命名实体识别方法主要分为基于规则的方法和基于机器学习的方法。早期的方法是在基本实体识别的基础上采用基于规则的后处理方法来识别嵌套命名实体[8-9],其不足之处是规则的灵活性较差。基于机器学习的方法大都采用层次模型,即将嵌套命名实体的识别转换成多个层次的序列标注问题。层次模型可以从3个层面展开:1)标签层次化[4],即扩充一个词的标记使它反映出该词所参与的所有实体类型,然后用一个序列化标注模型来识别,其不足之处是标记集庞大,从而导致训练语料稀疏,训练时间较长;2)模型层次化[4,10],即采用多个叠加的序列化标注模型,第1个序列化模型首先识别出基本实体,然后再用第2个模型识别出第2层嵌套命名实体,以此类推,其特点是模型数量较多;3)语料层次化[5],即将一定范围内的单词从左到右连成长度不一的词串作为实例,然后用序列化标注模型来识别,其缺点是数据复杂度较高。

与序列化标注方法不同,文献[11]采用判别式成分句法分析器来训练嵌套命名实体识别模型。该方法把每个嵌套命名实体转换成一棵句法分析树,其中每一个词作为该树的叶子节点,而每个内部实体作为该树的子树,其优点是树的表示法可以清晰地表示任意层数的嵌套命名实体。

中文嵌套命名实体识别的研究都是在《人民日报》语料上进行的,大都采用层次化模型。文献[6]将人名和地名作为基本实体在第1层进行识别,然后将识别结果传递到第2层模型进行嵌套组织机构名的识别。文献[12]用相似的方法,差别在于第1层识别基本实体,第2层再识别3层实体,如果要识别更高层的嵌套命名实体还要采用启发式规则进行后处理。与上述研究工作不同的是,文献[7]提出一种联合学习模型,将中文嵌套命名实体识别看作是一种联合切分和标注任务,采用平均感知器算法进行在线训练,运用集束搜索算法进行解码。该方法获得了较快的收敛速度和较好的识别效果,缺点是只能识别两层嵌套命名实体。

2 嵌套命名实体识别语料库的构建

本文的核心思想是利用中文维基百科来自动构建一个高质量的中文嵌套命名实体语料库。一方面,中文维基百科含有大量的条目,其中包含大量的各种类型的命名实体,如人物、组织和机构等,可以采用机器学习的方法从这些维基条目中以较高的性能识别出命名实体及其类型[13]。另一方面,这些维基百科条目之间本身就蕴含着上下级关系,如条目“上海市虹口区足球场”为地名实体,而其中的“上海市”和“虹口区”又分别都是维基条目中的地名实体。因此,可以利用这样的包含关系来自动构建一个嵌套命名实体“[[上海市]ns [虹口区]ns 足球场]ns”。具体而言,从维基百科构建嵌套命名实体语料库包含以下2个步骤:

1)中文维基条目实体分类。利用机器学习的方法对所有的维基百科条目进行分类,从中识别出命名实体条目。

2)嵌套命名实体自动生成。利用维基条目实体分类结果以及维基页面中的相关信息进行嵌套命名实体自动标注。

2.1 中文维基条目实体分类

对英文维基百科条目进行分类主要有2种方法:基于启发式规则的方法[14]和基于机器学习的方法[15-17]。在中文维基百科上,文献[13]采用机器学习的方法进行维基条目的实体分类,从中文维基百科条目的半结构化信息及维基页面的文本中提取各类特征,并根据中文的特点加入更多额外特征,构造相应的特征向量,然后使用SVM分类器进行条目实体分类,获得了较高的分类性能。本文使用该方法进行中文维基条目的实体分类,其主要特征包括以下4个方面:

1)信息框属性名。页面信息框的内容是关于该条目的基本属性,每一个属性包含属性名和属性值,将其中所有的属性名以词包形式提取出来作为一个特征。例如,在一个人物条目的信息框中可能有属性对<“国籍”“中华人民共和国”><“姓名”“XXX”>和<“出生日期”“XXXX年XX月XX日”>等,分别提取“国籍”“姓名”和“出生日期”等作为词包特征。

2)分类框中心词。每个条目所对应页面的分类框为当前条目所属的各个类别。例如,一个人物的分类框中可能有“XXXX年出生”“在世人物”和“中国人民大学校友”等类别信息,分别提取每个类别的中心词“出生”“人物”和“校友”等作为特征。

3)定义句中心词。每个维基页面文本的第一段通常为该条目的摘要,而第一句则是定义句,介绍当前条目的基本概念。通过对定义句进行分词和词性标注,找出其最右边的名词作为定义句的中心词。此外,当定义句的句式结构为 “……是(为)……”时,还能通过正则匹配获得该句中心词。例如,从“马云”维基条目的摘要中提取到的特征为“企业家”。

4)中文相关特征。与中文有关的4个额外特征,具体如下:

(1)条目标题的首字是否为中国人名的姓氏且标题长度为2个到4个字。

(2)条目标题中是否包含外国人译名中使用的分隔符“·”。

(3)标题的最后一个字和词,词可以通过分词工具获得。

(4)维基百科分类框中心词在同义词词林[18]中的语义编码。

在人工标注的条目实体类型语料上的实验结果表明,该方法的总体性能较高,准确率达到97%,召回率达到95%,平均性能F1指数达到了96%,这样的性能满足了后续要求。

2.2 嵌套命名实体自动生成

通过上述的维基条目实体分类得到了一个大规模的实体字典,其中有大量的实体条目包含了其他实体条目,很多情况下一个实体中甚至包含了3个到4个内部实体,这为自动构建嵌套命名实体语料库提供了大量的数据基础。虽然该实体字典规模很大,但也存在下列问题:

1)字典匹配的假正例问题。在实体文本中进行单纯的字典匹配经常会产生假的嵌套命名实体,这种情况尤其会发生在外国实体名称中。如“奥雷尔韦尔拉克”是法国阿韦龙省的一个市镇,而“奥雷”则是法国利穆赞大区上维埃纳省的一个市镇,两者没有任何的嵌套关系。简单的名称匹配很容易使后者成为前者的内部实体,但这是一个假正例。

2)实体歧义问题。如“中国”这个词在当今语境下(包括《人民日报》语料库和微软语料库)没有任何歧义,就是指“中华人民共和国”,但由于中文维基百科是一个综合性的知识库,其中“中国”还可以指向1931年由中国共产党所创建的“中华苏维埃共和国”,1927年建立的以南京为首都的“中华民国”,袁世凯在1915年称帝成立的“中华帝国”等,甚至还可以指向日本九州的“中国”地区,这种实体的歧义给的构建工作带来了困难。

为了解决上述问题,本文提出了自动构造中文嵌套命名实体的算法。

算法嵌套命名实体自动生成

输入CWE[],中文维基实体名称列表

WID{},中文维基实体名称到维基条目id的映射表

WLK{},维基条目id到该维基页面中的内链接列表的映射表

输出CNE[],中文嵌套命名实体列表

初始化:CNE=[]

1.对每一个中文维基实体名称CWE[i]:

2. 如果WID{CWE[i]}有多个元素,则跳过该实体

3. 以CWE为字典,使用最长匹配原则从左到右识别出其中所包含的内部实体,匹配后的嵌套实体为ne

4. 将ne加入到CNE数组

5.对每一个中文嵌套命名实体CNE[i]:

6. 对CNE[i]的每一个内部实体e:

7. 若WID{e}中存在一个id等于WID{CNE[i]},则在CNE[i]中删除e的标注

8. 若WID{e}中没有一个id在WLK{WID{CNE[i]}}中,则删除CNE[i]

9.对每一个中文嵌套命名实体CNE[i]:

10. 对每一个中文嵌套命名实体CNE[i]:

11. 若CNE[i]以内部实体e出现在CNE[i]中,则用CNE[i]的标注代替CNE[i]中e的标注

在算法中,CWE为从上节获得的中文维基实体名称列表,WID将实体名称映射到维基id,当id有多个时,表明实体名称具有多个含义,即岐义性,WLK可根据id得到该页面中的所有内链接的id列表。该算法主要包括匹配、过滤和汇聚3个步骤:

1)匹配。即基于字典的命名实体识别(第1步~第4步)。对实体字典中的每一个实体名称(称为外部实体),以字典本身作为词表,使用最长匹配原则从左到右识别出其中所包含的所有内部实体。如果外部实体本身有歧义时,则不考虑该实体。如实体名称“[上海交通大学徐汇校区]ns”,字典中包含“[上海交通大学]nt”和“[徐汇]ns”2个实体,因此可直接得到嵌套命名实体“[[上海交通大学]nt [徐汇]ns 校区]ns”。

2)过滤。把不满足嵌套关系的内部实体作为假正例过滤掉(第5步~第8步),原则如下:

(1)内部实体的某一个含义和外部实体指向同一个维基页面(第7步),如“[西藏自治区]ns”中的“[西藏]ns”指向同一个维基页面,因此后者不能作为前者的内部实体。事实上,“[西藏自治区]ns”是一个不能再分割的整体。

(2)内部实体的任何一个含义所指向的实体都没有出现在外部实体的页面中(第8步),其中,WLK{WID{CNE[i]}}表示外部实体所指向的维基页面中的所有内链接id列表,即如果在外部实体的页面中找不到对内部实体的引用,则认为两者之间的嵌套关系不存在,如实体“[奥雷尔韦尔拉克]ns”页面中不存在对实体“[奥雷]ns”的引用,因而嵌套关系不成立。同样,实体“[中国中央电视台]nt”的页面中出现了“中国”的一个含义“[中华人民共和国]ns”的引用,因此“[中国]ns”就是一个内部实体。需要注意的是,这个规则也会把一些真正的正例过滤掉,如“[七十三军抗战阵亡将士墓]ns”中的内部实体“[七十三军]nt”,由于没有出现在前者的页面中而被滤掉。因此,直接把它从实体列表中移除,既不作为正例,也不作为负例。

3)汇聚。如果一个包含内部实体的外部实体又作为内部实体出现在另一个外部实体中(称为上级实体),则将它的嵌套关系汇聚到上级实体中,这样就可以保证一个外部实体包含所有可能层次的内部实体(第9步~第11步)。如实体“[[上海]ns 交通大学]nt”和“[[上海交通大学]nt [徐汇]ns 校区]ns”可以汇聚成一个单一嵌套命名实体“[[[上海]ns 交通大学]nt[徐汇]ns校区]ns”。

3 语料库统计和评估的自动构建

3.1 语料库统计的自动构建

通过上述方法从维基百科中自动构建出包含嵌套命名实体层次结构的实体列表,称为嵌套命名实体识别自动构建语料,该语料可用于从外部实体中识别出它所包含的内部实体。语料库的统计情况如表1所示。

表1 维基语料实体统计

从表1可以看出:

1)人名没有嵌套现象,但人名可以出现在内部实体中。

2)无嵌套结构的外部实体中大部分是人名(约55%)和地名(约39%),以及少量的组织名(约6%)。

3)有嵌套结构的外部实体中地名(约53%)和组织名(约47%)差不多各占一半,而内部实体则反之,大部分是地名(约82%),小部分是组织名(约13%)和人名(约5%)。

3.2 语料库人工评估的自动构建

为了衡量自动构建语料库的质量,从中随机选取了200个外部实体,首先进行嵌套命名实体的手工标注,然后再与自动标注的嵌套命名实体进行比较,并采用与准确率和召回率相类似的标对率和标全率以及F1指数来反映语料的自动标注质量,抽样统计结果如表2所示。

表2 自动标注语料质量的抽样统计

从表2可以看出,整体标对率达到了92.31%,然而整体标全率较低,只达到了72.85%。错标17条地名漏标的主要原因有:

1)维基条目缺失(12条),如地名“境主庙水库”应该标注为“[[境主庙]ns 水库]ns”,但是维基条目中没有地名“境主庙”这个条目。

2)维基链接缺失(4条),如“大坂产业大学短期大学部”应标注为“[[[大坂]ns 产业大学]nt 短期大学部]nt”,但因为“大坂产业大学”页面没有包含“大坂”的链接,所以最后标注为“[[大坂产业大学]nt 短期大学部]nt”。

3)条目类型错误(1条),即在维基条目实体分类时识别为非实体,如“汲水门灯笼洲灯塔”应标注为“[[汲水门]ns [灯笼洲]ns 灯塔]ns”,但由于“灯笼洲”的条目类型识别为非实体,因此标注为“[[汲水门]ns 灯笼洲灯塔]ns”。

4 自动构建语料的实验评估

为了衡量自动标注语料的实用性,把它应用于具体的嵌套命名实体识别任务中。首先在已有中文实体识别语料基础上人工构建一个嵌套命名实体的测试语料,称为人工标注语料,然后再用它来衡量自动构建语料上训练出来的模型的识别性能。

4.1 人工标注语料

目前,中文命名实体识别[19]中常用的语料有微软语料和《人民日报》语料,其中后者还标注了嵌套命名实体,因此为了减少标注工作量,把《人民日报》语料作为测试语料。不过,该语料只标注了二层嵌套结构,且都是命名实体。如嵌套命名实体“[中共/j 北京/ns 市委/n 宣传部/n]nt”不能满足对嵌套命名实体的定义,其正确的标注应该是“[[[中共]nt [北京]ns市委]nt宣传部]nt”。

本文采用自动抽取加人工调整的方式来产生中文嵌套命名实体测试语料,同时为了减少重复标注,只对实体而非一个实体的多个引用进行标注,具体过程为:

1)自动抽取。从1998年1月的《人民日报》语料中抽取出复杂命名实体,并去除重复的实体引用,保留其中的命名实体标注。如实体“[中共/j 北京/ns 市委/n 宣传部/n]nt”提取后变成实体“[中共 [北京]ns 市委宣传部]nt”。

2)人工调整。人工标注提取出的嵌套命名实体,通常是添加新的内部实体。如第1步中的实体“[中共 [北京]ns 市委宣传部]nt” 经人工调整后为“[[[中共]nt [北京]ns 市委]nt 宣传部]nt”。

标注后的《人民日报》中所有实体统计情况如表3所示,从表3可以看出,无嵌套结构的外部实体中的组成与维基语料差别不大,大部分是地名(约47%)和人名(约43%),再加少量的组织名(约10%);有嵌套结构的外部实体的组成与维基语料大为不同,大部分是组织名(约90%),再加少量的地名(约10%),而内部实体的组成与维基语料基本一致,大部分是地名(约75%),小部分是组织名(约24%),还有极少数是人名(约1%)。

表3 《人民日报》语料嵌套命名实体统计

4.2 实验方法

嵌套命名实体识别是从外部实体中识别出嵌套的内部实体,因此首先需要从文本中识别出外部实体,然后再从外部实体中识别出内部嵌套命名实体。由于本文的研究重点在于语料库的自动构建,而不在于方法本身,因此选择较易实现的基于序列标注的CRF模型来实现最外层实体的识别。

4.2.1 嵌套命名实体识别方法

对于嵌套命名实体识别,采用由内而外的层次模型方法,即使用多个CRF模型来识别由内到外不同嵌套层次的实体。初步实验结果表明,由内而外的方法总体上优于其他嵌套命名实体识别方法。

图1列出了嵌套命名实体“[[[中共]nt [北京]ns 市委]nt宣传部]nt”中各个层次的标签,其中零层标签是指最外层实体识别时的标签(为一致起见省略了其上下文),其生成的模型称为零层模型,一层到三层标签是指在识别嵌套命名实体时各层模型采用的标签,这3层模型可以统称为多层模型。零层模型的训练和测试需要考虑外层实体所在的上下文,而多层模型是在外层实体的范围内进行训练和测试,与外层实体的上下文无关,因而训练和测试速度较快。

图1 嵌套命名实体识别的各层标签

4.2.2 CRF特征

以往的中文命名实体识别研究表明[20],以字为单位的CRF模型在资源最少(即不进行分词)的情况下能取得较好的识别性能,因此本文也采用基于字符的CRF模型,且只采用了最基本的上下文特征,具体如下:

Cn(n=-2,-1,0,1,2)

CnCn+1(n=-1,0)

其中,C0代表当前的字,Cn代表当前位置之后第n位的字,CnCn+1代表第n位及其下一个字的组合。例如,对于序列“中华人民共和国”来说,当以字为单位时,若C0为“人”,则C1代表“民”,C-1代表“华”,而C0C1代表“人民”。

需要说明的是,训练零层模型时只有字特征,而训练多层模型时除包含字特征外,还包含所有下层的标签作为特征,而在测试时多层模型则采用下层模型识别的结果作为其特征。

4.2.3 评估方法

采用常规的P、R、F1指数来评估实体识别的性能,P为准确率,R为召回率,F1为两者的调和平均。实验评估包含2个部分:一是交叉验证,即和其他《人民日报》语料上的研究工作一样[7]采用十折交叉方法,将《人民日报》语料划分为10份,其中,1份作为测试集,另外9份作为训练集,总体性能取10次结果的平均值;二是跨库验证,即使用自动构建语料库训练出多层模型,然后在《人民日报》语料最外层实体识别出来的基础上再进行嵌套命名实体的识别。

4.3 实验结果

本文实验结果主要包括以下方面:

1)外层实体识别的交叉验证性能

表4列出了在《人民日报》语料上最外层实体识别的交叉验证性能,同时也给出了各个类型的实体数量和占总数百分比。从表4可以看出,外层实体识别的总体F1性能达到了88%,且各个类型上的识别性能相差不大,尽管组织名实体所占比例较少(约20%)。

表4 外层实体识别的交叉验证性能

2)嵌套命名实体识别的交叉验证性能

表5列出了在《人民日报》语料上嵌套命名实体识别的交叉验证性能,该性能是在外层实体识别的基础上采用多层训练模型得到的结果。

表5 嵌套命名实体识别的交叉验证性能

从表5可以看出:

(1)嵌套命名实体识别的总体性能低于外层实体识别性能,特别是召回率较低,其主要原因是有些较长的外层实体在零层模型中没有被召回,因而导致其中的嵌套命名实体在下一步也无法识别出来。

(2)人名实体的性能比地名和组织名实体的性能要低很多,这主要是由于其数量很少,但同时对总体性能的影响也微乎其微。

3)嵌套命名实体识别的跨库验证性能

利用维基条目自动构建语料库来训练多层模型,然后利用该模型来识别表4中已经识别出的外层实体中的嵌套命名实体,从而通过实验来验证自动构建语料库的质量。实验结果如表6所示。

表6 嵌套命名实体识别的跨库验证性能

从表6可以看出:

(1)自动构建语料在中文嵌套命名实体识别上取得了67.19%的F1值,虽然不如人工标注语料的性能高,但这是在没有任何人工标注的前提下取得的结果。

(2)与人工标注语料相比,召回率仍然偏低,这可能是由于维基语料中还有不少噪音,即遗漏了需标注的嵌套命名实体,这也是今后进一步研究的方向。

4)与其他嵌套命名实体识别系统的性能比较

表7列出了各中文嵌套命名实体识别系统在《人民日报》语料上的实验结果。需要指出的是,该结果仅供参考,主要原因是:

(1)文献[6-7,10]采用的《人民日报》嵌套命名实体语料没有任何的调整,它只标注了嵌套命名实体,因此只有二层嵌套,而本文重新标注了多层的嵌套命名实体。

(2)文献[6-7]给出了所有实体(包含外层实体)的识别性能,而文献[10]的计算方法和本文的方法相近,只考虑了嵌套命名实体的识别性能。

总体而言,嵌套命名实体的识别性能还不够理想,今后还需要进一步的研究。

表7 中文嵌套命名实体识别系统的性能比较 %

5 结束语

本文在中文维基百科条目实体分类的基础上,通过匹配、过滤和汇聚3个阶段,自动构建了一个大规模的中文嵌套命名实体识别语料库。在人工标注的《人民日报》中文嵌套命名实体识别上的实验结果表明,虽然自动构建语料的性能不能与手工标注语料的性能相媲美,但是维基语料具有规模大和领域广的特点,能够适应宽泛领域上的中文嵌套命名实体识别任务。本文的不足之处在于,目前自动构建的维基百科语料在实验性能上召回率不高,主要原因是维基条目中的部分嵌套命名实体没有被自动标注出来,即标全率不高。因此,下一步的研究包括:改善该语料的标全率,使用更多的百科资源是一个有效的途径;将维基百科语料进行领域划分,从而更好地适应不同目标领域的中文嵌套命名实体识别任务。

猜你喜欢
维基百科维基嵌套
维基百科影响司法
英语世界(2023年10期)2023-11-17 09:18:46
基于嵌套Logit模型的竞争性选址问题研究
维基百科青年
英语文摘(2021年8期)2021-11-02 07:17:46
爱的最后一课
基于变长隐马尔科夫模型的维基词条编辑微过程挖掘
维基解密大争论:争论固有焦点和在互联网时代呈现的争论新特征
新闻传播(2015年4期)2015-07-18 11:11:29
APP
一种基于区分服务的嵌套队列调度算法
计算机工程(2014年6期)2014-02-28 01:25:29
无背景实验到有背景实验的多重嵌套在电气专业应用研究
河南科技(2014年23期)2014-02-27 14:19:17
IBM的监视
意林(2014年2期)2014-02-11 11:09:17