HanLP 使用教程:從安裝到實戰應用
HanLP 是由hankcs開發的一款高效、多功能的中文自然語言處理(NLP)工具包,支持分詞、詞性標注、命名實體識別(NER)、依存句法分析、關鍵詞提取、文本摘要等任務。本教程將詳細介紹 HanLP 的安裝、基本功能及實戰應用。
1. HanLP 簡介
HanLP 具有以下特點:
? 高性能:基于 PyTorch/TensorFlow 2.x 實現,速度極快
? 多語言支持:支持中文、英文、日文等
? 多功能:涵蓋 NLP 常見任務(分詞、NER、句法分析等)
? 預訓練模型:提供多種預訓練模型(如 BERT、ALBERT)
? 簡單易用:Python API 友好,適合快速開發
2. 安裝 HanLP
HanLP 支持 Python 3.6+,推薦使用 pip
安裝:
pip install hanlp
如果需要 GPU 加速(推薦):
pip install hanlp[gpu]
3. 基本功能示例
(1) 分詞(Word Segmentation)
import hanlp# 加載預訓練分詞模型
tokenizer = hanlp.load(hanlp.pretrained.tok.COARSE_ELECTRA_SMALL_ZH)text = "HanLP是一款優秀的中文自然語言處理工具包。"
tokens = tokenizer(text)
print(tokens)
輸出:
['HanLP', '是', '一款', '優秀', '的', '中文', '自然語言處理', '工具包', '。']
(2) 詞性標注(Part-of-Speech Tagging)
tagger = hanlp.load(hanlp.pretrained.pos.CTB9_POS_ELECTRA_SMALL)
pos_tags = tagger(tokens)
print(list(zip(tokens, pos_tags)))
輸出:
[('HanLP', 'NR'), ('是', 'VC'), ('一款', 'CD'), ('優秀', 'JJ'), ('的', 'DEC'), ('中文', 'NN'), ('自然語言處理', 'NN'), ('工具包', 'NN'), ('。', 'PU')]
(3) 命名實體識別(NER)
recognizer = hanlp.load(hanlp.pretrained.ner.MSRA_NER_ELECTRA_SMALL_ZH)
entities = recognizer([tokens])
print(entities)
輸出:
[[('HanLP', 'ORGANIZATION')]]
(4) 依存句法分析(Dependency Parsing)
parser = hanlp.load(hanlp.pretrained.dep.CTB9_DEP_ELECTRA_SMALL)
dep_tree = parser([tokens])
print(dep_tree)
輸出(可視化依存關系):
HanLP ──? 是 (主謂關系)是 ──? 工具包 (動賓關系)一款 ──? 工具包 (定中關系)優秀 ──? 工具包 (定中關系)的 ──? 優秀 (右附加關系)中文 ──? 自然語言處理 (定中關系)自然語言處理 ──? 工具包 (定中關系)。 ──? 是 (標點符號)
4. 進階功能
(1) 關鍵詞提取(Keyphrase Extraction)
extractor = hanlp.load(hanlp.pretrained.keywords.TEXTRANK_ZH)
keywords = extractor(text, topk=3)
print(keywords)
輸出:
['自然語言處理', 'HanLP', '工具包']
(2) 文本摘要(Text Summarization)
summarizer = hanlp.load(hanlp.pretrained.summarization.LEMON_NEWS_ELECTRA_SMALL_ZH)
summary = summarizer(text, max_sentences=1)
print(summary)
輸出:
HanLP是一款優秀的中文自然語言處理工具包。
(3) 情感分析(Sentiment Analysis)
classifier = hanlp.load(hanlp.pretrained.classify.CHNSENTICORP_BERT_BASE_ZH)
sentiment = classifier("這家餐廳的服務很棒!")
print("積極" if sentiment else "消極")
輸出:
積極
5. 使用自定義模型
HanLP 支持加載本地或 Hugging Face 模型:
custom_model = hanlp.load("/path/to/your/model")
6. 常見問題
(1) 報錯 CUDA out of memory
- 原因:GPU 顯存不足。
- 解決:
hanlp.prefer_cpu() # 強制使用 CPU
(2) 下載模型失敗
- 解決:手動下載模型并指定路徑:
hanlp.load("/path/to/model.zip")
(3) 如何提高分詞精度?
- 使用更大的模型:
hanlp.load(hanlp.pretrained.tok.FINE_ELECTRA_LARGE_ZH)
7. 總結
任務 | 代碼示例 |
---|---|
分詞 | hanlp.load(hanlp.pretrained.tok.COARSE_ELECTRA_SMALL_ZH)(text) |
詞性標注 | hanlp.load(hanlp.pretrained.pos.CTB9_POS_ELECTRA_SMALL)(tokens) |
NER | hanlp.load(hanlp.pretrained.ner.MSRA_NER_ELECTRA_SMALL_ZH)([tokens]) |
依存分析 | hanlp.load(hanlp.pretrained.dep.CTB9_DEP_ELECTRA_SMALL)([tokens]) |
關鍵詞提取 | hanlp.load(hanlp.pretrained.keywords.TEXTRANK_ZH)(text, topk=3) |
📌 官方資源:
- HanLP GitHub
- HanLP 文檔
掌握 HanLP 后,你可以輕松處理中文 NLP 任務!🚀 如果有問題,歡迎留言討論。