我们的Trankit技术论文在EACL 2021上获得了杰出的演示纸奖。如果您在研究中使用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 }
}90个针对56种语言的新预审预测的基于变压器的管道。新管道经过XLM-ROBERTA大型训练,这进一步提高了超过90个环球依赖关系v2.5语料库的treebanks的性能。在此处查看新表演。此页面向您展示了如何使用新管道。
多语言管道的自动模式。在自动模式下,将自动检测到输入的语言,从而使多语言管道能够处理输入而无需指定其语言。查看如何在此处打开自动模式。感谢Loretoparisi对此的建议。
命令行接口现在可以使用。这可以帮助不熟悉Python编程语言使用Trankit的用户。查看此页面上的教程。
Trankit是一种基于轻型变压器的Python工具包,用于多语言自然语言处理(NLP)。它为100多种语言的基本NLP任务提供了可训练的管道,以及56种语言的90个可下载的验证管道。
在许多任务中, Trankit优于当前最新的多语言工具包(StanfordNLP),超过90个通用依赖关系v2.5 Treebanks的56种不同语言,同时仍然有效地使用内存使用和速度,使其适用于一般用户。
特别是,对于英语,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:
pip install trankit
该命令将自动安装Trankit和所有依赖软件包。
git clone https://github.com/nlp-uoregon/trankit.git
cd trankit
pip install -e .
这将首先克隆我们的github存储库并安装Trankit。
使用最新版本的变压器时,Trankit的先前版本遇到了兼容性问题。要解决此问题,请安装新版本的Trankit如下:
pip install trankit==1.1.0
如果您在安装方面遇到任何其他问题,请在此处提出一个问题以告知我们。谢谢。
Trankit可以在句子和文档级别处理未经使用(RAW)或伪造的字符串的输入。当前,Trankit支持以下任务:
以下代码显示了如何初始化的英语管道。指示在GPU上运行,自动下载验证的型号,然后将其存储到指定的高速缓存目录中。如果已经存在Trankit,则不会下载验证的模型。
from trankit import Pipeline
# initialize a multilingual pipeline
p = Pipeline ( lang = 'english' , gpu = True , cache_dir = './cache' )初始化了预估计的管道后,它可用于处理所有任务上的输入,如下所示。如果输入是句子,则必须将is_sent设置为true。
from trankit import Pipeline
p = Pipeline ( lang = 'english' , gpu = True , cache_dir = './cache' )
######## document-level processing ########
untokenized_doc = '''Hello! This is Trankit.'''
pretokenized_doc = [[ 'Hello' , '!' ], [ 'This' , 'is' , 'Trankit' , '.' ]]
# perform all tasks on the input
processed_doc1 = p ( untokenized_doc )
processed_doc2 = p ( pretokenized_doc )
######## sentence-level processing #######
untokenized_sent = '''This is Trankit.'''
pretokenized_sent = [ 'This' , 'is' , 'Trankit' , '.' ]
# perform all tasks on the input
processed_sent1 = p ( untokenized_sent , is_sent = True )
processed_sent2 = p ( pretokenized_sent , is_sent = True )请注意,尽管可以始终处理伪造的输入,但使用需要多词的语言进行多句的输入,这些语言需要多词的代币扩展,例如阿拉伯语或法语,可能不是正确的方法。请查看列Requires MWT expansion?该表查看特定语言是否需要多字令牌扩展。
有关更详细的示例,请查看我们的文档页面。
从版本v1.0.0开始,Trankit支持一个方便的自动模式,在该模式下,用户在处理输入之前不必设置特定语言活动。在自动模式下,Trankit将自动检测输入的语言并使用相应的语言特定模型,从而避免在多语言管道中在语言之间来回切换。
from trankit import Pipeline
p = Pipeline ( 'auto' )
# Tokenizing an English input
en_output = p . tokenize ( '''I figured I would put it out there anyways.''' )
# POS, Morphological tagging and Dependency parsing a French input
fr_output = p . posdep ( '''On pourra toujours parler à propos d'Averroès de "décentrement du Sujet".''' )
# NER tagging a Vietnamese input
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'用于在自动模式下初始化多语言管道。有关更多信息,请访问此页面。请注意,除了新的自动模式外,手动模式仍然可以像以前一样使用。
通过Trankit通过TPipeline训练定制管道很容易。在下面,我们显示如何在定制数据上训练令牌和句子分离器。
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 ()可以在此处找到有关培训和加载定制管道的详细指南
如果您想与其他用户共享定制的管道。请在此处创建一个问题,并为我们提供以下信息:
该项目已得到国家情报主任(ODNI),情报高级研究项目活动(IARPA)的支持,这项项目通过IARPA合同2019-19051600006提供了从文本提取到增强检索(更好)计划的更好提取。
我们使用XLM-Roberta和适配器作为我们共享的多语言编码器,用于不同的任务和语言。适配Hub用于使用适配器实现我们的插件机制。为了加快开发过程,MWT扩展器和Lemmatizer的实现源于Stanza。为了实现语言检测模块,我们利用Langid库。