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 任务!🚀 如果有问题,欢迎留言讨论。