允许个人做动漫网站吗,天津移动网站设计,wordpress模板文件是哪个,青岛济南网站制作http://www.hankcs.com/nlp/ner/place-names-to-identify-actual-hmm-viterbi-role-labeling.html 命名实体识别#xff08;Named Entity Recognition#xff09;也是自然语言处理中的一个难关#xff0c;特别是中文这样没有大小写等固定形态的语言。上次介绍过《实战HMM-Vi…http://www.hankcs.com/nlp/ner/place-names-to-identify-actual-hmm-viterbi-role-labeling.html 命名实体识别Named Entity Recognition也是自然语言处理中的一个难关特别是中文这样没有大小写等固定形态的语言。上次介绍过《实战HMM-Viterbi角色标注中国人名识别》这次基于类似的原理为HanLP实现中文地址地名NS的自动识别。 原理 训练 对熟语料自动角色标注统计单词的角色频次、角色的转移概率等训练出一个模型同时总结一些可用的模式串。 识别 根据上述模型利用HMM-Viterbi算法标注陌生文本的粗分结果利用Aho-Corasick算法模式匹配匹配出可能的地址将其送入第二层隐马尔可夫模型中。 实战 训练 自动角色标注 《基于层叠隐马尔可夫模型的中文命名实体识别.pdf》中使用如下地名识别角色 我在此基础上拓充了CDE分别为三字地名的三个字位H为中国地名的后缀G为整个地址这样一般最多可以识别6字地名CDE地名三字后缀比论文有所改进。 通过少量的代码即可自动对熟语料进行角色标注比如对于这一句人民日报2014切分语料中的句子 1 王先东/nr 来自/v 湖北/ns 荆门/ns /w 在/p 佛山市/ns [南海区/ns 大沥镇/ns]/nz 某/rz 物业公司/nis 做/v 保安/b 逐步处理得到 1 2 3 4 5 6 7 原始语料 [未##人/nr, 来自/v, 湖北/ns, 的/ude1, 荆门/ns, /w, 在/p, 乌鲁木齐市/ns, [南海区/ns 大沥镇/ns]/ns, 某/rz, 物业公司/nis, 做/v, 保安/b] 添加首尾 [始##始/S, 未##人/nr, 来自/v, 湖北/ns, 的/ude1, 荆门/ns, /w, 在/p, 乌鲁木齐市/ns, [南海区/ns 大沥镇/ns]/ns, 某/rz, 物业公司/nis, 做/v, 保安/b, 末##末/Z] 标注上文 [始##始/S, 未##人/nr, 来自/A, 湖北/ns, 的/A, 荆门/ns, /w, 在/A, 乌鲁木齐市/ns, [南海区/ns 大沥镇/ns]/ns, 某/rz, 物业公司/nis, 做/v, 保安/b, 末##末/Z] 标注下文 [始##始/S, 未##人/nr, 来自/A, 湖北/ns, 的/B, 荆门/ns, /B, 在/A, 乌鲁木齐市/ns, [南海区/ns 大沥镇/ns]/ns, 某/B, 物业公司/nis, 做/v, 保安/b, 末##末/Z] 标注中间 [始##始/S, 未##人/nr, 来自/A, 湖北/ns, 的/X, 荆门/ns, /B, 在/A, 乌鲁木齐市/ns, [南海区/ns 大沥镇/ns]/ns, 某/B, 物业公司/nis, 做/v, 保安/b, 末##末/Z] 拆分地名 [始##始/S, 未##人/nr, 来自/A, 湖北/ns, 的/X, 荆门/ns, /B, 在/A, 乌鲁木齐市/ns, 南海区/ns, 大沥镇/ns, 某/B, 物业公司/nis, 做/v, 保安/b, 末##末/Z] 处理整个 [始##始/S, 未##人/Z, 来自/A, 湖北/G, 的/X, 荆/C, 门/H, /B, 在/A, 乌鲁木齐/G, 市/H, 南/C, 海/D, 区/H, 大/C, 沥/D, 镇/H, 某/B, 物业公司/Z, 做/Z, 保安/Z, 末##末/Z] 统计词频 在对所有熟语料句子执行自动标注后即可统计每一个非Z词语的词频得到一个角色词典 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 位于 A 1660 X 93 B 33 位列 B 17 A 13 X 1 位居 B 25 A 14 X 1 位次 B 1 位置 B 5 A 1 低 B 9 低于 A 18 B 2 低产田 B 1 低价 B 1 低估 A 5 低保 B 3 低保户 B 3 低效 B 1 低温 B 3 低热值 B 1 低碳 B 27 低空 B 2 低调 B 5 低速 B 3 低阶煤 B 1 住 A 81 B 53 住友 B 1 住在 A 271 B 1 统计转移矩阵 转移矩阵指的是从一个角色标签转移到另一个角色的频次利用它和角色词频可以计算出HMM中的初始概率、转移概率、发射概率进而完成求解。关于维特比算法和实现请参考《通用维特比算法的Java实现》。 这里对人民日报2014切分语料训练出如下转移矩阵 识别 例子 以“南翔向宁夏固原市彭阳县红河镇黑牛沟村捐赠了挖掘机”为例不进行地名识别时会得出下列输出 1 [南翔/ns, 向/p, 宁夏/ns, 固原市/ns, 彭/nz, 阳/ag, 县/n, 红/a, 河镇/ns, 黑/a, 牛/n, 沟/n, 村/n, 捐赠/v, 了/ule, 挖掘机/n] 上例中“宁夏”“固原市”等属于常用地名因此被收录到核心词典中此处表现出正确的分词结果。但是像“彭阳县”“红河镇”“黑牛沟村”等地名属于非常小的地方没有被词典收录自然也没法得出正确的分词结果。 角色标注 1 2 地名角色观察[ Z 41339414 ][南翔 H 1000 ][向 A 1076 B 115 X 70 C 49 D 5 ][宁夏 H 1000 ][固原市 H 1000 ][彭 C 85 ][阳 D 1255 C 81 B 1 ][县 H 6878 B 25 A 23 D 19 X 3 C 2 ][红 C 1000 B 46 A 3 ][河镇 H 1000 ][黑 C 960 B 25 ][牛 D 24 C 8 B 7 ][沟 H 107 D 90 E 36 C 27 B 14 A 3 ][村 H 4467 D 68 B 28 A 8 C 3 ][捐赠 B 10 A 1 ][了 A 4115 B 97 ][挖掘机 B 1 ][ Z 41339414 ] 地名角色标注[ /Z ,南翔/H ,向/B ,宁夏/H ,固原市/H ,彭/C ,阳/D ,县/H ,红/C ,河镇/H ,黑/C ,牛/D ,沟/E ,村/H ,捐赠/B ,了/A ,挖掘机/B , /Z] 模式匹配 利用Aho-Corasick算法模式匹配如下模式串 1 2 3 4 CH CDH CDEH GH 得到如下地名 1 2 3 识别出地名彭阳县 CDH 识别出地名红河镇 CH 识别出地名黑牛沟村 CDEH 第二层隐马模型细分 其实这应该算是第三层隐马模型因为地名识别中也用到了一次HMM并且那次的输出是这次的输入。细分之后得出最终的结果 1 [南翔/ns, 向/p, 宁夏/ns, 固原市/ns, 彭阳县/ns, 红河镇/ns, 黑牛沟村/ns, 捐赠/v, 了/ule, 挖掘机/n] 总结 HMM模型可以解决很多问题将多个HMM模型层叠起来可以发挥出更加精准的效果。 不过2元文法依然会有误命中的情况事实上一些高频地名已经收录到核心词典和用户自定义词典中。所以HanLP的默认配置关闭了地名识别仅仅在一些极端情况下专门提取县级地址交由用户打开。 目录 原理训练识别实战训练自动角色标注统计词频统计转移矩阵识别角色标注模式匹配第二层隐马模型细分总结 转载请注明码农场 » 实战HMM-Viterbi角色标注地名识别转载于:https://www.cnblogs.com/DjangoBlog/p/4224606.html