Hanlp实战HMM-Viterbi角色标注中国人名识别

摘要:
开源项目本文的代码已集成到HanLP开源中:https://github.com/hankcs/HanLP建议仔细阅读论文《基于角色标记的中文姓名自动识别研究》。doc,详细描述了算法原理和实现。Hankcs在本文的基础上进行了改进,主要步骤如下:1.自动为习语数据库添加标签,并将原始标签转换为角色标签。角色标记有几种类型:hankcs在此基础上扩展S,表示句子的开头。这篇文章转载自汉克的博客!

这几天写完了人名识别模块,与分词放到一起形成了两层隐马模型。虽然在算法或模型上没有什么新意,但是胜在训练语料比较新,对质量把关比较严,实测效果很满意。比如这句真实的新闻“签约仪式前,秦光荣、李纪恒、仇和等一同会见了参加签约的企业家。”,分词结果:[签约/v, 仪式/n, /f, /w, 秦光荣/nr, /w, 李纪恒/nr, /w, 仇和/nr, /u, 一同/d, 会见/v, /ul, 参加/v, 签约/v, /uj, 企业家/n, /w],三个人名“秦光荣”“李纪恒”“仇和”一个不漏。一些比较变态的例子也能从容应对,比如下面:

 Hanlp实战HMM-Viterbi角色标注中国人名识别第1张

这是hankcs将自己的分词与ansj作比较得出的结果,由于自己可以随时调整算法,所以主场占了很大便宜。但是第一句绝对没有放水,说实话能识别出“仇和”这么冷僻的名字着实让人惊喜了一下。

 Hanlp实战HMM-Viterbi角色标注中国人名识别第2张

开源项目

本文代码已集成到HanLP中开源:https://github.com/hankcs/HanLP 

原理

推荐仔细阅读《基于角色标注的中国人名自动识别研究.doc》这篇论文,该论文详细地描述了算法原理和实现。从语料库的整理、标注到最后的模式匹配都讲得清清楚楚。hankcs在这篇论文的基础上做了改进,主要步骤总结如下:

1对熟语料库自动标注,将原来的标注转化为角色标注。角色标注一共有如下几种:

 Hanlp实战HMM-Viterbi角色标注中国人名识别第3张

hankcs在此基础上拓展了一个S,代表句子的开始。

2、统计标签的出现频次,标签的转移矩阵。

3、对粗分结果角色标注,模式匹配。

hankcs对论文中的几个模式串做了拓充,并且采用了AC模式匹配算法。

体会

论文中将三字名称拆分为BCD,实测在2-gram模型下,C很容易被识别为E,导致人名缺一半。

人民日报2014中的人名并不能覆盖所有常用字,所以hankcs去别的地方找了个人名库,拆成BCDBE补充了进去。

人民日报2014语料库中有很多错误,比如

/vf 年老/vi 张中秋/nr /vf /w 泡茶/vi /w /w 送礼/vi 遭到/v /ule 拒绝/v /w 老张/nz 担心/v 金额/n 不够/a

中秋很明显不是人名的组成部分,这个必须手工剔除。

“中秋安全”会识别出“中 秋安全”来,因为2-gram词典中没有“中秋@安全”这种接续,而有“中@##人”这种接续。初步的解决方法是手工往2-gram词典里面加一条“中秋@安全”。这反映了这种方法的局限性,另一方面也说明词典的重要性。

 Hanlp实战HMM-Viterbi角色标注中国人名识别第4张

文章转载自hankcs的博客!

免责声明:文章转载自《Hanlp实战HMM-Viterbi角色标注中国人名识别》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Spring Boot之创建Web项目XSS防御策略下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

从零开始制作Galgame——我的Ren'py学习笔记(一)

然后点击“启动工程”点击“开始游戏”效果应该是这样的好了,现在你就制作出了属于自己的第一个游戏角色在一般的Galgame中,不是所有话都是“旁白”说的,一个完整的游戏里面应该有主角那么,怎么在ren'py中定义角色呢我们把刚才的代码更改一下definel=Characterlabelstart:l"HelloWorld!...

【JVM】元空间详解 Metaspace

nocs。JpgNoKlassisMetaspaceNoKlassinMetaspaces专用于存储其他与klass相关的内容,如方法、常量池等。它可以由多个不连续的存储器组成。在元空间GC之后,还将调整阈值。默认情况下,MaxMetaspaceSize基本上是无限的,因为大多数元空间都是在本地内存中分配的,但它仍然受到本地内存大小的限制。为了防止元空间的无...

2022年可用QQ机器人框架

4.小李子机器人官网:https://xiaolz.cn评估:支持多个Q登录和论坛似乎是目前最活跃的。它支持许多api,可以满足许多需求。没有限制,但有很多错误。...

Google Drive 里的文件下载的方法

Google Drive不提供创建直接下载链接的选项,但您可以通过更改链接形式在本地保存共享内容。例如,通过Google Drive共享的文件链接是:https://drive.google.com/file/d/FILE_ID/edit?usp=sharing如果您将其更改为以下修改版本,然后通过浏览器打开,则将直接下载该文件:https://drive....

mongodb 占用内存及解决方法

解决方案是限制Swap的使用:[root@mongodb~]#Sysctl wvm。swap=0查看内存最常用的命令是空闲的:[root@mongodb~]#Free totalused freesharedbuff/cacheavailableEm:78250931925992443Swap:000当新手看到used列中的值太大而Free列中的数值太小时,...