我們的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庫。