自然語言處理工具包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 parse <<< `徐先生還具體幫助他確定了把畫雄鷹、松鼠和麻雀作為主攻目標。`
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 標點符號 _
伺服器
通過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版本和資料位置。
變數名 預設值 備註
HANLP_STATIC_ROOT pyhanlp所在安裝路徑的static資料夾 配置檔案hanlp.properties所在的目錄
HANLP_JAR_PATH pyhanlp所在安裝路徑的static資料夾 HanLP jar 包位置
HANLP_JVM_XMS 1g Java 虛擬機器 初始申請記憶體大小
HANLP_JVM_XMX 1g Java 虛擬機器 可佔用的最大記憶體
HANLP_GOOGLE_UA UA-XXXXX-X Google Analytics 網站 id
HANLP_VERBOSE 0 除錯日誌開關
注意:
使用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的部落格
相關文章
- HanLP 自然語言處理 for nodejsHanLP自然語言處理NodeJS
- hanlp自然語言處理包的基本使用--pythonHanLP自然語言處理Python
- 配置Hanlp自然語言處理進階HanLP自然語言處理
- 自然語言處理工具包 HanLP在 Spring Boot中的應用自然語言處理HanLPSpring Boot
- python呼叫自然語言處理工具hanlp記錄Python自然語言處理HanLP
- Spring Boot中對自然語言處理工具包hanlp的呼叫詳解Spring Boot自然語言處理HanLP
- NLP自然語言處理中的hanlp分詞例項自然語言處理HanLP分詞
- Hanlp自然語言處理中的詞典格式說明HanLP自然語言處理
- 如何編譯執行HanLP自然語言處理包編譯HanLP自然語言處理
- 自然語言處理工具python呼叫hanlp的方法步驟自然語言處理PythonHanLP
- 自然語言處理之:搭建基於HanLP的開發環境自然語言處理HanLP開發環境
- hanlp自然語言處理包的人名識別程式碼解析HanLP自然語言處理
- Hanlp自然語言處理工具的使用演練HanLP自然語言處理
- 開源自然語言處理工具包hanlp中CRF分詞實現詳解自然語言處理HanLPCRF分詞
- 自然語言處理工具python呼叫hanlp中文實體識別自然語言處理PythonHanLP
- 精通Python自然語言處理 2 :統計語言建模Python自然語言處理
- 精通Python自然語言處理 1 :字串操作Python自然語言處理字串
- 自然語言處理(NLP)系列(一)——自然語言理解(NLU)自然語言處理
- 自然語言處理NLP(四)自然語言處理
- 自然語言處理(NLP)概述自然語言處理
- 自然語言處理入門基礎之hanlp詳解自然語言處理HanLP
- 精通Python自然語言處理 3 :形態學Python自然語言處理
- 《Python自然語言處理實戰》連結表Python自然語言處理
- 自然語言處理的最佳實踐自然語言處理
- Python自然語言處理工具Python自然語言處理
- Hanlp自然語言處理工具之詞法分析器HanLP自然語言處理詞法分析
- Python自然語言處理實戰(1):NLP基礎Python自然語言處理
- 如何用Python處理自然語言?(Spacy與Word Embedding)Python
- [譯] 自然語言處理真是有趣!自然語言處理
- 自然語言處理:分詞方法自然語言處理分詞
- 自然語言處理中的語言模型預訓練方法自然語言處理模型
- 自然語言處理工具hanlp自定義詞彙新增圖解自然語言處理HanLP圖解
- 自然語言處理工具hanlp定製使用者詞條自然語言處理HanLP
- 自然語言處理工具HanLP-N最短路徑分詞自然語言處理HanLP分詞
- 使用 Python+spaCy 進行簡易自然語言處理Python自然語言處理
- Python 自然語言處理(基於jieba分詞和NLTK)Python自然語言處理Jieba分詞
- 自然語言處理NLP快速入門自然語言處理
- 自然語言處理之jieba分詞自然語言處理Jieba分詞