python中文人名识别(使用hanlp,LTP,LAC)
中文人名识别属于命名实体识别的范畴,解决问题的思路很多,但是在实际的应用过程中各种库做的参差不齐,下面是3个开源库的使用方法与效果展示:
首先是hanlp
hanlp github主页:https://github.com/hankcs/pyhanlp
然后是LTP
ltp github主页:https://github.com/HIT-SCIR/ltp
ltp 文档主页:https://ltp.readthedocs.io/zh_CN/latest/
最后使用LAC
LAC github主页:https://github.com/baidu/lac
在我的项目中,需要做的是在一个几乎没有逻辑可言的句子里识别人名,因此命名实体识别的效果很差,使用词法分析来提取人名,然后依据业务逻辑删减。因此越依赖上下文的方法,越会有问题,整体的效果是:百度智能云词法分析
>LTP
>LAC
>阿里云自然语言处理词法分析
>hanlp
其中:
LTP
中规中矩LAC
提取的量最少,但是只要提取出来,几乎是正确的hanlp
提取出来的量是最多的,但是一多半不是人名。
(这和下面的示例结果相反,很神奇)
其他中文的工具类库:
NLPIR:https://github.com/NLPIR-team/NLPIR
FoolNLTK:https://github.com/rockyzhengwu/FoolNLTK
THULAC:https://github.com/thunlp/THULAC-Python
示例
from LAC import LACdef hanlp_username(sentences: str) -> list:from pyhanlp import HanLPsegment = HanLP.newSegment().enableNameRecognize(True)seg_words = segment.seg(sentences)user_list = []for value in seg_words:split_words = str(value).split('/') # check //mword, tag = split_words[0], split_words[-1]if tag == 'nr':user_list.append(word)return user_listdef ltp_username(sentences: str) -> list:from ltp import LTPltp = LTP() # 默认加载 Small 模型,下载的路径是:~/.cache/torch/ltpseg, hidden = ltp.seg([sentences]) # 分词nh_user_list = []pos_index_values = ltp.pos(hidden)# seg 是 list to list 的格式for index, seg_i in enumerate(seg):pos_values = pos_index_values[index]for _index, _pos in enumerate(pos_values):if _pos == "nh":nh_user_list.append(seg_i[_index])return nh_user_listdef lac_username(sentences: str) -> list:# 装载LAC模型user_name_list = []lac = LAC(mode="lac")lac_result = lac.run(sentences)for index, lac_label in enumerate(lac_result[1]):if lac_label == "PER":user_name_list.append(lac_result[0][index])return user_name_listif __name__ == '__main__':text = "周树人(1881年9月25日-1936年10月19日),原名周樟寿,字豫山、豫亭,后改字豫才,以笔名鲁迅聞名於世,浙江紹興人"hanlp_user = hanlp_username(text)lac_user = lac_username(text)ltp_user = ltp_username(text)print("hanlp:", hanlp_user)print("LAC:", lac_user)print("LTP:", ltp_user)
结果:
hanlp: ['周樟寿', '鲁迅']
LAC: ['周树人', '周樟寿', '鲁迅']
LTP: ['周树人', '周樟寿', '豫才', '鲁迅']
python中文人名识别(使用hanlp,LTP,LAC)相关推荐
- python识别中文人名_中文人名识别
中文姓名的构成规律 中文姓名一般由二字或三字组成,第一字为姓氏字(复姓为前两字),其后的一到两个汉字为名用字.统计表明,中文姓名在用字上也有一定规律:一方面某些字频频出现在姓名中,如在姓氏用字中,虽然 ...
- 基于深度学习和指代消解的中文人名识别
摘要 [目的]命名实体识别是自然语言处理领域的一项基本任务,实体包括人名.地名和组织名等,与其他实体相比,人名与职务.职务变更及人称代词有关.人名的实体识别中,人名语料的残缺及人称指代不明等问题,成为 ...
- 基于分布式的短文本命题实体识别之----人名识别(python实现)
目前对中文分词精度影响最大的主要是两方面:未登录词的识别和歧义切分. 据统计:未登录词中中文姓人名在文本中一般只占2%左右,但这其中高达50%以上的人名会产生切分错误.在所有的分词错误中,与人名有关的 ...
- jieba识别中文人名实战记录及心得
一,介绍 官方介绍:"结巴"中文分词:做最好的 Python 中文分词组件 我理解的官方的目标是做最好的python中文分词组件,但是在网上一搜,很多文章直接说成了是最好的中文分词 ...
- 自然语言识别python_自然语言处理工具python调用hanlp中文实体识别
Hanlp作为一款重要的中文分词工具,在GitHub的用户量已经非常之高,应该可以看得出来大家对于hanlp这款分词工具还是很认可的.本篇继续分享一篇关于hanlp的使用实例即Python调用hanl ...
- HanLP中人名识别分析
在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: 名字识别的问题 #387 机构名识别错误 关于层叠HMM中文实体识别的 ...
- stanfordcorenlp识别中文人名实战记录及心得
前言: 一直在找一个能够精确识别中文人名的自然语言处理工具包,期间也找到了stanfordcorenlp, 并且经过在网上的大量摸坑探索之后,还是成功使用上了stanfordcorenlp,但是经过后 ...
- HanLP中的人名识别分析详解
在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: u名字识别的问题 #387 u机构名识别错误 u关于层叠HMM中文实体 ...
- HanLP中人名识别分析详解
在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: ·名字识别的问题 #387 ·机构名识别错误 ·关于层叠HMM中文实体 ...
最新文章
- 大盘过4000,注意风险~
- opencv python全屏显示、置窗口大小和位置
- 【中级软考】段页式存储是什么?
- Android studio | Android studio下APP目录工程结构详解
- [转载] Scanner和bufferreader读取控制台字符的区别
- F - 你这是第一次让我看到落泪了呢 POJ - 3661Running 区间DP
- 将视图转为image_OpenShift 4.3 之 直接将Web应用当成Serverless运行
- cameraman matlab 自带图,[转载]【MATLAB】MATLAB的自带数据及可生成数据的函数——图片形式...
- php error file_get_contents()
- jboss下载和安装
- 基于麻雀搜索算法优化深度置信网络的分类方法(SSA-DBN)
- Win10小键盘不能使用的解决办法
- ×××有哪些激光领域杰出的院士?
- 2022-07-04-5万字长文说清楚到底什么是“车规级”
- IDM下载出现503错误
- 报错:Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.
- Python判断节假日 chinese_calendar
- 一个用户只能登录一次
- 【网络教程】群晖安装甜糖最新教程,手把手教您在Docker中安装官方甜糖
- 特斯拉是l3还是l2_特斯拉是l3还是l2
热门文章
- python3 mysql库_Python3.7 MySQL 数据库连接
- python标注工具_Python labelImg 图像标注工具安装及使用教程windows版(亲测有效)
- deep learning 深度学习中英文版下载地址
- CPU高速缓存SRAM命中问题的总结与实验
- vue项目原理分析-2:路由
- JS 异步发展流程(回调函数=Async/await)
- 5.1 vim介绍 5.2 vim颜色显示和移动光标 5.3 vim一般模式下移动光标 5.4 vim一般模式下复制、剪切和粘贴...
- cordova开发日记04 常用插件与使用(更新2016-05-19)
- Cisco路由器安全配置必用的10条命令
- anaconda moviepy_Anaconda的安装和Jupyter Notebook使用