HanLP:3.6万Star的中文NLP工具包,覆盖130种语言

做中文NLP的,应该没人没听过HanLP。这个项目在GitHub上拿了3.6万Star,算得上中文自然语言处理领域的标杆级开源项目了。

它解决的问题说起来简单:给文本做各种分析。分词、词性标注、命名实体识别、依存句法分析、语义角色标注,这些NLP基础任务它全包了。而且不只是中文,支持130种语言,简繁中英日俄法德都能处理。

图片1

两套API,各取所需

HanLP设计了两套接口,思路很清晰。

轻量级的RESTful API,几KB大小,pip装完就能用,不用配GPU。适合快速验证想法,或者嵌入到移动应用里。Python、Go、Java都有客户端,调用方式基本一样,传入一段文字,返回完整的分析结果。

本地的native API,基于PyTorch和TensorFlow,适合需要处理海量数据或者对精度要求高的场景。多任务模型一次调用就能出分词、词性、命名实体、句法分析等多个结果,速度快省显存。单任务模型精度更高,通过流水线模式灵活组装。

两种API的语义设计完全一致,代码可以无缝切换。原型阶段用RESTful快速验证,上生产时换成native,不用改业务逻辑。

能做什么

具体支持的任务清单挺长的。

分词支持粗分和细分两种粒度。词性标注覆盖CTB、PKU、863多种标注集。命名实体识别支持PKU、MSRA、OntoNotes三套标准。依存句法分析、成分句法分析、语义依存分析、语义角色标注、抽象意义表示,每项任务都有对应的预训练模型。

除了这些基础NLP任务,还有文本分类、情感分析、语义相似度、语种检测、关键词提取、自动摘要、语法纠错等实用功能。

图片2

训练自己的模型也不难

HanLP提供了完整的训练脚本。官方文档里有个例子,在sighan2005 PKU语料库上,6分钟就能训练出一个分词模型,精度达到96.73%,超过了当时的学术界最佳结果。

HanLP承诺所有结果可复现,指定了随机数种子,跑出来的数字一定一样。这在NLP开源项目里是比较难得的品质。

一些细节

HanLP的语料库规模号称是世界上最大的多语种语料库。在数据处理上,它用的是完整版MSRA命名实体语料,而不是社区常用的阉割版。句法分析用的是Stanford Dependencies标准,而不是学术界沿用的Zhang and Clark标准。

项目作者在论文中提出了"Stem Cell Hypothesis",解释了多任务学习中注意力头的竞争问题,这也为HanLP的模型设计提供了理论支撑。

源代码Apache License 2.0,商用免费。中文预训练模型仅供研究和教学使用,多语种模型是CC BY-NC-SA 4.0。

如果你做中文NLP,HanLP基本是绕不过去的。功能全、模型多、文档完善、社区活跃,3.6万Star不是白来的。

LP基本是绕不过去的。功能全、模型多、文档完善、社区活跃,3.6万Star不是白来的。

Logo

脑启社区是一个专注类脑智能领域的开发者社区。欢迎加入社区,共建类脑智能生态。社区为开发者提供了丰富的开源类脑工具软件、类脑算法模型及数据集、类脑知识库、类脑技术培训课程以及类脑应用案例等资源。

更多推荐