HanLP收词特别是实体比较多,因此特别容易造成误识别。下边举几个地名误识别的例子,需要指出的是,后边的机构名识别也以地名识别为基础,因此,如果地名识别不准确,也会导致机构名识别不准确。
类型1 数字+地名
[1] 暗访哈尔滨网约车:下10单来7辆“黑车” 1辆套牌
[2] 房天下每日成交5月12日海宁商品房销售备案43套
<!--[if !supportLists]-->[3] <!--[endif]-->广西近视手术专家-黄明汉院长9月9日百色见面会
类型2 前词+地名首词成词或地名尾词+后词成词
[1] 西安国企4000元工资相当于私企多少钱?
[2] 七月份从包头到山东,十五天左右,有自驾游路线推荐吗?
[3] 最受考研人欢迎的城市,有你报考高校所在的城市吗?
类型3 地名本身成词
[1] 滴滴司机接跨省天价订单 乘客半路改道至今未付款
[2] 上联:山水不曾随我老,如何对下联?
[3] 上联:柳着金妆闲钓水,如何对下联?
Badcase分析及修正
下边介绍一下排查误判原因以及修正的方法
首先需要明确以下几点注意事项
1.实体识别受分词精度影响。
2.实体识别同样涉及消歧的问题。
3.HanLP收录了一些不常见的实体词,会造成错误率升高。
4.HanLP基于隐马的命名实体识召回率没有特别要求的话,不需要再去训练。
这里我们以下边这个badcase的分析过程为例来说明
[5] 上联:山水不曾随我老,如何对下联?
打开提示模式 HanLP.Config.enableDebug()
运行人名识别代码
# HanLP命名实体识别
def hanlp_ner(text, ner_type):
global segment
ner_li = []
for term in segment.seg(text):
if str(term.nature) == ner_type:
ner_li.append(str(term.word))
return ner_li
这里ner_type为你要识别的实体类型,如果是人名则ner_type='nr',地名ner_type='ns',机构名ner_type='nt'。text为要抽取实体的文本。
识别结果,这里为了清晰,只截取了部分输出。
粗分结果[上联/n, :/w, 山水/n, 不/d, 曾随/ns, 我/rr, 老/a, ,/w, 如何/ryv, 对/p, 下联/n, ?/w]
地名角色观察:[ S 1163565 ][上联 Z 20211628 ][: A 2701 B 439 X 11 ][山水 B 6 A 1 ][不 B 214 A 3 C 3 ][曾随 G 1 H 1 ]
[我 A 47 B 26 ][老 C 274 A 75 B 66 D 2 X 2 ][, A 40525 B 10497 X 418 ][如何 B 44 ][对 A 2896 B 454 X 215 ][下联 Z 20211628 ][? B 82 ][ B 1322 ]
地名角色标注:[ /S ,上联/Z ,:/B ,山水/A ,不/C ,曾随/H ,我/B ,老/B ,,/A ,如何/B ,对/A ,下联/Z ,?/B , /S]
识别出地名:不曾随 CH
hanlp_ns ['不曾随']
显然,曾随被认为是地名了,而且粗分结果表示的是未经地名识别模块分词和词性标注的结果,显然这是由于词表导致的。由于没有经过地名识别模块,所以不需要去地名的发射词表ns.txt中去找词语,只需要看核心词表CoreNatureDictionary.txt中去找
显然,在核心词表中“曾随“被标记为一个地名,把”曾随“从词表中删除掉,并删除词表文件CoreNatureDictionary.txt.bin,之后再次运行程序得到下边的输出结果
hanlp_ns []
从这个实例,我们也可以看出一些不常见地名如果做成地名词表,就有导致错误识别实体。因此,我们应该保留一份评测语料,每当修改了实体词表后,需要跑一下测试语料查看准确率,如果降低的太多,则表示这样加进来是不可行的。同时填加的实体名也有可能会造成分词错误。
下边说明一下HanLP中有关实体的词表文件名
1.CoreNatureDictionary.mini.txt
2.CoreNatureDictionary.txt
3.CustomDictionary.txt
4.机构名词典.txt
5.全国地名大全.txt
6.人名词典.txt
7.上海地名.txt
8.现代汉语补充词库.txt
9.ns.txt
10.nr.txt
11.nt.txt
当然这里列出的是通常最有可能导致误识别的词表,如果这些词表都没有找到,还需要在HanLP其他词典文件中寻找。
希望今天的内容对使用HanLP并对隐马情有独钟的小伙伴有帮助。这两天的一点小体会是,实体识别其实跟分词是密不可分的,两者都有共同的处理难点,比如词义消歧(边界的确定),词法分析其实才是真正的NLP的内容之一,而词法分析跟机器学习其实没有太大关系。上边的badcase解决方法不是根本方法,直接去除掉某些词,会导致一些生僻实体识别不出来。我们是否可以考虑左右信息熵之类的测度函数来解决这种词是否需要拆开与其前后构成词。针对词法分析推荐大家使用深度学习的方法,毕竟了解这些方法也是必须的,虽然你可以在实际种不用,但是不代表你可以偷懒而不去学习。
相关推荐
elasticsearch是使用比较广泛的分布式搜索引擎,es提供了一个的单字分词工具,还有一个分词插件ik使用比较广泛,hanlp是一个自然语言处理包,能更好的根据上下文的语义,人名,地名,组织机构名等来切分词
hanlp,hankcs,支持中文分词(N-最短路分词、CRF分词、索引分词、用户自定义词调、词性标注),命名实体识别(中国人民、音译人民、日本人民,地名,实体机构名识别),关键词提取,自动摘要,短语提取,拼音转换,...
Java语言实现从网络片段中提取省份和城市,用到Hanlp分词和高德地图接口。
elasticsearch是使用比较广泛的分布式搜索引擎,es提供了一个的单字分词工具,还有一个分词插件ik使用比较广泛,hanlp是一个自然语言处理包,能更好的根据上下文的语义,人名,地名,组织机构名等来切分词
地名识别 实体机构名识别 关键词提取TextRank关键词提取 自动摘要TextRank自动摘要 短语提取基于互信息和左右信息熵的短语提取 拼音转换 多音字 声母 韵母 声调 简繁转换 繁体中文分词 简繁分歧词(简体、繁体、台湾...
地名识别 实体机构名识别 关键词提取 TextRank关键词提取 自动摘要 TextRank自动摘要 短语提取 基于互信息和左右信息熵的短语提取 拼音转换 多音字 声母 韵母 声调 简繁转换 繁体中文分词 简繁分歧词 文本推荐 语义...
地名识别程序 地名识别程序 地名识别程序 地名识别程序 地名识别程序
地名识别方法算法介绍。 在网络信息处理中有着较为广泛的应用
地名识别 实体机构名识别 关键词提取 TextRank关键词提取 自动摘要 TextRank自动摘要 短语提取 基于互信息和左右信息熵的短语提取 拼音转换 多音字 声母 韵母 声调 简繁转换 繁体中文分词 简繁分歧词(简体、繁体、...
地名识别 实体机构名识别 关键词提取 TextRank关键词提取 自动摘要 TextRank自动摘要 短语提取 基于互信息和左右信息熵的短语提取 拼音转换 多音字 声母 韵母 声调 简繁转换 繁体中文分词 简繁分歧词(简体、繁体、...
20170421-地名、专题、场景收藏-刘小标1
大数据-算法-地名本体及其在地理空间数据组织中的应用研究.pdf
支持中文分词(N-最短路分词、CRF分词、索引分词、用户自定义词典、词性标注),命名实体识别(中国人名、音译人名、日本人名、地名、实体机构名识别),关键词提取,自动摘要,短语提取,拼音转换,简繁转换,文本...
PPR建模不需要对数据结构作任何假定,而只通过直接审视和分析数据进行建模,因此,该方法能充分地发掘数据中存在的信息,建立的模型符合客观实际,精度较高。经过实测数据验证,该算法用于车辆跟驰模型的研究是可行...
中国人名识别,音译人名识别,日本人名识别,地名识别,实体机构名识别 基于线性模型的命名实体识别(精度高) 感知机命名实体识别,CRF命名实体识别 关键词提取 TextRank关键词提取 自动摘要 TextRank自动摘要 短语...
elasticsearch是使用比较广泛的分布式搜索引擎,es提供了一个的单字分词工具,还有一个分词插件ik使用比较广泛,hanlp是一个自然语言处理包,能更好的根据上下文的语义,人名,地名,组织机构名等来切分词
本资源基于C++实现了非基于语料的地名基本识别
【资源说明】 1、该资源内项目代码都是经过测试运行成功,功能正常的情况下才上传的,请...用序列标注方法将文本中的人名、地名和组织机构名识别出来(python源码+项目说明)(使用BiLSTM-CRF模型,pytorch框架).zip
本文主要对中文地名识别进行研究,实现了条件随机域(Conditional Random Fields, CRF)与支持向量机(Support Vector Machine, SVM)相结合中文地名识别系统,并重点对条件随机域与规则相结合的中文地名识别进行了研究。
基于深度学习的中文地名识别研究.pdf