安装pyhanlp过程中遇到的”_Jpype“模块Not found问题解决办法

这个问题简直是莫名奇妙。

前段时间由于学习网络爬虫遇到了各种python包安装,以及各种插件调试问题。

一遍过还好说,尤其这种偏工程的学科,环境搭建不好,就没法开展进度。

对于NLP领域的一个分词工具——Hanlp的安装遇到了同样问题。

首先直接pip install pyhanlp失败,由于hanlp核心是用java实现的。 《自然语言处理入门》p23介绍,需要jpype1的一个依赖,后来才知道这个包是属于python(胶水语言)的对于java的“强力胶水”。

可以通过miniconda来安装,但是我用的是自己安装的python环境,但是直接使用自己安装的python环境通过pip install jpype==0.7.0安装是不成功的,这里指定版本是因为hanlp官方给定的jpype版本就是0.7.0。开始试过将miniconda下安装的jpype工具包直接复制到自己的python环境下,后来不知道什么原因又不可以用了。

《自然语言处理入门》书中介绍的是安装jpype之后,再安装pyhanlp,然后Hanlp类就可以通过from pyhanlp import *直接使用。而上面遇到的问题只是无法安装pyhanlp,后来的学习过程中有发现了一种新的方法——直接越过pyhanlp的安装

这里我使用的是pycharm环境的,可以安装py3的对应的jpype包。

安装pyhanlp过程中遇到的”_Jpype“模块Not found问题解决办法_第1张图片

部分实现代码如下:

from jpype import *

startJVM(getDefaultJVMPath(), "-Djava.class.path=E:\Study App\Hanlp\hanlp-1.7.7.jar;E:\Study App\Hanlp",
         "-Xms1g",
         "-Xmx1g") # 启动JVM,Linux需替换分号;为冒号:

print("=" * 30 + "HanLP分词" + "=" * 30)
HanLP = JClass('com.hankcs.hanlp.HanLP')
print(HanLP.segment('你好,欢迎在Python中调用HanLP的API'))

print("=" * 30 + "标准分词" + "=" * 30)
StandardTokenizer = JClass('com.hankcs.hanlp.tokenizer.StandardTokenizer')
print(StandardTokenizer.segment('你好,欢迎在Python中调用HanLP的API'))

通过开启一个Java虚拟机,连接到你的hanlp的数据包存放路径,这里我存放的路径为E:\Study App\Hanlp。我们需要找到该路径以及其中的jar文件。然后查阅官方文档,具体需要哪一种分词方式,最后通过JClass类去获取该分词类对象,完成操作。

如果是安装pyhanlp之后,通过导入就可以直接使用上面的分词类并且不需要手动启动虚拟机,这就是二者的区别之处。

注意:hanlp目录中的properties文件中的root路径也需要设置为你的hanlp数据包所在路径。

安装pyhanlp过程中遇到的”_Jpype“模块Not found问题解决办法_第2张图片

这里它告诉你当前jpype版本正在被弃用。不过没关系,可以运行成功就ok了。

你可能感兴趣的:(NLP)