安裝pyhanlp過程中遇到的”_Jpype“模塊Not found問題解決辦法

這個問題簡直是莫名奇妙。

前段時間由於學習網絡爬蟲遇到了各種python包安裝,以及各種插件調試問題。

一遍過還好說,尤其這種偏工程的學科,環境搭建不好,就沒法開展進度。

對於NLP領域的一個分詞工具——Hanlp的安裝遇到了同樣問題。

首先直接pip install pyhanlp失敗,由於hanlp核心是用java實現的。 《自然語言處理入門》p23介紹,需要jpype1的一個依賴,後來才知道這個包是屬於python(膠水語言)的對於java的“強力膠水”。

可以通過miniconda來安裝,但是我用的是自己安裝的python環境,但是直接使用自己安裝的python環境通過pip install jpype==0.7.0安裝是不成功的,這裏指定版本是因爲hanlp官方給定的jpype版本就是0.7.0。開始試過將miniconda下安裝的jpype工具包直接複製到自己的python環境下,後來不知道什麼原因又不可以用了。

《自然語言處理入門》書中介紹的是安裝jpype之後,再安裝pyhanlp,然後Hanlp類就可以通過from pyhanlp import *直接使用。而上面遇到的問題只是無法安裝pyhanlp,後來的學習過程中有發現了一種新的方法——直接越過pyhanlp的安裝

這裏我使用的是pycharm環境的,可以安裝py3的對應的jpype包。

部分實現代碼如下:

from jpype import *

startJVM(getDefaultJVMPath(), "-Djava.class.path=E:\Study App\Hanlp\hanlp-1.7.7.jar;E:\Study App\Hanlp",
         "-Xms1g",
         "-Xmx1g") # 啓動JVM,Linux需替換分號;爲冒號:

print("=" * 30 + "HanLP分詞" + "=" * 30)
HanLP = JClass('com.hankcs.hanlp.HanLP')
print(HanLP.segment('你好,歡迎在Python中調用HanLP的API'))

print("=" * 30 + "標準分詞" + "=" * 30)
StandardTokenizer = JClass('com.hankcs.hanlp.tokenizer.StandardTokenizer')
print(StandardTokenizer.segment('你好,歡迎在Python中調用HanLP的API'))

通過開啓一個Java虛擬機,連接到你的hanlp的數據包存放路徑,這裏我存放的路徑爲E:\Study App\Hanlp。我們需要找到該路徑以及其中的jar文件。然後查閱官方文檔,具體需要哪一種分詞方式,最後通過JClass類去獲取該分詞類對象,完成操作。

如果是安裝pyhanlp之後,通過導入就可以直接使用上面的分詞類並且不需要手動啓動虛擬機,這就是二者的區別之處。

注意:hanlp目錄中的properties文件中的root路徑也需要設置爲你的hanlp數據包所在路徑。

這裏它告訴你當前jpype版本正在被棄用。不過沒關係,可以運行成功就ok了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章