pyhanlp:hanlp的python介面

adnb34g發表於2019-04-12


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

 

安裝

pip install pyhanlp

使用命令 hanlp來驗證安裝,如因網路等原因自動安裝失敗,可參考手動配置或Windows指南。

命令列

中文分詞

使用命令 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升級到最新版。該命令會獲取HanLP主專案最新版本並自動下載安裝。

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

 

API

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

 

from pyhanlp import *

 

print(HanLP.segment('你好,歡迎在Python中呼叫HanLP的API'))

for term in HanLP.segment('下雨天地面積水'):

    print('{}\t{}'.format(term.word, term.nature)) # 獲取單詞與詞性

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主專案文件和demos目錄以瞭解更多。呼叫更底層的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

如果你需要多執行緒安全性,可使用 SafeJClass;如果你需要延遲載入,可使用LazyLoadingJClass。如果你經常使用某個類,歡迎將其寫入pyhanlp/__init__.py中並提交pull request,謝謝!

 

與其他專案共享 data

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

 

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

 

hanlp segment --config path/to/another/hanlp.properties

 

測試

git clone https://github.com/hankcs/pyhanlp.git

cd pyhanlp

pip install -e .

python tests/test_hanlp.py

 

文章轉載自 github.com/hankcs/pyhanlp


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31524777/viewspace-2641136/,如需轉載,請註明出處,否則將追究法律責任。

相關文章