【NLP】层次HMM-Viterbi角色标注模型下的机构名识别
2017-12-08 15:07
615 查看
层次HMM-Viterbi角色标注模型下的机构名识别
原理
基本原理请参考《实战HMM-Viterbi角色标注地名识别》,不再赘述。与人名和地名识别稍有不同的是,在命名实体识别之前,需要先执行人名和地名识别,将粗分结果送入HMM模型求解,得出细分结果后才能进行,这是因为人名和地名也是机构名中的常见成分。这是与《实战HMM-Viterbi角色标注地名识别》《实战HMM-Viterbi角色标注中国人名识别》这两个姊妹篇最显著的不同。
训练
角色标注
参考《基于角色标注的中文机构名识别.doc》,采用如下角色——
角色 | 意义 | 例子 |
A | 上文 | 参与亚太经合组织的活动 |
B | 下文 | 中央电视台报道 |
X | 连接词 | 北京电视台和天津电视台 |
C | 特征词的一般性前缀 | 北京电影学院 |
F | 特征词的译名性前缀 | 美国摩托罗拉公司 |
G | 特征词的地名性前缀 | 交通银行北京分行 |
H | 特征词的机构名前缀 | 中共中央顾问委员会 |
I | 特征词的特殊性前缀 | 中央电视台 |
J | 特征词的简称性前缀 | 巴政府 |
D | 机构名的特征词 | 国务院侨务办公室 |
Z | 非机构名成份 |
这些角色远远不够,在HanLP中,还拓展了数词和方位词等等。
比如下列熟语料:
参与/v [北京/ns 电影/n 学院/nis]/nt 和/cc [美国/nsf 辛普森/nr 公司/nis]/nt 的/ude1 活动/vn ,/w 由/p [交通/n 银行/nis 北京/ns 分行/n]/nt 与/cc 麦当劳/nt 赞助/v ,/w [巴/b 政府/nis]/nt 和/cc [中共中央/nt 顾问/nnt 委员会/nis]/nt 指导/vn ,/w [中央/n 电视台/nis]/nt 报道/v
经过自动角色转换程序转化为:
原始语料 [参与/v, [北京/ns 电影/n 学院/nis]/nt, 和/cc, [美国/nsf 辛普森/nr 公司/nis]/nt, 的/ude1, 活动/vn, ,/w, 由/p, [交通/n 银行/nis 北京/ns 分行/n]/nt, 与/cc, 麦当劳/nt, 赞助/v, ,/w, [巴/b 政府/nis]/nt, 和/cc, [中共中央/nt 顾问/nnt 委员会/nis]/nt, 指导/vn, ,/w,
[中央/n 电视台/nis]/nt, 报道/v]
添加首尾 [始##始/S, 参与/v, [北京/ns 电影/n 学院/nis]/nt, 和/cc, [美国/nsf 辛普森/nr 公司/nis]/nt, 的/ude1, 活动/vn, ,/w, 由/p, [交通/n 银行/nis 北京/ns 分行/n]/nt, 与/cc, 麦当劳/nt, 赞助/v, ,/w, [巴/b 政府/nis]/nt, 和/cc, [中共中央/nt 顾问/nnt 委员会/nis]/nt, 指导/vn, ,/w, [中央/n 电视台/nis]/nt, 报道/v, 末##末/Z]
标注上文 [始##始/S, 参与/A, [北京/ns 电影/n 学院/nis]/nt, 和/A, [美国/nsf 辛普森/nr 公司/nis]/nt, 的/ude1, 活动/vn, ,/w, 由/A, [交通/n 银行/nis 北京/ns 分行/n]/nt, 与/A, 麦当劳/nt, 赞助/v, ,/A, [巴/b 政府/nis]/nt, 和/A, [中共中央/nt 顾问/nnt 委员会/nis]/nt, 指导/vn, ,/A, [中央/n 电视台/nis]/nt, 报道/v, 末##末/Z]
标注下文 [始##始/S, 参与/A, [北京/ns 电影/n 学院/nis]/nt, 和/B, [美国/nsf 辛普森/nr 公司/nis]/nt, 的/B, 活动/vn, ,/w, 由/A, [交通/n 银行/nis 北京/ns 分行/n]/nt, 与/B, 麦当劳/nt, 赞助/B, ,/A, [巴/b 政府/nis]/nt, 和/B, [中共中央/nt 顾问/nnt 委员会/nis]/nt, 指导/B, ,/A, [中央/n 电视台/nis]/nt, 报道/B, 末##末/Z]
标注中间 [始##始/S, 参与/A, [北京/ns 电影/n 学院/nis]/nt, 和/X, [美国/nsf 辛普森/nr 公司/nis]/nt, 的/B, 活动/vn, ,/w, 由/A, [交通/n 银行/nis 北京/ns 分行/n]/nt, 与/X, 麦当劳/nt, 赞助/B, ,/A, [巴/b 政府/nis]/nt, 和/X, [中共中央/nt 顾问/nnt 委员会/nis]/nt, 指导/B, ,/A, [中央/n 电视台/nis]/nt, 报道/B, 末##末/Z]
处理整个 [始##始/S, 参与/A, 未##地/G, 电影/C, 学院/D, 和/X, 未##地/G, 未##人/F, 公司/D, 的/B, 活动/Z, ,/Z, 由/A, 交通/C, 银行/D, 未##地/G, 分行/D, 与/X, 麦当劳/K, 赞助/B, ,/A, 巴/J, 政府/D, 和/X, 未##团/K, 顾问/C, 委员会/D, 指导/B, ,/A, 中央/C, 电视台/D, 报道/B, 末##末/Z]
统计词频
在对所有熟语料句子执行自动标注后,即可统计每一个非Z词语的各角色词频,得到一个角色词典:公司 D 4621 A 24 B 24
公司总部 B 1
公司治理 B 2
公司股票 B 1
公告 B 15 X 1
公告栏 B 2
公园 C 9
公安 C 728 A 19 B 5
公安分局 A 18
公安厅 D 226 A 4
公安处 D 183
公安学 B 4
公安局 D 2251 A 5
公安机关 B 10
……
统计转移矩阵
转移矩阵指的是从一个角色标签转移到另一个角色的频次,利用它和角色词频可以计算出HMM中的初始概率、转移概率、发射概率,进而完成求解。关于维特比算法和实现请参考《通用维特比算法的Java实现》。
这里对人民日报2014切分语料训练出如下转移矩阵:
识别
例子以“济南杨铭宇餐饮管理有限公司是由杨先生创办的餐饮企业”为例,不进行机构名识别时,会得出下列输出:
[济南/ns, 杨铭宇/nr, 餐饮/n, 管理/vn, 有限公司/nis, 是/vshi, 由/p, 杨先生/nr, 创办/v, 的/ude1, 餐饮/n, 企业/n]
上例中该公司的各个成分被拆散,无法组成完整的机构名
角色标注
地名角色观察:[ S 1162194 ][济南 G 83472 B 1200 A 470 D 84 X 4 ][杨铭宇 F 4309 B 769 A 266 D 254 X 6 ][餐饮 C 58 B 12 ][管理 C 706 B 70 A 5 ][有限公司 D 2861 A 1 B 1 ][是 A 2340 B 353 X 20 P 2 ][由 A 1579 B 16 X 11 ][杨先生 F 4309 B 769 A 266 D 254 X 6 ][创办 A 20 B 5 ][的 B 7092A 4185 X 20 ][餐饮 C 58 B 12 ][企业 C 86 A 42 B 11 X 6 ][ B 710 ]
地名角色标注:[ /S ,济南/G ,杨铭宇/F ,餐饮/C ,管理/C ,有限公司/D ,是/B ,由/A ,杨先生/F ,创办/A ,的/B ,餐饮/C ,企业/C , /B]
模式匹配
利用Aho-Corasick算法模式匹配如下模式串:CCCD
PPD
PPDCD
PPFCCD
PPFCD
……
事实上,全部的模式串非常多:
nt.pattern.txt
得到如下机构名:
识别出机构名:济南杨铭宇餐饮管理有限公司 GFCCD
第二层隐马模型细分
其实这应该算是第四层隐马模型,粗分用到一次,因为地名识别中也用到了一次HMM,细分又用到一次,细分的输出是这次的输入。这次细分之后得出最终的结果:[济南杨铭宇餐饮管理有限公司/nt, 是/vshi, 由/p, 杨先生/nr, 创办/v, 的/ude1, 餐饮/n, 企业/n]
总结
多层HMM模型可以在消耗性能的前提下提高精准度,识别命名实体。目前人民日报语料中有不少错误,并且主要集中在政府机构,为了补充公司等机构,我找到了一个公司名词典,切分后得到一个伪熟语料库:
[北京/ns 华安/ns 通达/v 科技/n 有限公司/nis]/ntc
[北京/ns 京文/nz 联发/nz 教育/vn 文化/n 有限公司/nis]/ntc
[北京东方/nz 商机/n 喷码/nz 技术/n 有限公司/nis]/ntc
[北京/ns 海信/nz 箱包/n 发展/vn 有限公司/nis]/ntc
[北京/ns 恒正/nr 金建/ns 仪器/n 有限公司/nis]/ntc
[北京/ns 海腾威/nr 商贸/n 中心/nis]/ntc
……
将前100条发布出来作为示例:
公司名切分语料.txt
然后执行上述自动标注,补充到此模型词典中,使得HanLP能够同时支持政商二用。
转载自:http://www.hankcs.com/nlp/ner/place-name-recognition-model-of-the-stacked-hmm-viterbi-role-labeling.html
相关文章推荐
- 【命名实体识别】HMM-Viterbi角色标注中国人名识别
- Hanlp实战HMM-Viterbi角色标注中国人名识别
- nlp 总结 分词,词义消歧,词性标注,命名体识别,依存句法分析,语义角色标注
- 实战HMM-Viterbi角色标注地名识别
- 学习笔记CB008:词义消歧、有监督、无监督、语义角色标注、信息检索、TF-IDF、隐含语义索引模型
- 结巴分词3--基于汉字成词能力的HMM模型识别未登录词
- 转载 基于HMM模型的词性标注
- HMM模型用在词性标注、分词
- nlp-形式语言与自动机-ch07-自动分词、命名实体识别与词性标注
- 标注偏置问题(Label Bias Problem)和HMM、MEMM、CRF模型比较<转>
- 建立一个与词性标注问题相关联的HMM模型
- 一文读懂 HMM 模型和 Viterbi 算法
- R+NLP︱text2vec包——BOW词袋模型做监督式情感标注案例(二,情感标注)
- python实现的基于hmm模型的词性标注系统
- OpenNLP进行中文命名实体识别(下:载入模型识别实体)
- OpenNLP进行中文命名实体识别(下:载入模型识别实体)
- 标注偏置问题(Label Bias Problem)和HMM、MEMM、CRF模型比较
- 标注偏置问题(Label Bias Problem)和HMM、MEMM、CRF模型比较
- HMM、MEMM、CRF模型比较和标注偏置问题(Label Bias Problem)
- opencv目标识别之HMM 模型(隐马尔可夫模型)