HanLP:130种语言的多任务NLP工具包

HanLP 在 GitHub 上拿到了 36.3K Star。

这是韩晗(Han He)开发的一个多语言 NLP 库,基于 PyTorch 和 TensorFlow 2.x 构建,面向研究和生产环境。项目自 2018 年起持续迭代,v2.1 版本相关论文发表在 EMNLP 2021 上。

HanLP 的核心思路是把多个 NLP 任务塞进一个 Transformer 模型里联合训练。分词、词形还原、词性标注、词特征提取、依存句法分析、成分句法分析、语义角色标注、语义依存解析、抽象语义表示解析,总共 10 项任务,覆盖 Universal Dependencies 和 OntoNotes 语料库里的 130 种语言。传一句话进去,语法结构、实体关系、语义角色全部标注出来。

正文顶部截图

1、 两种接入方式

HanLP 提供了 RESTful API 和原生 Python API 两条路径。

RESTful 客户端包体积极小,几 KB 的量,适合移动端和敏捷开发。申请一个免费 auth key 就能调用,基于 CC BY-NC-SA 4.0 协议。接口设计干净,多语言文本可以混着传,同一句话里包含中英日三种语言,它能自动识别并处理。Python 和 Java 都有对应的客户端封装,几行代码就能跑起来。

原生 Python API 功能更完整。pip install hanlp 装好依赖,hanlp.load() 加载预训练模型就能用。多语言模型之外,中文、英文、日语各有单语模型可用。官方给出的基准测试里,单语模型在分词、NER、句法分析等任务上的精度比多语言模型高出几个百分点,追求精度的话建议优先选单语模型。

README区域截图

2、 训练和复现

NLP 工程里有个常见痛点:论文上的指标在自己机器上跑不出来。HanLP 的做法是固定随机种子,保证每个数字都能复现。官方给了个示例:用 BERT 做中文分词,SIGHAN2005 数据集上 6 分钟训练到 96.73%,每次跑结果都一样。项目明确把无法复现的问题列为最高优先级 bug。

训练 API 设计直接。TransformerTaggingTokenizer 类,配好数据集路径、预训练模型、epoch 数、优化器参数,调 fit() 开始训练,evaluate() 看结果。不需要自己写训练循环,也不用操心分布式调度。

3、 授权方式

代码用 Apache 2.0 协议,商用免费。预训练模型默认用 CC BY-NC-SA 4.0,非商业用途可以直接用,商业场景需要另外申请授权。想在商业产品里集成的话,联系作者单独拿授权就行。

4、 适合哪些人

  • NLP 研究者,需要一套可复现的基线系统做对比实验
  • 企业开发者,要在产品里集成分词、NER、句法分析等基础 NLP 能力
  • 多语言场景的团队,一次部署覆盖中英日等主要语种

础 NLP 能力

  • 多语言场景的团队,一次部署覆盖中英日等主要语种
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐