HanLP安装与使用-python版和java版

HanLP是一系列模型与算法组成的NLP工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。内部算法经过工业界和学术界考验,配套书籍《自然语言处理入门》已经出版。

Java版:https://github.com/hankcs/HanLP
Python版:https://github.com/hankcs/pyhanlp

python版

1,安装:

pip install pyhanlp

(我的:)它会默认将pyhanlp安装在,C:\Users\ASUS\Anaconda3\Lib\site-packages\pyhanlp

2,使用:

$ hanlp segment
商品和服务

3,报错:

ValueError: 配置错误: 数据包 C:/Users/ASUS/Anaconda3/Lib/site-packages/pyhanlp/static\data 不存在,请修改配置文件中的root

参考资料:https://blog.csdn.net/Changxing_J/article/details/103641309

4,解决:

1.下载HanLP的data文件夹,data文件夹复制到报错信息路径的static文件夹中
下载地址:https://github.com/hankcs/HanLP
2.检查C:/Users/ASUS/Anaconda3/Lib/site-packages/pyhanlp/static中hanlp.properties文件的root变量值,发现路径无误
root=c:/users/asus/anaconda3/lib/site-packages/pyhanlp/static
执行以上两步操作后,运行仍然报错,经过进一步的检查,发现:
3.发现在root变量值后多出一个"\r",将这个额外的"\r"删去
再次重新尝试运行,不再报错可正常使用。

5,正确结果:
在这里插入图片描述

Java版

这里虽然安装了java版本,但使用却是用python调用jvm,再使用它的函数。
不过安装过程可以借鉴。

1,先安装 jpype
参考资料:Python – jpype JVM的第三方库使用
从https://www.lfd.uci.edu/~gohlke/pythonlibs/下载,我选择python36,64位的。
HanLP安装与使用-python版和java版_第1张图片
下载,并找到对应位置后pip install xxx.whl

2,使用

from jpype import *

startJVM(getDefaultJVMPath(),
         "-Djava.class.path=E:/test_py3/hanlp-1.7.5-release/hanlp-1.7.5.jar;E:/test_py3/hanlp-1.7.5-release",
         "-Xms1g",
         "-Xmx1g")  # 启动JVM,Linux需替换分号;为冒号:

text = "据美国之音电台网站4月28日报道,8岁的凯瑟琳·克罗尔(凤甫娟)和很多华裔美国小朋友一样,小小年纪就开始学小提琴了。她的妈妈是位虎妈么?"
# 抽取时间名词
NLPTokenizer = JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
words = NLPTokenizer.segment(text)
print(words)

shutdownJVM()

3,报错
1)报错1

com.hankcs.hanlp.HanLP$Config <clinit>
严重: 没有找到hanlp.properties,可能会导致找不到data
========Tips========
请将hanlp.properties放在下列目录:
Web项目则请放到下列目录:
Webapp/WEB-INF/lib
Webapp/WEB-INF/classes
Appserver/lib
JRE/lib
并且编辑root=PARENT/path/to/your/data
现在HanLP将尝试从E:\1StudyData\f辅助阅读读取data……

解决:-Djava.class.path=里面别加中文。

2)报错2

com.hankcs.hanlp.corpus.io.ByteArrayFileStream createByteArrayFileStream
警告: java.io.FileNotFoundException: c:\users\asus\anaconda3\lib\site-packages\pyhanlp\static\data\model\perceptron\large\cws.bin (系统找不到指定的路径。) 
        at java.io.FileInputStream.open0(Native Method)
        at java.io.FileInputStream.open(FileInputStream.java:195)
        at java.io.FileInputStream.<init>(FileInputStream.java:138)
        at java.io.FileInputStream.<init>(FileInputStream.java:93)
        at com.hankcs.hanlp.corpus.io.ByteArrayFileStream.createByteArrayFileStream(ByteArrayFileStream.java:39)
        at com.hankcs.hanlp.corpus.io.ByteArrayStream.createByteArrayStream(ByteArrayStream.java:38)
        at com.hankcs.hanlp.model.perceptron.model.LinearModel.load(LinearModel.java:387)
        at com.hankcs.hanlp.model.perceptron.model.LinearModel.<init>(LinearModel.java:65)
        at com.hankcs.hanlp.model.perceptron.PerceptronLexicalAnalyzer.<init>(PerceptronLexicalAnalyzer.java:70)
        at com.hankcs.hanlp.model.perceptron.PerceptronLexicalAnalyzer.<init>(PerceptronLexicalAnalyzer.java:95)
        at com.hankcs.hanlp.tokenizer.NLPTokenizer.<clinit>(NLPTokenizer.java:39)

Traceback (most recent call last):
  File "e:/1StudyData/f辅助阅读/nlp_hanlp.py", line 96, in <module>
    NLPTokenizer = JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
  File "C:\Users\ASUS\Anaconda3\lib\site-packages\jpype\_jclass.py", line 130, in __new__
    return _JClassNew(args[0], **kwargs)
  File "C:\Users\ASUS\Anaconda3\lib\site-packages\jpype\_jclass.py", line 228, in _JClassNew
    javaClass = _jpype.PyJPClass(arg)
jpype._jclass.ExceptionInInitializerError: java.lang.ExceptionInInitializerError

解决:
a,在 https://github.com/hankcs/HanLP/releases/tag/v1.7.5 下载data-for-1.7.5.zip
b,解压,放到C:\Users\ASUS\Anaconda3\Lib\site-packages\pyhanlp\static\data\model中(对应自己目录)

4,正确结果
在这里插入图片描述

以上,终于成功,弄了很久。

你可能感兴趣的:(教程,HanLP,HanLP安装,HanLP使用,pyhanlp,报错)