问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

hanlp可以使用python调用吗

发布网友 发布时间:2022-04-22 10:34

我来回答

1个回答

热心网友 时间:2023-06-24 15:02

安装JDK

JPype并没有像IKVM那样实现自己的JVM,而是以pipe方式调用原生JVM。所以我们需要一个JVM,比如:

Oracle JDK

OpenJDK

安装JDK非常简单,分清楚32位和64位即可,必须与OS和Python的位数一致,具体安装过程不再赘述。

唯一需要注意的是,必须设置环境变量JAVA_HOME到JDK的根目录,JDK的安装程序不一定会帮你做这一步。

安装编译工具链

Python的package一般是以源码形式发布的,其中一些C代码必须在用户机器上编译,所以需要安装编译工具链。当然你也可以跳过这步,直接下载binary。

Windows

安装免费的Visual C++ Express 2010。

Debian/Ubuntu
sudo apt-get install g++

Red Hat/Fedora
su -c 'yum install gcc-c++'

安装JPype

本文读者应该都是Python程序员,所以略过了安装Python这一步。不过必须注意的是,JPype版本与Python的对应兼容关系:

Python2.x:JPype

Python3.x:JPype1-py3

使用setup.py安装

下载源码后解压,在目录下运行:

*nix
sudo python3 setup.py install

Windows
python setup.py install

直接下载binary

当然你也可以选择下载binary,比如JPype1-py3主页上的binary列表。

在Pycharm中安装

如果你正在使用Pycharm这款IDE的话,那么事情就简单多了。

首先在Project Interpreter里面点击加号:

搜索JPype,选择你需要的版本安装:

稍等片刻就安装成功了:

测试安装结果

终于又到了写代码的开心时间了,可以通过如下代码测试是否安装成功:
from jpype import *startJVM(getDefaultJVMPath())java.lang.System.out.println("hello world")shutdownJVM()

输出如下结果表示安装成功:
hello worldJVM activity report :classes loaded : 31JVM has been shutdown

调用HanLP

关于HanLP

HanLP是
一个致力于向生产环境普及NLP技术的开源Java工具包,支持中文分词(N-最短路分词、CRF分词、索引分词、用户自定义词典、词性标注),命名实体
识别(中国人名、音译人名、日本人名、地名、实体机构名识别),关键词提取,自动摘要,短语提取,拼音转换,简繁转换,文本推荐,依存句法分析
(MaxEnt依存句法分析、神经网络依存句法分析)。

下载HanLP

你可以直接下载Portable版的jar,零配置。

也可以使用自定义的HanLP——HanLP由3部分组成:类库hanlp.jar包、模型data包、配置文件hanlp.properties,请前往项目主页下载最新版:https://github.com/hankcs/HanLP/releases。对于非portable版,下载后,你需要编辑配置文件第一行的root指向data的父目录,详见文档。

这里,假设新建了一个目录(假定为C:\hanlp),把hanlp.jar和hanlp.properties(portable版的话,仅需一个hanlp-portable.jar)放进去:

Python调用

下面是一份Python3的调用示例:
# -*- coding:utf-8 -*-
# Filename: main.py
# Author:hankcs
# Date: 2015/11/26 14:16
from jpype import *

startJVM(getDefaultJVMPath(), "-Djava.class.path=C:\hanlp\hanlp-1.2.8.jar;C:\hanlp", "-Xms1g", "-Xmx1g")
HanLP = JClass('com.hankcs.hanlp.HanLP')
# 中文分词
print(HanLP.segment('你好,欢迎在Python中调用HanLP的API'))
testCases = [
"商品和服务",
"结婚的和尚未结婚的确实在干扰分词啊",
"买水果然后来世博园最后去世博会",
"中国的首都是北京",
"欢迎新老师生前来就餐",
"工信*干事每月经过下属科室都要亲*代24*换机等技术性器件的安装工作",
"随着页游兴起到现在的页游繁盛,依赖于存档进行逻辑判断的设计减少了,但这块也不能完全忽略掉。"]
for sentence in testCases: print(HanLP.segment(sentence))
# 命名实体识别与词性标注
NLPTokenizer = JClass('com.hankcs.hanlp.tokenizer.NLPTokenizer')
print(NLPTokenizer.segment('中国科学院计算技术研究所的宗成庆教授正在教授自然语言处理课程'))
# 关键词提取
document = "水利部水资源司*陈明忠9月29日在*新闻办举行的新闻发布会上透露," \
"根据刚刚完成了水资源管理制度的考核,有部分省接近了红线的指标," \
"有部分省超过红线的指标。对一些超过红线的地方,陈明忠表示,对一些取用水项目进行区域的限批," \
"严格地进行水资源论证和取水许可的批准。"
print(HanLP.extractKeyword(document, 2))
# 自动摘要
print(HanLP.extractSummary(document, 3))
# 依存句法分析
print(HanLP.parseDependency("徐先生还具体帮助他确定了把画雄鹰、松鼠和麻雀作为主攻目标。"))
shutdownJVM()
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
女生多大后可以不在长身高? 如何不用软件把手机投屏到电脑上手机屏幕怎样投放到电脑上 战时拒绝、故意延误军事订货罪既遂的处罚? 战时故意延误军事订货罪处罚标准 名师1+1导读方案:汤姆·索亚历险记目录 三星sm-g7200打开微信慢,无法正常收看,网速不慢。 笔记本电脑如何调亮屏幕亮度 大伙说说洗衣机要不要带烘干好 热烘干洗衣机怎么样 ef英语哪个好 Java怎么用jython调用python? py4j jpype哪个好用 如何使用QPython开发Android应用 jpype 调用jar时报错。高分求解决 求助python3如何调用java jar包 jpype是python的第三方库包吗 土豆萝卜炖牛肉怎么做菜好吃 白罗卜土豆翻茄可以炖牛肉汤吗? 绿豆芽生长日记连续五天小学生1000字左右? 豆芽的观察日记两天 绿豆从用水泡到发芽的观察日记。400字以上。 绿豆观察日记怎么写? 绿豆芽观察日记(很长) 绿豆发芽观察日记 写绿豆变豆芽的观察日记 绿豆发芽观察日记260一则 泡绿豆连续观察日记七天 泡绿豆的观察日记连续3天 泡豆芽观察日记怎么写 怎么写观察绿豆生长发芽的观察日记 python 调用java 是每一次都启动jvm吗 jpype支持哪个版本的jdk jpype64位 python2.7的吗 怎样在linux中安装jpype python怎么调用java程序 python 调用java对象 python 怎么 调用 自定义的 java 类 有没有从Python调用Java的好方法 python 怎么调用sikuli 的jar包 梅枣跟樱桃的区别 樱桃就是车厘子吗 大樱桃的品种有哪些?现在农村种植大樱桃有前景吗? 樱桃和车厘子是同一种水果吗,不是的话有什么区别 梅枣樱桃为啥不结果? 樱桃是车厘子吗 车厘子和梅枣哪个更甜 樱桃车厘子和美早是一个品种吗 流行微信网名 有哪些个性的微信名字 个性的微信昵称,女性