trankit

GitHub
793 107 简单 5 次阅读 2周前Apache-2.0音频开发框架语言模型图像
AI 解读 由 AI 自动生成,仅供参考

Trankit 是一个轻量级、基于 Transformer 的多语言自然语言处理(NLP)Python 工具包,支持超过 100 种语言的文本分析任务。它提供开箱即用的预训练模型(覆盖 56 种语言),可自动完成分词、词性标注、依存句法分析等基础 NLP 流程,还能在无需指定语言的情况下自动识别输入文本语种(Auto Mode)。相比同类工具如 Stanza,Trankit 在多项任务上表现更优,同时兼顾运行速度与内存效率,适合资源有限的环境使用。Trankit 特别适合 NLP 领域的研究人员和开发者快速构建多语言应用,也通过命令行接口降低了非编程用户的使用门槛。其核心模型基于 XLM-Roberta Large,在 Universal Dependencies v2.5 数据集上取得了当前领先的性能。

使用场景

一家跨国电商公司需要分析来自全球用户的商品评论,这些评论涵盖英语、西班牙语、法语、越南语等十余种语言,用于情感分析和关键词提取。

没有 trankit 时

  • 需为每种语言单独集成不同的 NLP 工具(如 spaCy、Stanza、Stanford CoreNLP),依赖复杂且维护成本高。
  • 多语言文本需预先人工标注或调用额外的语言识别服务,流程繁琐且易出错。
  • 部分低资源语言(如越南语、泰语)缺乏高质量的预训练模型,导致分词和依存句法分析准确率低。
  • 整体处理速度慢,内存占用高,难以部署到资源受限的服务器环境。
  • 团队中非 Python 开发人员(如数据分析师)难以直接使用现有工具处理原始文本。

使用 trankit 后

  • 仅需安装一个轻量级 Python 包,即可统一处理 56 种语言的分词、词性标注、依存句法分析等任务。
  • 启用 Auto Mode 后,自动识别输入文本语言,无需预处理或额外调用语言检测接口。
  • 基于 XLM-Roberta large 的预训练模型显著提升低资源语言的解析精度,越南语等语言的 UAS 提升超 10%。
  • 推理速度快、内存占用低,在相同硬件下吞吐量比 Stanza 提高约 30%,适合线上批量处理。
  • 提供命令行接口,非开发人员可直接通过终端处理文本文件,快速生成结构化分析结果。

trankit 以统一、高效、高精度的方式解决了多语言 NLP 流水线的落地难题。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU
  • 非必需,但支持 NVIDIA GPU 加速
  • 未说明具体显卡型号、显存大小和 CUDA 版本
内存

未说明

依赖
notes安装时若遇 transformers 兼容性问题,建议使用 trankit==1.1.0;模型默认从 Hugging Face 下载,首次运行需联网并预留存储空间;支持命令行接口,无需编程即可使用。
python未明确说明,但 PyPI 页面显示支持 Python 3.6+(根据 badge 推断)
torch
transformers
langid
adapter-transformers
numpy
trankit hero image

快速开始

Trankit:一个轻量级的基于 Transformer 的多语言自然语言处理 Python 工具包

我们的 Trankit 技术论文 荣获了 EACL 2021 的杰出演示论文奖(Outstanding Demo Paper Award)。如果您在研究中使用了 Trankit,请引用该论文。

@inproceedings{nguyen2021trankit,
      title={Trankit: A Light-Weight Transformer-based Toolkit for Multilingual Natural Language Processing}, 
      author={Nguyen, Minh Van and Lai, Viet Dac and Veyseh, Amir Pouran Ben and Nguyen, Thien Huu},
      booktitle="Proceedings of the 16th Conference of the European Chapter of the Association for Computational Linguistics: System Demonstrations",
      year={2021}
}

:boom: :boom: :boom: Trankit v1.0.0 发布:

  • 新增 56 种语言的 90 个预训练的基于 Transformer 的流水线(pipeline)。这些新流水线使用 XLM-Roberta large 进行训练,在 Universal Dependencies v2.5 语料库的 90 个树库(treebank)上显著提升了性能。您可以在这里查看最新性能表现。此页面展示了如何使用这些新流水线。

  • 多语言流水线支持自动模式(Auto Mode)。在自动模式下,输入文本的语言将被自动检测,使得多语言流水线无需指定语言即可处理输入。请参阅此处了解如何启用自动模式。感谢 loretoparisi 提出此建议。

  • 命令行接口(Command-line interface)现已可用。这有助于不熟悉 Python 编程语言的用户轻松使用 Trankit。相关教程请见此页面

Trankit 是一个轻量级的基于 Transformer 的 Python 多语言自然语言处理(NLP)工具包。它为 100 多种语言提供了可训练的 NLP 基础任务流水线,并为 56 种语言提供了 90 个可下载的预训练流水线。

Trankit 在许多任务上优于当前最先进的多语言工具包 Stanza(StanfordNLP),涵盖 56 种语言的 90 个 Universal Dependencies v2.5 树库,同时在内存占用和速度方面依然高效,使其适用于普通用户

具体而言,对于英语,Trankit 在句子分割(+9.36%)和依存句法分析(UAS 提升 +5.07%,LAS 提升 +5.81%)方面显著优于 Stanza。对于阿拉伯语,我们的工具包在句子分割性能上提升了 16.36%;而中文在依存句法分析的 UAS 和 LAS 上分别提升了 14.50%15.00%。Trankit、Stanza 以及其他流行 NLP 工具包(如 spaCy、UDPipe)在其他语言上的详细对比,请参见我们的文档页面中的此处

我们还为 Trankit 创建了一个演示网站,地址为:http://nlp.uoregon.edu/trankit

安装

Trankit 可通过以下任一方式轻松安装:

[2025 年 7 月 23 日:我们当前服务器存在问题。请暂时仅从源码安装 Trankit。模型将从 https://huggingface.co/uonlp/trankit/tree/main/models 下载。稍后我们将更新 pip 安装方式。]

使用 pip

pip install trankit

该命令将自动安装 Trankit 及其所有依赖包。

从源码安装

git clone https://github.com/nlp-uoregon/trankit.git
cd trankit
pip install -e .

这将首先克隆我们的 GitHub 仓库,然后安装 Trankit。

解决 Trankit 与 Transformers 的兼容性问题

旧版本的 Trankit 在使用较新版本的 transformers 时遇到了兼容性问题。要解决此问题,请按如下方式安装新版 Trankit:

pip install trankit==1.1.0

如果在安装过程中遇到任何其他问题,请在此处 提交 issue 告知我们。谢谢!

使用方法

Trankit 可以处理未分词(原始)或已分词的字符串输入,支持句子级和文档级处理。目前,Trankit 支持以下任务:

  • 句子分割(Sentence segmentation)
  • 分词(Tokenization)
  • 多词标记扩展(Multi-word token expansion)
  • 词性标注(Part-of-speech tagging)
  • 形态特征标注(Morphological feature tagging)
  • 依存句法分析(Dependency parsing)
  • 命名实体识别(Named entity recognition)

初始化一个预训练流水线

以下代码展示了如何为英语初始化一个预训练流水线;该流水线将在 GPU 上运行,自动下载预训练模型,并将其存储到指定的缓存目录中。如果预训练模型已存在,Trankit 将不会重复下载。

from trankit import Pipeline

初始化一个多语言流水线(pipeline)

p = Pipeline(lang='english', gpu=True, cache_dir='./cache')


#### 对输入执行所有任务
初始化一个预训练的流水线后,即可用于对输入执行所有任务,如下所示。如果输入是一个句子,则必须将参数 `is_sent` 设置为 True。
```python
from trankit import Pipeline

p = Pipeline(lang='english', gpu=True, cache_dir='./cache')

######## 文档级处理 ########
untokenized_doc = '''Hello! This is Trankit.'''
pretokenized_doc = [['Hello', '!'], ['This', 'is', 'Trankit', '.']]

# 对输入执行所有任务
processed_doc1 = p(untokenized_doc)
processed_doc2 = p(pretokenized_doc)

######## 句子级处理 ####### 
untokenized_sent = '''This is Trankit.'''
pretokenized_sent = ['This', 'is', 'Trankit', '.']

# 对输入执行所有任务
processed_sent1 = p(untokenized_sent, is_sent=True)
processed_sent2 = p(pretokenized_sent, is_sent=True)

请注意,尽管预分词(pretokenized)的输入始终可以被处理,但对于需要多词单元(MWT, Multi-Word Token)扩展的语言(如阿拉伯语或法语),使用预分词输入可能并不合适。请查阅此表格中的“Requires MWT expansion?”(是否需要 MWT 扩展?)一列,以确认特定语言是否需要多词单元扩展。
更多详细示例,请参阅我们的文档页面

多语言使用

从 v1.0.0 版本开始,Trankit 支持一种便捷的自动模式(Auto Mode),用户在处理输入前无需手动设置特定语言。在自动模式下,Trankit 会自动检测输入的语言,并使用对应的语言专用模型,从而避免在多语言流水线中频繁切换语言。

from trankit import Pipeline

p = Pipeline('auto')

# 对英文输入进行分词(Tokenizing)
en_output = p.tokenize('''I figured I would put it out there anyways.''') 

# 对法文输入进行词性标注(POS)、形态标注(Morphological tagging)和依存句法分析(Dependency parsing)
fr_output = p.posdep('''On pourra toujours parler à propos d'Averroès de "décentrement du Sujet".''')

# 对越南语输入进行命名实体识别(NER tagging)
vi_output = p.ner('''Cuộc tiêm thử nghiệm tiến hành tại Học viện Quân y, Hà Nội''')

在此示例中,使用代码名 'auto' 初始化了一个处于自动模式的多语言流水线。更多信息请访问此页面。需要注意的是,除了新的自动模式外,原有的手动模式(manual mode)仍然可以像以前一样使用。

构建自定义流水线

通过 Trankit 中的 TPipeline 类,训练自定义流水线非常简单。下面展示了如何在自定义数据上训练一个词和句子分割器(token and sentence splitter)。

from trankit import TPipeline

tp = TPipeline(training_config={
    'task': 'tokenize',
    'save_dir': './saved_model',
    'train_txt_fpath': './train.txt',
    'train_conllu_fpath': './train.conllu',
    'dev_txt_fpath': './dev.txt',
    'dev_conllu_fpath': './dev.conllu'
    }
)

trainer.train()

有关训练和加载自定义流水线的详细指南,请参见此处

共享您的自定义流水线

如果您希望与其他用户共享您的自定义流水线,请在此处创建一个 issue,并提供以下信息:

  • 您用于训练模型的训练数据,例如数据许可证、数据来源以及一些数据统计信息(即训练集、开发集和测试集的大小)。
  • 使用官方评估脚本在您的测试数据上得到的流水线性能指标。
  • 您训练好的模型文件的可下载链接(Google Drive 链接尤佳)。

收到您的请求后,我们将检查并测试您的流水线。一切确认无误后,我们会通过新的语言代码使这些流水线可供其他用户使用。

致谢

本项目得到了美国国家情报总监办公室(ODNI)下属的情报高级研究计划署(IARPA)的支持,资助合同号为 2019-19051600006,隶属于文本增强抽取以提升检索能力(BETTER)计划

我们使用 XLM-RobertaAdapters 作为不同任务和语言共享的多语言编码器。AdapterHub 被用于实现基于 Adapters 的即插即用机制。为了加快开发进度,MWT 扩展器(MWT expander)和词形还原器(lemmatizer)的实现借鉴自 Stanza。语言检测模块则借助了 langid 库。

版本历史

v1.1.02021/06/19
v1.0.12021/04/03
v1.0.02021/03/31

常见问题

相似工具推荐

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|今天
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

139k|★★☆☆☆|今天
开发框架Agent语言模型

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

107.7k|★★☆☆☆|2天前
开发框架图像Agent

NextChat

NextChat 是一款轻量且极速的 AI 助手,旨在为用户提供流畅、跨平台的大模型交互体验。它完美解决了用户在多设备间切换时难以保持对话连续性,以及面对众多 AI 模型不知如何统一管理的痛点。无论是日常办公、学习辅助还是创意激发,NextChat 都能让用户随时随地通过网页、iOS、Android、Windows、MacOS 或 Linux 端无缝接入智能服务。 这款工具非常适合普通用户、学生、职场人士以及需要私有化部署的企业团队使用。对于开发者而言,它也提供了便捷的自托管方案,支持一键部署到 Vercel 或 Zeabur 等平台。 NextChat 的核心亮点在于其广泛的模型兼容性,原生支持 Claude、DeepSeek、GPT-4 及 Gemini Pro 等主流大模型,让用户在一个界面即可自由切换不同 AI 能力。此外,它还率先支持 MCP(Model Context Protocol)协议,增强了上下文处理能力。针对企业用户,NextChat 提供专业版解决方案,具备品牌定制、细粒度权限控制、内部知识库整合及安全审计等功能,满足公司对数据隐私和个性化管理的高标准要求。

87.6k|★★☆☆☆|今天
开发框架语言模型

ML-For-Beginners

ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。

85k|★★☆☆☆|今天
图像数据工具视频

ragflow

RAGFlow 是一款领先的开源检索增强生成(RAG)引擎,旨在为大语言模型构建更精准、可靠的上下文层。它巧妙地将前沿的 RAG 技术与智能体(Agent)能力相结合,不仅支持从各类文档中高效提取知识,还能让模型基于这些知识进行逻辑推理和任务执行。 在大模型应用中,幻觉问题和知识滞后是常见痛点。RAGFlow 通过深度解析复杂文档结构(如表格、图表及混合排版),显著提升了信息检索的准确度,从而有效减少模型“胡编乱造”的现象,确保回答既有据可依又具备时效性。其内置的智能体机制更进一步,使系统不仅能回答问题,还能自主规划步骤解决复杂问题。 这款工具特别适合开发者、企业技术团队以及 AI 研究人员使用。无论是希望快速搭建私有知识库问答系统,还是致力于探索大模型在垂直领域落地的创新者,都能从中受益。RAGFlow 提供了可视化的工作流编排界面和灵活的 API 接口,既降低了非算法背景用户的上手门槛,也满足了专业开发者对系统深度定制的需求。作为基于 Apache 2.0 协议开源的项目,它正成为连接通用大模型与行业专有知识之间的重要桥梁。

77.1k|★★★☆☆|2天前
Agent图像开发框架