【文智背后的奥秘】系列篇——基于CRF的人名识别
版权声明:本文由文智原创文章,转载请注明出处:
文章原文链接:https://www.qcloud.com/community/article/133
来源:腾云阁 https://www.qcloud.com/community
一.命名实体识别
命名实体识别的主要任务就是从输入文本中把含有特定意义的词或者词组挑出来。命名实体根据其特点可以分为两大类,一类是可以根据构词法规则及上下文语境识别出来的,比如人名、地名、机构名;另外一类是可以穷举的垂直类实体,比如影视名,小说名,游戏名等。
命名实体识别是自然语言处理领域的基础任务,对很多应用都有十分大的作用,比如信息检索,文本摘要,信息抽取,文本聚类分类等。拿信息检索来举例,命名实体识别的结果可以在检索端生成完整索引,在query端做整体下发,这样既可以提高检索效率,又可以降低检索噪音,提高相关性。
二.人名识别
人名识别是命名实体识别中比较典型的一类问题,目前业界主要采用的方法是基于统计的。我们可以把人名识别问题看成是一个序列标注的问题,即根据观察序列预测最优隐含状态序列。
我们把标记定义为:姓用字 B,名中字用字I,名尾字用字E,其他用字O,那么下图的例子中,人名识别的问题可以转化为在已知输入文本“去看谭咏麟演出”,找到一条最大概率的标注序列,即“OOBIEOO”。
求解序列标注的模型有很多,这里我们采用了条件随机场(CRF), 主要是因为他可以任意选择特征,而不像HMM有严格的独立性假设,并且CRF是将所有特征进行全局归一化,最终得到全局最优解。
对于统计的方法来说,最主要的问题就是特征选择与语料获取的问题,下面就这两个问题展开介绍我们的做法。
三.特征选择
我们的特征选择主要分为两大类,一类是基本特征:主要有基于构词法的特征,和基于上下文语言环境的特征。
去看陈奕迅演出 陈学友
去看张学友演出 陈德华
去看刘德华演出 张奕迅
去看谭咏麟演出 刘学友
构词法特征:上面加粗字体部分就是构词法的特征,我们从已有语料中知道这四个都是人名,于是这些人名用字的交叉组合也很有可能也是人名。
去看邓紫棋演出
去看汪苏泷演出
上下文特征:还是上面的例子,黑色字体部分就可以看做是上下文特征,即在“去看^演出”这样的上下文中,知道^部分很大可能是人名。
另外一类主要的特征是泛化特征,之所以添加这类特征主要是因为我们实验发现,仅有基础特征模型的召回是不够的,需要一些泛化的东西来增加召回。
于是我们添加了一个是否为姓名常用字的特征,这个特征可以解决当该名字没有在语料中出现过的时候,也可以根据他的用字特点把新人名识别出来。
比如语料里面有张学友,也有刘德华, 但是没有张学华,于是W(S华 == E, C-2-1 == 张学) = 0, 但是 张,学 作为姓名常用字是有的,那么 W(S华 == E, C-2-1 == 11) > 0 , 这样就增加了这个人名被识别到的概率。
四.语料获取
有监督的学习方法最大的问题就是语料,如何能够获取到又多又准的语料是老大难的问题。现在大部分人都是利用已有标注的熟语料或者人工标注的方法去获取,人名日报是一份比较权威的熟语料,但是我们发现他量小,年份久远,与我们的应用场景网络语料的差距也很大。人工标注语料的成本是很大的,时间长,速度慢,数量小。于是我们想到了一种boosting的语料自动获取方法。
Boosting的方法主要思想就是先用n个基分类器,然后把他们进行加权融合,产生一个最后的结果分类器,在这n个基分类器中,每个单个的分类器的识别率不一定很高,但他们联合后的结果有很高的识别率,这样便提高了该弱分类算法的识别率。
这里我们也是采用了类似的思想,将多种人名识别的结果做投票,认为越多的方法识别到的结果则越准确,我们把这种准确的语料补充到训练语料中去,优化我们的模型。这里我们使用了旧版人名识别结果、竞品人名识别结果、机器翻译的识别结果、及我们基础模型的识别结果来做投票。这四类中,旧版结果,竞品结果及我们的结果我想象都不需要再做介绍了,下面对利用机器翻译结果做人名识别简单介绍一下。
利用机器翻译的结果做人名识别的方法是这样的,我们发现中文人名翻译成英文之后 是有明显特征的,首先是两个大写开头的单词,另外这两个单词是中文字的拼音。那么我们利用中文串的中英翻译的结果及他的拼音串做比对,在满足着两个特征的时候,就是发现其中所包含的人名了。
五、结论
我们的模型经过多次特征及语料的调整,最终在开放集合上测试,最终准确率有96%,召回率有89%。下一步针对人名识别我们还会对语料做持续扩充,并且增加更精细化的特征,让识别效果进一步提升。
【文智背后的奥秘】系列篇——基于CRF的人名识别的更多相关文章
- 【文智背后的奥秘】系列篇——分布式爬虫之WebKit
版权声明:本文由文智原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/139 来源:腾云阁 https://www.qclou ...
- JavaScript系列-----对象基于哈希存储(<Key,Value>之Value篇) (3)
JavaScript系列-----Objectj基于哈希存储<Key,Value>之Value 1.问题提出 在JavaScript系列-----Object之基于Hash<Key, ...
- PoiDocxDemo【Android将表单数据生成Word文档的方案之二(基于Poi4.0.0),目前只能java生成】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 这个是<PoiDemo[Android将表单数据生成Word文档的方案之二(基于Poi4.0.0)]>的扩展,上一篇是根 ...
- 第二篇 基于.net搭建热插拔式web框架(沙箱的构建)
上周五写了一个实现原理篇,在评论中看到有朋友也遇到了我的问题,真的是有种他乡遇知己的感觉,整个系列我一定会坚持写完,并在最后把代码开源到git中.上一篇文章很多人看了以后,都表示不解,觉得不知道我到底 ...
- PoiDemo【Android将表单数据生成Word文档的方案之二(基于Poi4.0.0)】
版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 使用Poi实现android中根据模板文件生成Word文档的功能.这里的模板文件是doc文件.如果模板文件是docx文件的话,请阅读 ...
- Nacos系列:基于Nacos的配置中心
前言 在看正文之前,我想请你回顾一下自己待过的公司都是怎么管理配置的,我想应该会有以下几种方式: 1.硬编码 没有什么配置不配置的,直接写在代码里面,比如使用常量类 优势:对开发友好,开发清楚地知道代 ...
- 主题:实战WebService II: SOAP篇(基于php)
概述(SOAP和XML-PRC比较) 在Web服务发展的初期,XML格式化消息的第一个主要用途是,应用于XML-RPC协议,其中RPC代表远程过程调用.在XML远程过程调用 (XML-RPC)中,客户 ...
- 【目录】redis 系列篇
随笔分类 - redis 系列篇 redis 系列27 Cluster高可用 (2) 摘要: 一. ASK错误 集群上篇最后讲到,对于重新分片由redis-trib负责执行,关于该工具以后再介绍.在进 ...
- 【目录】asp.net core系列篇
随笔分类 - asp.net core系列篇 asp.net core系列 68 Filter管道过滤器 摘要: 一.概述 本篇详细了解一下asp.net core filters,filter叫&q ...
随机推荐
- win7 64位安装oracle10g客户端心得
用了整整两天时间才在64位Win7下装好了Oracle的开发环境(包括Oracle的客户端和第三方客户端工具),过程原来和32位类似,注意不能下载64位的安装包. 安装过程: 1.下载Oracle 1 ...
- sqlserver日期函数<转>
一.sql server日期时间函数Sql Server中的日期与时间函数 1. 当前系统日期.时间 select getdate() 2. dateadd 在向指定日期加上一段时间的基 ...
- Apache HttpComponents 文件上传例子
/* * ==================================================================== * * Licensed to the Apache ...
- socket编程基础-字节序/IP/PORT转换/域名
socket编程基础 网络IP操作函数 字符串的IP和32位的IP转换 #include <sys/socket.h> #inlcude <netinet/in.h> #inc ...
- Nginx实战系列之功能篇----后端节点健康检查(转)
公司前一段对业务线上的nginx做了整理,重点就是对nginx上负载均衡器的后端节点做健康检查.目前,nginx对后端节点健康检查的方式主要有3种,这里列出: 1.ngx_http_proxy_m ...
- Phalcon的MVC框架解析
1. mvc/simple从最简单的入手吧. 把一些能及时说明白的东西写在注释里了,需要扩展的知识列在下面. public/index.php <?php $loader = new \Phal ...
- SGU 120 Archipelago (简单几何)
120. Archipelago time limit per test: 0.25 sec. memory limit per test: 4096 KB Archipelago Ber-Isla ...
- R工具包
直到12月初在微软技术大会,看到我软的工程师演示R的使用,我就震惊了,然后最近在网上到处了解和爬一些R的资料,看着看着就入迷了,这就是个大宝库了,以前怎么没发现,看来还是太狭隘了.直到前几天我看到这个 ...
- 从my里调出数据插入到ms2008 骨架 php
<?php $server ="XEJMZWMDIXE9CIJ";//ms,服务器IP地址,如果是本地,可以写成localhost $uid =""; / ...
- 【转】MFC 之CEvent
event是用来同步不同线程的.一旦一个线程结束了自己对全局资源的使用,他通过调用SetEvent通知别人可以使用了.如果这个被删了,其他线程将被阻塞 当一个线程里调用了::WaitForSingle ...