hanlp自然语言处理包的人名识别代码解析
HanLP发射矩阵词典nr.txt中收录单字姓氏393个。袁义达在《中国的三大姓氏是如何统计出来的》文献中指出:当代中国100个常见姓氏中,集中了全国人口的87%,根据这一数据我们只保留nr.txt中的100个常见词语的姓氏角色,其他词语去掉其姓氏角色状态。过滤后,nr.txt中具有姓氏角色的单字共计97个。
列于下表:
丁 万 乔 于 任 何 余 侯 傅 冯 刘 卢 史 叶 吕 吴 周 唐 夏 姚
姜 孔 孙 孟 宋 尹 崔 常 康 廖 张 彭 徐 戴 方 易 曹 曾 朱 李
杜 杨 林 梁 武 段 毛 江 汤 汪 沈 潘 熊 王 田 白 石 秦 程 罗
胡 苏 范 萧 董 蒋 薛 袁 许 谢 谭 贺 贾 赖 赵 邓 邱 邵 邹 郑
郝 郭 金 钟 钱 阎 陆 陈 雷 韩 顾 马 高 魏 黄 黎 龚
实验效果
姓氏过滤前,各命名实体识别准确率
nr 33%
ns 83%
nt 43%
姓氏过滤后,各命名实体识别准确率
nr 36%
ns 83%
nt 81%
这里没有开层叠隐马预测机构名和地名,nt上升原因估计是由于很多不是人名的词语没被标为人名,那么nt的模式匹配规则匹配不上了,所以机构名准确率上来了。错误识别的人名,100个常用姓氏的不多,很多恐怕是HanLP里其他词表干预进来的。
隐马一般用于分词和词性标注是比较好的,为什么通常的序列标注方法也就是BIEO方法直接用到实体识别不合适呢。用词性标注为例,每一个词它所对应的词性标记子集是有限的,而这个子集相对于词性标记全集来说是小的。但是到了实体识别则不一定,拿人名来说,除了姓氏以外,名字词语部分可以填充的词语是任意的,也就是说任何词语都有可能出现在中间位置,此时发射矩阵中的某些词实际上就没有太大意义了,因为它可能等可能的由BIEO标记发出,而如果指利用四种标记之间的转移概率信息来确定最优的标记序列势必就影响效果。因此,我们通过引入角色标记,实际上这就引入了先验知识,比如某些字只能由姓氏标记产生,某些字一般情况都充当名字首字,某些字一般情况都充当名字末字,通过给这些不同情况下的字集按照其出现的位置的分布和其语法意义做角色定义,可以缩小每种角色标记可发出的词语集合,也就是每种词语(字)所对应的标记集的大小,相当于使发射概率分布不是均匀分布,那么预测的准确性肯定就得到提高了。
下边介绍一下HanLP人名识别的主要流程
1.使用使用匹配法求出各种分词路径用变量wordNetAll存储
2.用viterbi方法找到一条最优的分词路径,这里主要使用用户自定义词典以及核心词典,用序列变量vertexList存储。
3.角色观察,也就是根据发射概率矩阵列出vertexList中每个词语可能对应的角色标记。roleObserve(...)方法实现。
4.角色标注,利用viterbi方法求出最优角色标记序列。viterbiComputeSimply(...)方法实现。
5.对角色序列进行模式匹配得到人名。模式匹配定义在NRPattern类中。
在精度要求比较高且时间紧的情况下,最好的提高准确率的方法为,只保留常用姓氏,只保留最可能的2gram角色标记模式。在做人名识别时还有一个注意的点,如果你的预测语料和训练语料完全在文体上差别很大,或者说你就是在公开的训练语料上训练而不在预测语料上训练的话,基本上上下文信息是没有用处的,甚至有可能上下文信息会给实体边界标注带来干扰,我想任何机器学习包括深度学习,不管是文本分类领域还是实体识别领域都会有这种泛化能力的问题,这种问题恐怕通过算法是没法解决的,如果可以解决那么任何语种任何领域都可以使用一种模型,一劳永逸了。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
混合循环发电场输出电力预测
前言 机器学习很多时候在工业场景下也会有非常好的应用。本次实验,我们就会以一个综合循环发电厂的发电数据来展示机器学习是如何应用到工业生产的实际场景中的。 本实验数据采集自 UCI 机器学习数据集中的 混合发电厂数据。对于发电厂来说,风力发电的输出电力很大情况下决定了单位发电机能够生产的电能。因此,通过收集系统各个相关指标来预测最终的输出电力对于发电厂来说是非常有帮助的。有效的预测发电机的输出电力可以更好的评估安排电力生产计划,避免资源的浪费。 载入数据并进行数据探索 载入好数据集之后,里面是一个综合循环发电场的数据,一共有9568个样本数据。每个数据有5列,分别为:AT(温度), V(压力), AP(湿度), RH(压强), PE(输出电力)。下面是数据预览的截图: 然后为了找出对 PE 输出电力影响最大的因素,我们可以从左侧 组件-统计
- 下一篇
3D结构光能否决定未来行业发展新方向?
如果有人对你说“3D结构光”这个词,相信绝大多数人脑中都会产生一堆问号:这是个啥东西?但如果此时提醒你:iPhone X以及后来推出的XS等系列手机中的Face ID人脸识别系统就采用这项技术,相信你就会有一些概念了。目前这项技术的覆盖范围越来越广,比如日常所接触到的“刷脸支付”、“刷脸过安检”就是基于该技术打造的应用场景。 然而3D结构光技术背后的工作原理、可以应用在哪些场景以及究竟还有哪些优势,很多人仍然不太了解。现在我们就通过通俗易懂的方式来为大家来剖析解释,感兴趣的童鞋们可要认真听讲了哦! ● 2D人脸识别技术的局限性 想要彻底了解3D结构光这项技术,我们得从2D和3D的概念开始聊起。大家都知道,我们处在一个3D的世界中,对真实世界的感知是三维的。但受限于目前的拍摄和显示技术,我们在电视、显示器、手机等终端设备的屏幕中看到绝大部分图像和视频都是呈现2D平面,无法识别物理世界中的三维信息(如:尺寸、体积、距离等数据)。 如果用2D技术来实现“刷脸支付”,还会出现一系列的问题:比如在验证过程中需要做各种配合的动作(摇头、张嘴、读数、眨眼等),同时还必须正脸对着镜头;此外在光线复杂的...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Mario游戏-低调大师作品
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Red5直播服务器,属于Java语言的直播服务器
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS6,CentOS7官方镜像安装Oracle11G