LTP:哈工大出品的中文 NLP 工具集,5.2k Star

哈工大社会计算与信息检索研究中心(HIT-SCIR)开源的 LTP 语言技术平台,在 GitHub 上获得了 5,246 个 Star。

正文顶部截图

LTP 是一套中文自然语言处理工具集,提供了分词、词性标注、命名实体识别、语义角色标注、依存句法分析和语义依存分析六大核心功能。项目从第一代发展到如今的第四代,已经是国内 NLP 领域的经典工具之一。

README区域截图

LTP 4 底层基于预训练模型,相比早期基于传统机器学习的版本,各项任务准确率有明显提升。项目提供了 Tiny、Small、Base、Base1、Base2 五种模型规格。以 Base2 为例,分词准确率 99.18%,词性标注 98.69%,命名实体识别 95.97%。即便是最轻量的 Tiny 模型,分词准确率也有 96.8%,处理速度达到每秒 53 句,适合对延迟敏感的线上场景。

六大任务一览

LTP 覆盖了从浅层到深层的中文语言分析:

分词将连续中文文本切分为词语序列,是中文处理的基础环节。词性标注为每个词语标出名词、动词、形容词等类别。命名实体识别找出文本中的人名、地名、机构名。语义角色标注分析谓词与论元之间的语义关系。依存句法分析构建词语之间的依存结构树。语义依存分析在句法基础上进一步标注语义关系类别。

用户可以根据实际需求单独使用某个模块,也可以串联整套流水线。所有任务共享同一个模型编码层,一次编码即可完成全部分析,减少了重复计算开销。

安装与使用

通过 pip 安装即可:

pip install ltp

调用接口设计得很简洁:

from ltp import LTP

ltp = LTP()  # 默认加载 Small 模型
seg, hidden = ltp.seg(["他叫汤姆去拿外衣。"])
pos = ltp.pos(hidden)
ner = ltp.ner(hidden)
srl = ltp.srl(hidden)
dep = ltp.dep(hidden)
sdp = ltp.sdp(hidden)

模型支持自动下载,也接受本地路径。调用 ltp.available_models() 可以查看所有可选模型。除了 Python 接口,项目还提供了 C++、Rust、Java 语言绑定,方便在不同技术栈中调用。

技术实现

LTP 4 的模型全部基于 Electra 架构,在中文语料上做了预训练。各任务在 Electra 编码器之上加了一层轻量任务头:分词和词性标注使用 Linear 分类层,命名实体识别使用了 Relative Transformer 来建模位置关系,依存句法分析采用 BiAffine 加 Eisner 解码算法,语义角色标注则在 BiAffine 基础上加了 CRF 约束层。

这些实现既有工程上的实用性,在学术研究层面也有参考价值。项目团队发表了题为《N-LTP: A Open-source Neural Chinese Language Technology Platform with Pretrained Models》的论文,并出版了《自然语言处理:基于预训练模型的方法》一书作为配套参考资料。

协议说明

LTP 面向高校和科研机构免费开源,商业使用需要付费。在论文或科研成果中使用 LTP 时需要注明引用。这一协议在保持学术开放性的同时保护了知识产权。项目由哈工大 SCIR 实验室的冯云龙等人维护。

要注明引用。这一协议在保持学术开放性的同时保护了知识产权。项目由哈工大 SCIR 实验室的冯云龙等人维护。

Logo

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

更多推荐