HanLP
面向生产环境的多语种NLP工具包,一库搞定分词/词性标注/NER/句法分析/语义角色标注等10类任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
面向生产环境的多语种NLP工具包,一库搞定分词/词性标注/NER/句法分析/语义角色标注等10类任务
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。

HanLP: Han Language Processing — 面向生产环境的多语种NLP工具包
想象一下,你手握一份十万字的中文合同,需要在十分钟内找出里面所有的公司名称、人名、日期,以及这些主体之间的法律关系——纯靠人工阅读,不眠不休也得大半天。而 HanLP 正在做的事情,就是让计算机在几秒钟内完成这项工作:它不仅能「认识」文本中的每个词,还能理解词与词之间的依存关系,甚至进一步识别出「谁对谁做了什么」这样的语义结构。
这不是科幻。GitHub 上超过 36,000 颗星、每年数千万次 PyPI 下载的 HanLP,早已广泛存在于中国科技企业的生产系统中——从阿里的智能客服到腾讯的舆情分析,从字节跳动的内容审核到中小创业团队的文本处理流水线。区别于学术界那些「论文效果惊艳、工程落地困难」的模型,HanLP 从一开始就是为生产环境设计的:功能完整、性能高效、接口友好、自定义灵活。
HanLP 的作者是 GitHub 用户 @hankcs(何晗),一个从日语专业自学转行NLP的程序员。项目诞生于 2012 年,彼时中文 NLP 工具极度匮乏——Stanford NLP 是英文的、Jieba 只能做分词、中科院的 ICTCLAS 闭源且更新缓慢。hankcs 抱着「与其抱怨没有好用的中文工具,不如自己写一个」的朴素想法,开始在 GitHub 上连载代码。
这个选择的时机恰到好处。2013 年深度学习浪潮席卷 NLP,Word2Vec、LSTM、BERT 等里程碑式技术相继诞生。HanLP 的架构也随之演进:v1.x 基于 CRF 和机器学习模型,v2.x 则全面转向深度学习,以 PyTorch 和 TensorFlow 2.x 为后端,支持 Transformer 架构和预训练模型。2020 年发布的 2.1 版本是一个标志性节点——它将中文 NLP 的能力从单一语种扩展到 130 种语言,涵盖中文、英文、日文、韩文以及大量小语种。
有意思的是,HanLP 的作者至今保持着每年数十次提交的活跃度,README 中的「Reproducibility Promise」体现了 hankcs 的工程师洁癖:每个数字都可复现,随机种子固定,结果精确到小数点后两位。任何声称达到了 SOTA 但无法复现的项目,在 HanLP 的 issue 区会被作为 fatal bug 处理。
HanLP 2.1 提供了 10 种联合任务能力,全部集中在一个统一的接口下:
| 任务类型 | 说明 |
|---|---|
| 分词(Tokenization) | 将连续文本切分为词序列,支持简繁中英日韩等 |
| 词性标注(POS Tagging) | 标注每个词的词性(名词/动词/形容词等) |
| 词形还原(Lemmatization) | 将词还原为原形(如「running」→「run」) |
| 命名实体识别(NER) | 识别人名、地名、机构名、时间等实体 |
| 依存句法分析(Dependency Parsing) | 分析词语间的句法从属关系 |
| 成分句法分析(Constituency Parsing) | 识别句子的短语结构树 |
| 语义角色标注(SRL) | 标注「施事」「受事」等语义角色 |
| 语义依存分析(Semantic Dependency Parsing) | 超越句法结构的语义关系分析 |
| AMR 解析(Abstract Meaning Representation) | 将句子转化为抽象语义图 |
| 指代消解(Coreference Resolution) | 将不同表述指向同一实体 |
对于中文场景,HanLP 提供了专门的单语种模型(如 BERT_BASE_CHINESE),相比多语种模型精度更高、速度更快。此外还支持文本分类、情感分析、文本相似度计算等下游任务。
HanLP 的技术栈构建在现代深度学习框架之上,核心设计哲学是多任务学习(Multi-Task Learning, MTL)——用一个共享的 Transformer 编码器,同时训练多个 NLP 任务,从而实现知识迁移、提升效率。
主力技术栈:
代码目录结构(核心部分):
hanlp/
├── components/ # NLP 组件集合
│ ├── tokenizers/ # 分词器(TransformerTaggingTokenizer 等)
│ ├── taggers/ # 序列标注器
│ ├── ner/ # 命名实体识别
│ ├── parsers/ # 句法/语义分析器
│ ├── classifiers/ # 文本分类器
│ ├── srl/ # 语义角色标注
│ ├── amr/ # AMR 解析
│ ├── mtl/ # 多任务学习框架
│ └── distillation/ # 模型蒸馏
├── layers/ # 自定义神经网络层
├── losses/ # 损失函数
├── metrics/ # 评估指标
├── optimizers/ # 优化器封装
├── pretrained/ # 预训练模型管理
└── utils/ # 工具函数
可复现性承诺: HanLP 在每个预训练模型的文档中标注了具体的 corpora(训练语料)、epoch 数和随机种子。README 中的分词语料实验可在 6 分钟内复现 96.73% 的准确率,这种透明度在开源 NLP 项目中相当罕见。
RESTful API(适合快速接入、服务器资源有限的场景):
HanLP 官方提供在线 API 端点(https://hanlp.hankcs.com/api),支持 Python、Java、Go 多语言客户端。以 Python 为例:
pip install hanlp_restful
from hanlp_restful import HanLPClient
HanLP = HanLPClient('https://hanlp.hankcs.com/api', auth=None, language='mul')
result = HanLP.parse("2021年 HanLP为生产环境带来多语种NLP技术。")
该方式的优势是零部署成本,匿名用户可用,但有频率限制;申请免费 auth key 后可获得更稳定的配额。
Native API(适合生产环境、追求性能的场景):
pip install hanlp
import hanlp
HanLP = hanlp.load(hanlp.pretrained.mtl.UD_ONTONOTES_TOK_POS_LEM_FEA_NER_SRL_DEP_SDP_CON_XLMR_BASE)
result = HanLP(['In 2021, HanLP delivers multilingual NLP techniques.'])
本地部署后完全离线可用,支持 GPU 加速,适合需要处理大量文本的企业场景。
入门门槛很低: 几行代码即可完成分词、词性标注等基础任务。但上限也很高——用户可以完全自定义模型架构、训练数据、优化器参数,甚至在 6 分钟内复现一个 SOTA 分词器。HanLP 不强制用户写深度学习代码,但为专业 NLP 工程师提供了足够的扩展空间。
训练自己的模型:
tokenizer = TransformerTaggingTokenizer()
tokenizer.fit(
SIGHAN2005_PKU_TRAIN_ALL,
SIGHAN2005_PKU_TEST,
save_dir='data/model/cws_sighan2005_pku_bert_base_96.7',
transformer='bert-base-chinese',
max_seq_len=300,
epochs=3,
)
这种方式让领域专家可以在不深入理解底层实现的情况下,用自己的语料训练领域专属模型——法律文书、医疗记录、金融合同等垂直场景的 NLP 需求,都可以借助这个接口落地。
尽管 HanLP 能力全面,但在使用中也需要注意几点:
1. 深度学习模型体积较大: 完整的多任务模型可达数 GB,对存储和内存有一定要求。对于移动端或边缘设备场景,建议使用官方 RESTful API 或对模型进行蒸馏压缩。
2. 生产部署需要额外配置: 不提供 Docker 镜像,需要手动安装 PyTorch/TensorFlow 环境和预训练模型,对运维经验不足的团队有一定挑战。
3. 社区响应以中文为主: 作为中文 NLP 领域的标杆项目,HanLP 的 issue 区、论坛和文档以中文为主,英文用户可能需要借助翻译工具。不过文档质量高,API 设计清晰,实际使用障碍不大。
4. 2.x 版本 API 与 1.x 不兼容: 从 v1 迁移到 v2 需要代码改写,但官方提供了迁移指南,且 v2 的能力提升远大于迁移成本。
HanLP 的价值在于降低了 NLP 技术的使用门槛——它不是简单封装某个模型,而是将多年的 NLP 学术成果(多任务学习、Transformer 架构、联合学习)整合为开箱即用的工具。开发者不需要读完 EMNLP/ACL 的所有论文,也能用上最新的 NLP 技术。
从 Star 历史来看,HanLP 在 2022-2023 年 BERT 热潮期间增长显著,这与大型预训练模型带动的 NLP 应用爆发高度吻合。作为中国 NLP 开源领域的代表性项目,HanLP 与 spaCy(英文)、MeCab(日文)共同构成了多语种 NLP 工具链的重要一环。
总结: HanLP 是一款功能全面、性能可靠、社区活跃的多语种 NLP 工具包,适合需要快速集成中文/多语种 NLP 能力的开发者和企业。虽然缺乏 Docker 一键部署,但通过 pip 安装和详尽的文档,上手成本可控。适合舆情分析、智能客服、知识图谱构建、文本审核等生产场景。