目录
详见《统计自然语言处理(第二版)》p150-162
实体概念在文本中的引用(entity mention,即“指称项”)有三种形式:
MUC-6最早提出命名实体(named entity),当时关注的焦点是information extraction,即从报章等非结构化文本中抽取关于公司活动和国防相关活动的结构化信息,而人名、地名、组织机构名、时间和数字表达(时间、日期、货币量和百分数等)是结构化信息的关键内容。
相关的评测会议还有CoNLL(Conference on Computational Natural Language Learning)、ACE和IEER(Information Extraction-Entity Recognition Evaluation)。
MUC-6关注人名、地名(细化为城市、州和国家)、组织机构名。CoNLL扩大了专有名词的范围,包含产品名的识别。其他研究工作中也涉及了电影名、书名、项目名、研究领域名、电子邮件地址、电话号码等,还有生物信息学领域的专有名词等。本文主要关注人名、地名和组织机构名三类专有名词的识别方法。
大致分类如下:
类型 | 采用的模型或方法 |
---|---|
有监督 | 隐马尔科夫模型或语言模型 最大熵模型 支持向量机 条件随机场 决策树 |
半监督/弱监督 | 利用标注的小数据集(种子数据)自举(bootstrap)学习 |
无监督 | 利用词汇资源(如WordNet)进行上下文聚类 |
混合方法 | 集中模型相结合或利用统计方法和人工总结的知识库 |
基本思路(以汉语为例):
将给定的文本首先进行分词处理,然后对人名、简单地名和简单的组织机构名 进行识别,最后识别复合地名和复合组织机构名。
简单地名如北京、大不列颠;复合地名:北京市海淀区中关村xx路、中华人民共和国;简单组织机构名:北京大学、卫生部、联合国;复合组织机构名:欧洲中央银行、中华人民共和国卫生部、联合国世界粮食计划署。
由于基于CRF的命名实体识别属于有监督的学习方法,因此需要使用已标注的大规模语料,例如北京大学计算语言学研究所标注的现代汉语多级加工语料【现代汉语多级加工语料库】。还有一个在线的资源北大的CCL。
训练阶段:
首先,将分词语料的标记转化成用于命名实体序列标注的标记,例如pnb表示人名的起始用字,pni表示名字的内部用字。同样的,还有locb/loci/orgb/orgi。另外,out表示不属于某一实体。
然后,确定特征模板。特征模板一般采用当前位置的前后n(n>=1)个位置上的字(或词、字母、数字、标点等,统称“字串”)及其标记 表示,即[w(-n)/tag(-n), …, w(-1)/tag(-1), w(0)/tag(0), w(1)/tag(1), …, w(n)/tag(n)]。综合考虑性能和涵盖的信息量,通常n取2~3。
由于不同命名实体往往出现在不同的上下文语境中,因此,对不同的命名实体识别一般采用不同的特征模板。
例如,识别汉语中的人名时,考虑到不同国家的人名构成特点有明显的不同,可以划分为中国人名、日本人名、俄罗斯人名、欧美人名等。
同时考虑到出现在人名左右两边的字串对于确定人名的边界有一定的帮助,如某些称谓、某些动词和标点等,可以拿某些总结出来的“指界词”(左指界词或者右指界词)作为特征。
例如,人名识别常用的特征模板:
x(w0sn):当前词是否为中国人名姓氏用字,是:True,否:false
x(w0gn):当前词是否为中国人名名字用字,是:True,否:false
x(w0jn):当前词是否为日本人名用字,是:True,否:false
x(w0an):当前词是否为欧美人名用字,是:True,否:false
x(w0rn):当前词是否为俄罗斯人名用字,是:True,否:false
x(w+-ib):当前词左右两边第i个词(i=1,2)是否为指界词,是:True,否:false
也可以组合特征:
\[
f(x(w0sn),y(w0sn)) =
\begin{cases}
1, x(w0sn)=true\ and\ y(w0sn) = pnb \\
0, else \\
\end{cases}
\]