python調用HanLP

1.首先安裝jpype

首先各種坑,jdk和python 版本位數必須一致,我用的是JPype1-py3 版本號0.5.5.2 、1.6jdk和Python3.5,win7 64位下親測沒問題。
否則死翹翹,有可能虛擬機都無法啓動:
# -*- coding:utf-8 -*-
import jpype
from jpype import *
jvmPath = jpype.getDefaultJVMPath()
print(jvmPath)
jpype.startJVM(jvmPath)
jpype.java.lang.System.out.println("hello world!")
java.lang.System.out.println("hello world")
jpype.shutdownJVM()
出錯調試,原因已說;測試成功會有輸出。
下面啓動虛擬機跑hanlp

2.下載各種安裝包

使用自定義的HanLP——HanLP由3部分組成:類庫hanlp.jar包、模型data包、配置文件hanlp.properties,請前往項目主頁下載最新版:https://github.com/hankcs/HanLP/releases對於非portable版,下載後,你需要編輯配置文件第一行的root指向data的父目錄,詳見文檔

# -*- coding:utf-8 -*-

import os
from jpype import *
#老版本
startJVM(getDefaultJVMPath(), "-Djava.class.path=D:\hanLP\hanlp-1.3.2.jar;"
                              "D:\hanLP", "-Xms1g","-Xmx1g")  # 啓動JVM,Linux需替換分號;爲冒號:
#新版本,出現警告。垃圾的1.5會出現警告,而且數據也出問題。
# startJVM(getDefaultJVMPath(), "-Djava.class.path=D:\hanLP\hanlp-1.5.2.jar;"
#                               "D:\hanLP", "-Xms1g","-Xmx1g")  # 啓動JVM,Linux需替換分號;爲冒號:


HanLP = JClass('com.hankcs.hanlp.HanLP')
#中文分詞
print(HanLP.segment("你好,歡迎在Python中調用HanLP的API").toString())
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()

測試成功:
[你好/vl, ,/w, 歡迎/v, 在/p, Python/nx, 中/f, 調用/v, HanLP/nx, 的/ude1, API/nx]
還行
[商品/n, 和/cc, 服務/vn]
[結婚/vi, 的/ude1, 和/cc, 尚未/d, 結婚/vi, 的/ude1, 確實/ad, 在/p, 干擾/vn, 分詞/n, 啊/y]
[買/v, 水果/n, 然後/c, 來/vf, 世博園/n, 最後/f, 去/vf, 世博會/n]
[中國/ns, 的/ude1, 首都/n, 是/vshi, 北京/ns]
[歡迎/v, 新/a, 老/a, 師生/n, 前來/vi, 就餐/vi]
[工信處/n, 女幹事/n, 每月/r, 經過/p, 下屬/v, 科室/n, 都/d, 要/v, 親口/d, 交代/v, 24/m, 口/n, 交換機/n, 等/udeng, 技術性/n, 器件/n, 的/ude1, 安裝/v, 工作/vn]
[隨着/p, 頁遊/nz, 興起/v, 到/v, 現在/t, 的/ude1, 頁遊/nz, 繁盛/a, ,/w, 依賴於/v, 存檔/vi, 進行/vn, 邏輯/n, 判斷/v, 的/ude1, 設計/vn, 減少/v, 了/ule, ,/w, 但/c, 這/rzv, 塊/q, 也/d, 不能/v, 完全/ad, 忽略/v, 掉/v, 。/w]
[中國科學院計算技術研究所/nt, 的/ude1, 宗成慶/nr, 教授/nnt, 正在/d, 教授/v, 自然語言處理/nz, 課程/n]
[水資源, 陳明忠]
[嚴格地進行水資源論證和取水許可的批准, 水利部水資源司司長陳明忠9月29日在國務院新聞辦舉行的新聞發佈會上透露, 有部分省超過紅線的指標]
1	徐先生	徐先生	nh	nr	_	4	主謂關係	_	_
2	還	還	d	d	_	4	狀中結構	_	_
3	具體	具體	a	a	_	4	狀中結構	_	_
4	幫助	幫助	v	v	_	0	核心關係	_	_
5	他	他	r	rr	_	4	兼語	_	_
6	確定	確定	v	v	_	4	動賓關係	_	_
7	了	了	u	ule	_	6	右附加關係	_	_
8	把	把	p	pba	_	15	狀中結構	_	_
9	畫	畫	v	v	_	8	介賓關係	_	_
10	雄鷹	雄鷹	n	n	_	9	動賓關係	_	_
11	、	、	wp	w	_	12	標點符號	_	_
12	松鼠	松鼠	n	n	_	10	並列關係	_	_
13	和	和	c	cc	_	14	左附加關係	_	_
14	麻雀	麻雀	n	n	_	10	並列關係	_	_
15	作爲	作爲	p	p	_	6	動賓關係	_	_
16	主攻	主攻	v	vn	_	17	定中關係	_	_
17	目標	目標	n	n	_	15	動賓關係	_	_
18	。	。	wp	w	_	4	標點符號	_	_

JVM activity report     :
	classes loaded       : 32
JVM has been shutdown
這裏有可能JClass("
com.hankcs.hanlp.HanLP")時,報錯出現找不到類的問題,仔細查看配置文件和jar路徑是否對;如果還出錯,
查看data裏面的文件是否全。

參考網址:
發佈了67 篇原創文章 · 獲贊 22 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章