1. 程式人生 > >自然語言處理工具包HanLP的Python介面

自然語言處理工具包HanLP的Python介面

pyhanlp: Python interfaces for HanLP
HanLP的Python介面,支援自動下載與升級HanLP,相容py2、py3。

安裝
pip install pyhanlp
使用命令hanlp來驗證安裝,如因網路等原因自動安裝HanLP失敗,可參考《手動配置》。

命令列
中文分詞
使用命令hanlp segment進入互動分詞模式,輸入一個句子並回車,HanLP會輸出分詞結果:

$ hanlp segment
商品和服務
商品/n 和/cc 服務/vn
當下雨天地面積水分外嚴重
當/p 下雨天/n 地面/n 積水/n 分外/d 嚴重/a
龔學平等領導說,鄧穎超生前杜絕超生
龔學平/nr 等/udeng 領導/n 說/v ,/w 鄧穎超/nr 生前/t 杜絕/v 超生/vi
還可以重定向輸入輸出到檔案等:

$ hanlp segment <<< ‘歡迎新老師生前來就餐’
歡迎/v 新/a 老/a 師生/n 前來/vi 就餐/vi
依存句法分析
命令為hanlp parse,同樣支援互動模式和重定向:
在這裡插入圖片描述
伺服器
通過hanlp serve來啟動內建的http伺服器,預設本地訪問地址為:http://localhost:8765 ;也可以訪問官網演示頁面:http://hanlp.hankcs.com/

升級
通過hanlp update命令來將HanLP升級到最新版。該命令會獲取GitHub最新版本並自動下載安裝。

歡迎通過hanlp --help檢視最新幫助手冊。

API
通過工具類HanLP呼叫常用介面:

from pyhanlp import *

print(HanLP.segment(‘你好,歡迎在Python中呼叫HanLP的API’))
testCases = [
“商品和服務”,
“結婚的和尚未結婚的確實在干擾分詞啊”,
“買水果然後來世博園最後去世博會”,
“中國的首都是北京”,
“歡迎新老師生前來就餐”,
“工信處女幹事每月經過下屬科室都要親口交代24口交換機等技術性器件的安裝工作”,
“隨著頁遊興起到現在的頁遊繁盛,依賴於存檔進行邏輯判斷的設計減少了,但這塊也不能完全忽略掉。”]
for sentence in testCases: print(HanLP.segment(sentence))

關鍵詞提取

document = “水利部水資源司司長陳明忠9月29日在國務院新聞辦舉行的新聞釋出會上透露,”
“根據剛剛完成了水資源管理制度的考核,有部分省接近了紅線的指標,”
“有部分省超過紅線的指標。對一些超過紅線的地方,陳明忠表示,對一些取用水專案進行區域的限批,”
“嚴格地進行水資源論證和取水許可的批准。”
print(HanLP.extractKeyword(document, 2))

自動摘要

print(HanLP.extractSummary(document, 3))

依存句法分析

print(HanLP.parseDependency(“徐先生還具體幫助他確定了把畫雄鷹、松鼠和麻雀作為主攻目標。”))
更多功能
更多功能,包括但不限於:

自定義詞典
極速詞典分詞
索引分詞
CRF分詞
感知機詞法分析
臺灣正體、香港繁體
關鍵詞提取、自動摘要
文字分類、情感分析
請閱讀HanLP主專案文件以瞭解更多。呼叫更底層的API需要參考Java語法用JClass引入更深的類路徑。以感知機詞法分析器為例,這個類位於包名com.hankcs.hanlp.model.perceptron.PerceptronLexicalAnalyzer下,所以先用JClass得到類,然後就可以呼叫了:

PerceptronLexicalAnalyzer = JClass(‘com.hankcs.hanlp.model.perceptron.PerceptronLexicalAnalyzer’)
analyzer = PerceptronLexicalAnalyzer()
print(analyzer.analyze(“上海華安工業(集團)公司董事長譚旭光和祕書胡花蕊來到美國紐約現代藝術博物館參觀”))
輸出:

[上海/ns 華安/nz 工業/n (/w 集團/n )/w 公司/n]/nt 董事長/n 譚旭光/nr 和/c 祕書/n 胡花蕊/nr 來到/v [美國/ns 紐約/ns 現代/t 藝術/n 博物館/n]/ns 參觀/v
如果你經常使用某個類,歡迎將其寫入pyhanlp/init.py中並提交pull request,謝謝!

與其他專案共享data
HanLP具備高度可自定義的特點,所有模型和詞典都可以自由替換。如果你希望與別的專案共享同一套data,只需將該專案的配置檔案hanlp.properties拷貝到pyhanlp的安裝目錄下即可。本機安裝目錄可以通過hanlp --version獲取。

同時,還可以通過–config臨時載入另一個配置檔案:

hanlp segment --config path/to/another/hanlp.properties
配置
自動配置
預設在首次呼叫HanLP時自動下載jar包和資料包,並自動完成配置。

手動配置
如因網路等原因自動配置失敗,可以通過設定環境變數來自定義HanLP版本和資料位置。

變數名 預設值 備註
在這裡插入圖片描述
注意:

使用pip初次安裝 pyhanlp 後,不設定上述變數,程式會自動下載所需依賴到預設位置。如果是設定了上述變數,則不進行下載。因為檔案比較大,網路下載穩定性等原因,建議提前準備好jar包,配置檔案和data,並使用環境變數進行配置。

保證 hanlp.properties 中的 root 是指向正確的data路徑。

比如:

export HANLP_JAR_PATH=/hanlp/hanlp-portable-1.6.0.jar
export HANLP_STATIC_ROOT=/hanlp
就需要保證有如下的目錄結構:

hanlp
├── data
│ ├── README.url
│ ├── dictionary
│ └── model
├── hanlp.properties
└── hanlp-portable-1.6.0.jar
測試
git clone https://github.com/hankcs/pyhanlp.git
cd pyhanlp
pip install -r requirements.txt # 安裝依賴
export HANLP_JAR_PATH= # 配置環境變數
export HANLP_STATIC_ROOT= # 配置環境變數
python tests/test_hanlp.py # 執行測試
授權協議
Apache License 2.0

文章來源於hankcs的部落格