HanLP:3.6万Star的中文NLP工具包,覆盖130种语言
HanLP:3.6万Star的中文NLP工具包,覆盖130种语言
做中文NLP的,应该没人没听过HanLP。这个项目在GitHub上拿了3.6万Star,算得上中文自然语言处理领域的标杆级开源项目了。
它解决的问题说起来简单:给文本做各种分析。分词、词性标注、命名实体识别、依存句法分析、语义角色标注,这些NLP基础任务它全包了。而且不只是中文,支持130种语言,简繁中英日俄法德都能处理。

两套API,各取所需
HanLP设计了两套接口,思路很清晰。
轻量级的RESTful API,几KB大小,pip装完就能用,不用配GPU。适合快速验证想法,或者嵌入到移动应用里。Python、Go、Java都有客户端,调用方式基本一样,传入一段文字,返回完整的分析结果。
本地的native API,基于PyTorch和TensorFlow,适合需要处理海量数据或者对精度要求高的场景。多任务模型一次调用就能出分词、词性、命名实体、句法分析等多个结果,速度快省显存。单任务模型精度更高,通过流水线模式灵活组装。
两种API的语义设计完全一致,代码可以无缝切换。原型阶段用RESTful快速验证,上生产时换成native,不用改业务逻辑。
能做什么
具体支持的任务清单挺长的。
分词支持粗分和细分两种粒度。词性标注覆盖CTB、PKU、863多种标注集。命名实体识别支持PKU、MSRA、OntoNotes三套标准。依存句法分析、成分句法分析、语义依存分析、语义角色标注、抽象意义表示,每项任务都有对应的预训练模型。
除了这些基础NLP任务,还有文本分类、情感分析、语义相似度、语种检测、关键词提取、自动摘要、语法纠错等实用功能。

训练自己的模型也不难
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不是白来的。
更多推荐


所有评论(0)