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

中文姓名的构成规律

中文姓名一般由二字或三字组成,第一字为姓氏字(复姓为前两字),其后的一到两个汉字为名用字。统计表明,中文姓名在用字上也有一定规律:一方面某些字频频出现在姓名中,如在姓氏用字中,虽然姓氏辞典中列举了几千个姓氏字,但目前实际使用的不过几百个,而张、王、李、赵、刘5个姓竟占了32%;另一方面,某些字又从不被用作姓名用字,如最、仅、 紧、以、且等字。 根据这一特性,首先从一个含有1万多个人名的数据库中抽取303个姓用字和1047个名用字,形成系统的知识源;然后根据姓名的构成原则制定了一组姓名构成规则集,其中的规则以姓氏字驱动。由于中文姓名的构成是严格遵守构成规则的,因而本文将姓名构成规则定义为一组必须匹配的严格规则。

姓名的上下文环境分析

中文姓名在文本中不是孤立存在的,其依存的上下文信息具有一定的特点:

1、前置信息:姓名的前端多冠有对人的职业、职务及与说话人的关系的称谓,如“这是上海市副市长刘振元日前在与上海旅游记者协会座谈时介绍的。”、“我和妻子秦润英都是双目失明的盲人。”等。在上述句子中的“市长”和“妻子”就是人名“刘振元”和“秦润英”的前置提示信息。

2、后置信息:姓名的后端多随有对此人的职业、职务及与说话人的关系的称谓,如“我国著名学者彭明教授访问前苏联时将书稿复印件全文带回。”,这里的“教授”就成为人名“彭明”的后置提示信息。

3、提示动词:某些动词多随在姓名和人称代词后,如“说、指出、告诉、通知…”,可充分利用这些词的提示作用。

Hanlp 进行人名识别

HanLP 是由一系列模型与算法组成的工具包,目标是普及自然语言处理在生产环境中的应用。HanLP 具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点;提供词法分析(中文分词、词性标注、命名实体识别)、句法分析、文本分类和情感分析等功能。

在 python 环境下使用 Hanlp 可以通过安装 pyhanlp 来导入:

pip install pyhanlp # 安装 pyhanlp 库

from pyhanlp import HanLP # 使用前导入 HanLP工具

在 Hanlp 工具中,主要使用的是 HMM 算法对人名进行识别,在对人名进行识别时,我们可以通过以下方式:

text =input()

segment = HanLP.newSegment().enableNameRecognize(True); # 构建人名识别器 result = segment.seg(text) # 对text文本进行人名识别

print(result) # 输出结果

比如,我们输入的文本为张三在吃苹果,输出的结果则为[张三/nr, 在/p, 吃苹果/nz],人名识别的结果中,包含着各个词的识别结果,我们可以根据各个词的识别结果得知哪些词属于人名。

常见标注的具体意义如下:

| 代码 | 意义 |

| ———— | ———— |

| nr | 人名 |

| n | 名词 |

| v | 动词 |

| p | 介词 |

| g | 语素词 |

| h | 前接部分 |

经验分享 程序员 微信小程序 职场和发展