版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/xc_zhou/article/details/100670066
其为 HanLP 的 Python 接口,支持自动下载与升级 HanLP,兼容 Python2、Python3。
安装命令为 pip install pyhanlp
,使用命令 hanlp 来验证安装。
pyhanlp 目前使用 jpype1 这个 Python 包来调用 HanLP,如果遇到:
building ‘_jpype’ extensionerror: Microsoft Visual C++ 14.0 is required. Get it with “Microsoft VisualC++ Build Tools”: http://landinghub.visualstudio.com/visual-cpp-build-tools
则推荐利用轻量级的 Miniconda 来下载编译好的 jpype1。
conda install -c conda-forge jpype1
pip install pyhanlp
未安装 Java 时会报错:
jpype.jvmfinder.JVMNotFoundException: No JVM shared library file (jvm.dll) found. Try setting up the JAVAHOME environment variable properly.
HanLP 主项目采用 Java 开发,所以需要 Java 运行环境,请安装 JDK。
在命令行界面,使用命令 hanlp segment 进入交互分词模式,输入一个句子并回车,HanLP 会输出分词结果:
$ hanlp segment
商品和服务
商品/n 和/cc 服务/vn
当下雨天地面积水分外严重
当/p 下雨天/n 地面/n 积水/n 分外/d 严重/a
C:\Users\WYXCz>hanlp parse
徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。
1 徐 徐 nh nr _ 2 定中关系 _ _
2 先生 先生 n n _ 5 主谓关系 _ _
3 还 还 d d _ 5 状中结构 _ _
4 具体 具体 a ad _ 5 状中结构 _ _
5 帮助 帮助 v v _ 0 核心关系 _ _
6 他 他 r r _ 5 兼语 _ _
7 确定 确定 v v _ 5 动宾关系 _ _
8 了 了 u u _ 7 右附加关系 _ _
9 把 把 p p _ 16 状中结构 _ _
10 画 画 v v _ 9 介宾关系 _ _
11 雄鹰 雄鹰 n n _ 10 动宾关系 _ _
12 、 、 wp w _ 13 标点符号 _ _
13 松鼠 松鼠 n n _ 11 并列关系 _ _
14 和 和 c c _ 15 左附加关系 _ _
15 麻雀 麻雀 n n _ 11 并列关系 _ _
16 作为 作为 v v _ 7 动宾关系 _ _
17 主攻 主攻 v vn _ 18 定中关系 _ _
18 目标 目标 n n _ 16 动宾关系 _ _
19 。 。 wp w _ 5 标点符号 _ _
可见,pyhanlp 分词结果是带有词性的。
通过 hanlp serve 来启动内置的 HTTP 服务器,默认本地访问地址为:http://localhost:8765 。
也可以访问官网演示页面:http://hanlp.hankcs.com/。
通过工具类 HanLP 调用常用接口,这种方式应该是我们在项目中最常用的方式。
(1)分词
from pyhanlp import *
content = "现如今,机器学习和深度学习带动人工智能飞速的发展,并在图片处理、语音识别领域取得巨大成功。"
print(HanLP.segment(content))
结果为:
[现如今/t, ,/w, 机器学习/gi, 和/cc, 深度/n, 学习/v, 带动/v, 人工智能/n, 飞速/d, 的/ude1, 发展/vn, ,/w, 并/cc, 在/p, 图片/n, 处理/vn, 、/w, 语音/n, 识别/vn, 领域/n, 取得/v, 巨大/a, 成功/a, 。/w]
(2)自定义词典分词
在没有使用自定义字典时的分词。
txt = "铁甲网是中国最大的工程机械交易平台。"
print(HanLP.segment(txt))
结果为:
[铁甲/n, 网/n, 是/vshi, 中国/ns, 最大/gm, 的/ude1, 工程/n, 机械/n, 交易/vn, 平台/n, 。/w]
添加自定义新词:
CustomDictionary.add("铁甲网")
CustomDictionary.insert("工程机械", "nz 1024")
CustomDictionary.add("交易平台", "nz 1024 n 1")
print(HanLP.segment(txt))
结果为:
[铁甲网/nz, 是/vshi, 中国/ns, 最大/gm, 的/ude1, 工程机械/nz, 交易平台/nz, 。/w]
from pyhanlp import *
print(HanLP.segment('你好,欢迎在Python中调用HanLP的API'))
for term in HanLP.segment('下雨天地面积水'):
print('{}\t{}'.format(term.word, term.nature)) # 获取单词与词性
testCases = [
"商品和服务",
"结婚的和尚未结婚的确实在干扰分词啊",
"买水果然后来世博园最后去世博会",
"中国的首都是北京",
"欢迎新老师生前来就餐",
"工信处女干事每月经过下属科室都要亲口交代24口交换机等技术性器件的安装工作",
"随着页游兴起到现在的页游繁盛,依赖于存档进行逻辑判断的设计减少了,但这块也不能完全忽略掉。"]
for sentence in testCases: print(HanLP.segment(sentence))
# 关键词提取
document = "水利部水资源司司长陈明忠9月29日在国务院新闻办举行的新闻发布会上透露," \
"根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标," \
"有部分省超过红线的指标。对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批," \
"严格地进行水资源论证和取水许可的批准。"
print(HanLP.extractKeyword(document, 2))
# 自动摘要
print(HanLP.extractSummary(document, 3))
# 依存句法分析
print(HanLP.parseDependency("徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。"))
HanLP项目主页:https://github.com/hankcs/HanLP HanLP下载地址:https://github.com/hankcs/HanLP/releases Python接口:https://github.com/hankcs/pyhanlp HanLP在线演示:http://hanlp.hankcs.com/
hanlp、pyhanlp的具体使用方法见: https://go.ctolib.com/hankcs-pyhanlp.html http://www.hankcs.com/nlp/hanlp.html https://github.com/hankcs/HanLP/blob/master/README.md
参考:https://www.jianshu.com/p/009671e56027