赞
踩
HanLP是一系列模型与算法组成的NLP工具包,目标是普及自然语言处理在生产环境中的应用。HanLP具备功能完善、性能高效、架构清晰、语料时新、可自定义的特点。内部算法经过工业界和学术界考验,配套书籍《自然语言处理入门》已经出版。
Java版:https://github.com/hankcs/HanLP
Python版:https://github.com/hankcs/pyhanlp
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版本,但使用却是用python调用jvm,再使用它的函数。
不过安装过程可以借鉴。
1,先安装 jpype
参考资料:Python – jpype JVM的第三方库使用
从https://www.lfd.uci.edu/~gohlke/pythonlibs/下载,我选择python36,64位的。
下载,并找到对应位置后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,正确结果
以上,终于成功,弄了很久。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。