中文人名识别属于命名实体识别的范畴,解决问题的思路很多,但是在实际的应用过程中各种库做的参差不齐,下面是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)相关推荐

  1. python识别中文人名_中文人名识别

    中文姓名的构成规律 中文姓名一般由二字或三字组成,第一字为姓氏字(复姓为前两字),其后的一到两个汉字为名用字.统计表明,中文姓名在用字上也有一定规律:一方面某些字频频出现在姓名中,如在姓氏用字中,虽然 ...

  2. 基于深度学习和指代消解的中文人名识别

    摘要 [目的]命名实体识别是自然语言处理领域的一项基本任务,实体包括人名.地名和组织名等,与其他实体相比,人名与职务.职务变更及人称代词有关.人名的实体识别中,人名语料的残缺及人称指代不明等问题,成为 ...

  3. 基于分布式的短文本命题实体识别之----人名识别(python实现)

    目前对中文分词精度影响最大的主要是两方面:未登录词的识别和歧义切分. 据统计:未登录词中中文姓人名在文本中一般只占2%左右,但这其中高达50%以上的人名会产生切分错误.在所有的分词错误中,与人名有关的 ...

  4. jieba识别中文人名实战记录及心得

    一,介绍 官方介绍:"结巴"中文分词:做最好的 Python 中文分词组件 我理解的官方的目标是做最好的python中文分词组件,但是在网上一搜,很多文章直接说成了是最好的中文分词 ...

  5. 自然语言识别python_自然语言处理工具python调用hanlp中文实体识别

    Hanlp作为一款重要的中文分词工具,在GitHub的用户量已经非常之高,应该可以看得出来大家对于hanlp这款分词工具还是很认可的.本篇继续分享一篇关于hanlp的使用实例即Python调用hanl ...

  6. HanLP中人名识别分析

    在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: 名字识别的问题 #387 机构名识别错误 关于层叠HMM中文实体识别的 ...

  7. stanfordcorenlp识别中文人名实战记录及心得

    前言: 一直在找一个能够精确识别中文人名的自然语言处理工具包,期间也找到了stanfordcorenlp, 并且经过在网上的大量摸坑探索之后,还是成功使用上了stanfordcorenlp,但是经过后 ...

  8. HanLP中的人名识别分析详解

    在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: u名字识别的问题 #387 u机构名识别错误 u关于层叠HMM中文实体 ...

  9. HanLP中人名识别分析详解

    在看源码之前,先看几遍论文<基于角色标注的中国人名自动识别研究> 关于命名识别的一些问题,可参考下列一些issue: ·名字识别的问题 #387 ·机构名识别错误 ·关于层叠HMM中文实体 ...

最新文章

  1. 大盘过4000,注意风险~
  2. opencv python全屏显示、置窗口大小和位置
  3. 【中级软考】段页式存储是什么?
  4. Android studio | Android studio下APP目录工程结构详解
  5. [转载] Scanner和bufferreader读取控制台字符的区别
  6. F - 你这是第一次让我看到落泪了呢 POJ - 3661Running 区间DP
  7. 将视图转为image_OpenShift 4.3 之 直接将Web应用当成Serverless运行
  8. cameraman matlab 自带图,[转载]【MATLAB】MATLAB的自带数据及可生成数据的函数——图片形式...
  9. php error file_get_contents()
  10. jboss下载和安装
  11. 基于麻雀搜索算法优化深度置信网络的分类方法(SSA-DBN)
  12. Win10小键盘不能使用的解决办法
  13. ×××有哪些激光领域杰出的院士?
  14. 2022-07-04-5万字长文说清楚到底什么是“车规级”
  15. IDM下载出现503错误
  16. 报错:Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.
  17. Python判断节假日 chinese_calendar
  18. 一个用户只能登录一次
  19. 【网络教程】群晖安装甜糖最新教程,手把手教您在Docker中安装官方甜糖
  20. 特斯拉是l3还是l2_特斯拉是l3还是l2

热门文章

  1. python3 mysql库_Python3.7 MySQL 数据库连接
  2. python标注工具_Python labelImg 图像标注工具安装及使用教程windows版(亲测有效)
  3. deep learning 深度学习中英文版下载地址
  4. CPU高速缓存SRAM命中问题的总结与实验
  5. vue项目原理分析-2:路由
  6. JS 异步发展流程(回调函数=Async/await)
  7. 5.1 vim介绍 5.2 vim颜色显示和移动光标 5.3 vim一般模式下移动光标 5.4 vim一般模式下复制、剪切和粘贴...
  8. cordova开发日记04 常用插件与使用(更新2016-05-19)
  9. Cisco路由器安全配置必用的10条命令
  10. anaconda moviepy_Anaconda的安装和Jupyter Notebook使用