【命名实体识别】HMM-Viterbi角色标注中国人名识别
2017-12-04 13:21
453 查看
实战HMM-Viterbi角色标注中国人名识别
这几天写完了人名识别模块,与分词放到一起形成了两层隐马模型。虽然在算法或模型上没有什么新意,但是胜在训练语料比较新,对质量把关比较严,实测效果很满意。比如这句真实的新闻“签约仪式前,秦光荣、李纪恒、仇和等一同会见了参加签约的企业家。”,分词结果:[签约/v,仪式/n, 前/f, ,/w, 秦光荣/nr, 、/w, 李纪恒/nr, 、/w, 仇和/nr, 等/u, 一同/d, 会见/v, 了/ul, 参加/v, 签约/v, 的/uj, 企业家/n, 。/w],三个人名“秦光荣”“李纪恒”“仇和”一个不漏。一些比较变态的例子也能从容应对,比如下面:
原始句子 | HanLP | ansj分词 |
签约仪式前,秦光荣、李纪恒、仇和等一同会见了参加签约的企业家。 | [签约/v, 仪式/n, 前/f, ,/w, 秦光荣/nr, 、/w, 李纪恒/nr, 、/w, 仇和/nr, 等/u, 一同/d, 会见/v, 了/ul, 参加/v, 签约/v, 的/uj, 企业家/n, 。/w] | [签约/v, 仪式/n, 前/f, ,/w, 秦/nr, 光荣/a, 、/w, 李纪恒/nr, 、/w, 仇/nr, 和/c, 等/u, 一同/d, 会见/v, 了/ul, 参加/v, 签约/v, 的/uj, 企业家/n, 。/w] |
王国强、高峰、汪洋、张朝阳、韩寒、小四 | [王国强/nr, 、/w, 高峰/n, 、/w, 汪洋/n, 、/w, 张朝阳/nr, 、/w, 韩寒/nr, 、/w, 小/a, 四/m] | [王国/n, 强/a, 、/w, 高峰/n, 、/w, 汪洋/n, 、/w, 张/q, 朝阳/ns, 、/w, 韩寒/nr, 、/w, 小/a, 四/m] |
张浩和胡健康复员了 | [张浩/nr, 和/c, 胡健康/nr, 复员/vn, 了/ul] | [张浩/nr, 和/c, 胡/nr, 健康/a, 复员/vn, 了/ul] |
王总和小丽结婚了 | [王总/nr, 和/c, 小丽/nr, 结婚/v, 了/ul] | [王/nr, 总和/n, 小丽/nr, 结婚/v, 了/ul] |
编剧邵钧林和稽道青说 | [编剧/n, 邵钧林/nr, 和/c, 稽道青/nr, 说/v] | [编剧/n, 邵钧林/nr, 和/c, 稽/nr, 道青/nr, 说/v] |
这里有关天培的壮烈 | [这里/r, 有/v, 关天培/nr, 的/uj, 壮烈/a] | [这里/r, 有关/vn, 天培/nr, 的/uj, 壮烈/a] |
龚学平等领导,邓颖超生前 | [龚学平/nr, 等/u, 领导/n, ,/w, 邓颖超/nr, 生前/t] | [龚学平/nr, 等/nw, 领导/n, ,, 邓颖超/nr, 生前/t] |
开源项目
本文代码已集成到HanLP中开源:http://www.hankcs.com/nlp/hanlp.html原理
推荐仔细阅读《基于角色标注的中国人名自动识别研究》这篇论文,该论文详细地描述了算法原理和实现。从语料库的整理、标注到最后的模式匹配都讲得清清楚楚。我在这篇论文的基础上做了改进,主要步骤我总结如下:1、对语料库自动标注,将原来的标注转化为角色标注。角色标注一共有如下几种:
编码 | 代码 | 意义 | 例子 |
B | Pf | 姓氏 | 张华平先生 |
C | Pm | 双名的首字 | 张华平先生 |
D | Pt | 双名的末字 | 张华平先生 |
E | Ps | 单名 | 张浩说:“我是一个好人” |
F | Ppf | 前缀 | 老刘、小李 |
G | Plf | 后缀 | 王总、刘老、肖氏、吴妈、叶帅 |
K | Pp | 人名的上文 | 又来到于洪洋的家。 |
L | Pn | 人名的下文 | 新华社记者黄文摄 |
M | Ppn | 两个中国人名之间的成分 | 编剧邵钧林和稽道青说 |
U | Ppf | 人名的上文和姓成词 | 这里有关天培的壮烈 |
V | Pnw | 人名的末字和下文成词 | 龚学平等领导, 邓颖超生前 |
X | Pfm | 姓与双名的首字成词 | 王国维、 |
Y | Pfs | 姓与单名成词 | 高峰、汪洋 |
Z | Pmt | 双名本身成词 | 张朝阳 |
A | Po | 以上之外其他的角色 |
我在此基础上拓展了一个S,代表句子的开始。
2、统计标签的出现频次,标签的转移矩阵。
3、对粗分结果角色标注,模式匹配。
我对论文中的几个模式串做了拓充,并且采用了AC模式匹配算法。
体会
论文中将三字名称拆分为BCD,我实测在2-gram模型下,C很容易被识别为E,导致人名缺一半。人民日报2014中的人名并不能覆盖所有常用字,所以我去别的地方找了个人名库,拆成BCD或BE补充了进去。
人民日报2014语料库中有很多错误,比如
去/vf 年老/vi 张中秋/nr 去/vf “/w 泡茶/vi ”/w ,/w 送礼/vi 遭到/v 了/ule 拒绝/v ,/w 老张/nz 担心/v 金额/n 不够/a
中秋很明显不是人名的组成部分,这个必须手工剔除。
“中秋安全”会识别出“中 秋安全”来,因为2-gram词典中没有“中秋@安全”这种接续,而有“中@未##人”这种接续。初步的解决方法是手工往2-gram词典里面加一条“中秋@安全”。这反映了这种方法的局限性,另一方面也说明词典的重要性。
转载自:http://www.hankcs.com/nlp/chinese-name-recognition-in-actual-hmm-viterbi-role-labeling.html
相关文章推荐
- Hanlp实战HMM-Viterbi角色标注中国人名识别
- 【NLP】层次HMM-Viterbi角色标注模型下的机构名识别
- HMM算法-viterbi算法的实现及与分词、词性标注、命名实体识别的引用
- 中文命名实体识别之学习笔记一(词性标注)
- 使用Stanford CoreNLP的Python封装包处理中文(分词、词性标注、命名实体识别、句法树、依存句法分析)
- 学习笔记CB007:分词、命名实体识别、词性标注、句法分析树
- 统计自然语言处理梳理一:分词、命名实体识别、词性标注
- 中文词性标注以及命名实体识别
- 实战HMM-Viterbi角色标注地名识别
- 学习笔记CB007:分词、命名实体识别、词性标注、句法分析树
- nlp 总结 分词,词义消歧,词性标注,命名体识别,依存句法分析,语义角色标注
- nlp-形式语言与自动机-ch07-自动分词、命名实体识别与词性标注
- 哈工大ltp,分词,词性标注,命名实体识别技术的特征提取
- 基于深层神经网络的命名实体识别技术
- 基于crf的命名实体识别的一部分总结加文本分类大致流程
- 基于深层神经网络的命名实体识别技术
- 命名实体识别
- 命名实体识别
- 21天搞定聊天机器人之{命名实体识别}
- 命名实体识别(named entity recognition )基于统计方法的技术比较