4.28更新:对于Python来说,官方给出了HanLP的Python接口,具体见:自然语言处理工具包HanLP的Python接口,使用一个简单的pip
命令就可以安装使用了,但是仍然需要安装一些环境,这里简单介绍一下,它的安装过程中各种环境的安装与之前是一样的。
首先是安装 Java Visual C++环境以及安装 Jpype,这与之前一样。
不同的地方在于之前安装 jar 包以及配置 data 的过程可以使用一个 pip
命令来完成,在完成上述操作后,进入控制台(Anaconda的话要进入 Anaconda Propmpt 然后 activate 到相应的环境下),然后使用:
pip install pyhanlp
注意在第一使用 from pyhanlp import *
命令来导入的时候会自动下载data 以及jar包,整个过程大概由1G左右吧,所以首次运行会比较慢,第二次就快多了。
在完成安装之后,使用与下面HanLP的测试代码一样,并且不需要启动Java虚拟机的那些环境设置。在导入之后,HanLP
对象会自动创建,对于其他的对象,则可以通过JClass
来创建,例如:
StandardTokenizer = JClass("com.hankcs.hanlp.tokenizer.StandardTokenizer")
print(StandardTokenizer.segment("使用这个工具进行标准分词"))
其他对象同理创建使用。
以下是原文
安装Hanlp时候发现网上的一些介绍文章写的有些模糊,这里记录一下Python环境下安装与使用Hanlp。
首先,要明确HanLP是一个Java工具包,由很多模型、算法组成,而在学习自然语言的时候一般都会使用Python吧,因此,实质上是使用Python调用Hanlp。
具体安装步骤:
首先是安装JDK,这个在Oracle的官网上就可以下载到:JDK,选择自己使用的版本即可,注意要勾选Accept那个按钮才能下载。下载完成后安装即可。不过JDK安装之后要配置一下环境变量(例如在cmd下输入java发下是“不是批处理XXX”),具体的方法网上有很多,例如:JDK环境变量配置。
接下在安装Visual C++,这个可以先看一下自己电脑是否已经安装(我记得有些游戏是会安装这个的 =_=||。。),打开控制面板(可以win+Q,在小娜的搜索框里直接搜索),在“程序”中找到已经安装的程序:
类似这样,这里安装的事Visual C++ 2015,如果没有,也可以直接在网上搜索下载:Download Visual C++ 2015,安装包很小的。
Jpype是使用Python调用Java 的工具包,安装非常简单,如果是使用Anaconda(一般都会推荐使用Anaconda的吧),的话,打开Anaconda的控制台,使用activate
进入想要安装的那个虚拟环境,然后调用:
conda install -c conda-forge jpype1
即可,(那个Solving enviromnment可能会转一小会),然后安装选择 Proceed ([y]/n)后输入 y即可安装。
测试仍然在Anaconda的控制台下进行,使用Python
可以在控制台下进入Python环境,首先输入:
from jpype import *
测试能否正常导入。然后测试开启Java虚拟机,并进行简单输出测试
startJVM(getDefaultJVMPath(), "-ea")
java.lang.System.out.println("Hello")
其实下面的代码就是Java中的输出语句了。如果在那个黑框框中没有显示错误信息那就说明安装成功了。可以关闭Java虚拟机:
shutdownJVM()
这里主要是安装HanLP的jar包和data文件,打开HanLP的github地址:HanLP,其实上面的安装介绍已经很清楚了。
找到方法二:
首先下载data.zip(点击那个链接,这部分也在直接clone的文件里),然后下载jar和配置文件,解压后能看到里面的jar文件。
当然,建议这两个都放在英文路径下,例如:
这部分在HanLP的github网页上已经做了详细介绍。
首先打开 hanlp.properties文件,在上面第二个下载中。
这里只需要修改第一行即可(文件里也写了):
这里将root=
后面修改为存放data的那个文件夹路径,例如,我刚才的路径就是:root=D:/NLP/hanlp
。
至此,完成了HanLP的安装。
使用代码来测试一下安装的HanLP功能:
发现网上代码都很经典啊。。都是一样的,可以使用这里的代码测试一下:Python中调用自然语言处理工具HanLP手记
注意:
from jpype import *
startJVM(getDefaultJVMPath(), "-Djava.class.path=D:/NLP/hanlp/hanlp-1.7.3.jar;D:/NLP/hanlp",
"-Xms1g",
"-Xmx1g")
HanLP = JClass('com.hankcs.hanlp.HanLP')
这里的路径也就是前面存放jar和data的文件了,要注意这里的路径分隔符使用的是/
,与上面配置文件的路径符号不同,这个地方出错可能会出现SyntaxError: (unicode error)
这样的错误,具体可以参考:Python 中 ‘unicodeescape’ codec can’t decode bytes in position XXX: trun错误解决方案。