Python3安装pyhanlp最佳解决方法

news/2024/11/9 0:48:32/

1、Hanlp介绍

Hanlp是一款中文自然语言处理工具。Hanlp支持多种自然语言处理任务,包括分词、词性标注、命名实体识别、依存句法分析、情感分析、文本分类等。其主要优点包括:

  1. 高准确率:Hanlp采用了基于神经网络的分词方法,有效提高了分词的准确率和速度。
  2. 广泛覆盖:Hanlp支持多种自然语言处理任务,包括分词、词性标注、命名实体识别、依存句法分析、情感分析、文本分类等,能够满足大部分的自然语言处理需求。
  3. 多语种支持:Hanlp支持多种语言的处理,如中文、英文、日文等,可应用于多语言环境下的自然语言处理任务。
  4. 易于集成:Hanlp提供了丰富的API接口和开箱即用的模型,易于集成到Java项目中,并且支持Python、Go、C++等多种编程语言的使用。

总之,Hanlp是一款功能强大、易于集成的中文自然语言处理工具,并且具有广泛的应用场景。

2、问题背景

最近工作上需要用到hanlp这个包,因此开始踩坑之路……

ModuleNotFoundError: No module named 'hanlp'报错

pip install pyhanlp安装报错

 3、解决方法

步骤1:安装JPype1,但是使用pip install JPype1命令安装报错。

解决方法:找对应Python版本的jypel的whl,下载链接:https://www.lfd.uci.edu/~gohlke/pythonlibs/

根据自己得python版本选择下载对应的安装包: pip install JPype1-1.2.0-cp36-cp36m-win_amd64.whl

注:安装时,whl后缀也需要带上。

检测是否安装成功(运行成功即可):

import jpype
jvmPath=jpype.getDefaultJVMPath()
print(jvmPath)   # D:\jdk\bin\server\jvm.dll

安装完成后,此时安装pip install pyhanlp,还是报错。

步骤2:源码编译安装

进入官网下载源代码zip ,然后解压到Python包中。链接地址:mirrors / hankcs / HanLP · GitCode

解压之后,在解压后的安装目录

D:\python3.6.6\Lib\site-packages\HanLP-doc-zh(这是安装目录)执行:

python setup.py install

开始执行编译安装。

安装过程会报错,需要安装torch,去Python安装包大全里面下载安装即可。

Python安装包大全:https://www.lfd.uci.edu/~gohlke/pythonlibs/

再执行:python setup.py install,还是有点小问题,但是运行代码不在报这个错了:ModuleNotFoundError: No module named 'hanlp'。

 继续踩坑………………

步骤3:HanLP安装

下载jar配置文件hanlp.jar包和data数据,地址:Releases · hankcs/HanLP · GitHub

下图点击下载就可以了:

 下载后先将hanlp-1.8.4-release安装包解压到本地,并重命名为hanlp_package(任意取),并将data-for-1.7.5.zip解压后的data文件夹放到hanlp_package安装包中。

 接着,修改hanlp.properties配置文件,将里面的默认路径改为你本地路径即可:

 注:HanLP的路径在"D:\software\hannlp"(最好路径中不要带中文)

4、HanLP代码测试

from jpype import *startJVM(getDefaultJVMPath(), "-Djava.class.path=D:\software\hannlp\hanlp-1.7.2.jar;D:\software\hannlp","-Xms1g","-Xmx1g") # 启动JVM,Linux需替换分号;为冒号:print("=" * 30 + "HanLP分词" + "=" * 30)
HanLP = JClass('com.hankcs.hanlp.HanLP')
# 中文分词
print(HanLP.segment('小明毕业于北京理工大学,后就职与中国科学院大数据研究所。'))
print("-" * 70)shutdownJVM()

运行结果:

==============================HanLP分词==============================
[小明/nz, 毕业/v, 于/p, 北京理工大学/ntu, ,/w, 后/f, 就职/vi, 与/cc, 中国科学院/nt, 大/a, 数据/n, 研究所/nis, 。/w]
----------------------------------------------------------------------

但此时还是不能导入pyhanlp,运行程序报错。执行命令安装pip install pyhanlp,还是报错。

重启一下,再执行pip install pyhanlp,安装成功,解决!!!

代码测试:

from pyhanlp import *
conten_list = HanLP.parseDependency("小明毕业于北京理工大学,后就职与中国科学院大数据研究所。")
print(conten_list)

运行结果:

1	小明	小明	nh	nr	_	2	主谓关系	_	_
2	毕业	毕业	v	v	_	0	核心关系	_	_
3	于	于	p	p	_	2	动补结构	_	_
4	北京理工大学	北京理工大学	ni	ntu	_	3	介宾关系	_	_
5	,	,	wp	w	_	2	标点符号	_	_
6	后	后	nd	f	_	7	状中结构	_	_
7	就职	就职	v	v	_	2	并列关系	_	_
8	与	与	p	p	_	11	左附加关系	_	_
9	中国科学院	中国科学院	ni	nt	_	10	定中关系	_	_
10	大数据	大数据	n	n	_	11	定中关系	_	_
11	研究所	研究所	n	n	_	7	并列关系	_	_
12	。	。	wp	w	_	2	标点符号	_	_

5、小结

综上,以上踩坑步骤,即可解决pip install pyhanlp安装报错 或 ModuleNotFoundError: No module named 'hanlp'报错问题。


http://www.ppmy.cn/news/77909.html

相关文章

炸金花底层模拟

一.说明 经常刷视频,看到一个有意思的项目,非常适合练手,今天这里我们实现炸金花的底层模拟。 二.游戏规则 1.一副扑克牌去掉大小王,剩下52张牌2.参与游戏的玩家每人发三张牌3.比较每个人手中牌的大小4.若三张牌相同&#xff0…

IP 查询/手机在网状态等热门API大全分享

IP 归属地查询 IP归属地-IPv4区县级:根据IP地址查询归属地信息,包含43亿全量IPv4,支持到中国地区(不含港台地区)区县级别,含运营商数据。IP归属地-IPv6区县级:根据IP地址(IPv6版本&…

C语言代码封装MQTT协议报文,了解MQTT协议通信过程

【1】MQTT协议介绍 MQTT是一种轻量级的通信协议,适用于物联网(IoT)和低带宽网络环境。它基于一种“发布/订阅”模式,其中设备发送数据(也称为 “发布”)到经纪人(称为MQTT代理)&…

二十三种设计模式第九篇--代理模式

在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。 意图:为其他对象提供一种代理以控制对这…

项目管理基础:什么是项目管理?

一、项目管理的缘起与发展 项目管理并非基础学科,它是人类在生产实践中不断的经验积累所总结归纳的一门学科,在人们不断的完善与修订下逐步形成了现有的项目管理知识体系。 项目经理是随着人们对项目管理要求的提升而逐渐分化出的一个专业职位&#xf…

自定义属性,v-bind computed的使用

0.0 自定义组件的使用 【掌握】 先自定义自己的组件 引入组件 import 组件名 from 路径/文件名 注册组件 <script> export default {components:{ // 组件注册组件名:组件名&#xff0c;组件名1},data(){ // 数据return {}},methods:{ // 方法} ​ } ​ </script&…

Containerd+Kubernetes搭建k8s集群

ContainerdKubernetes搭建k8s集群 文档说明安装软件的版本和下载地址环境说明服务器准备负载均衡IP地址准备 安装步骤环境设置关闭防火墙关闭SELinux关闭swap分区设置主机名称解析设置主机名称加载 br_netfilter 模块桥接的IPv4流量传递到iptables升级操作系统内核导入elrepo g…

【华为OD机试】导师请吃火锅【2023 B卷|200分】

题目描述 入职后&#xff0c;导师会请你吃饭&#xff0c;你选择了火锅。 火锅里会在不同时间下很多菜。 不同食材要煮不同的时间&#xff0c;才能变得刚好合适。 你希望吃到最多的刚好合适的菜&#xff0c;但你的手速不够快&#xff0c;用m代表手速&#xff0c; 每次下手捞菜后…