Unser technisches Papier für Trankit wurde bei EACL 2021 mit dem Outstanding Demo Paper Award ausgezeichnet. Bitte zitieren Sie das Papier, wenn Sie Trankit in Ihrer Forschung verwenden.
@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 neue vorbereitete transformatorbasierte Pipelines für 56 Sprachen . Die neuen Pipelines sind mit XLM-Roberta Large ausgebildet, was die Leistung weiter über 90 Baumbänken der universellen Abhängigkeiten v2.5 Corpus erhöht. Schauen Sie sich die neue Leistung hier an. Diese Seite zeigt Ihnen, wie Sie die neuen Pipelines verwenden.
Auto -Modus für mehrsprachige Pipelines . Im Auto -Modus wird die Sprache der Eingabe automatisch erkannt, sodass die mehrsprachigen Pipelines die Eingabe ohne Angabe ihrer Sprache verarbeiten können. Sehen Sie sich hier an, wie Sie den Auto -Modus einschalten. Vielen Dank an Loretoparisi für Ihren Vorschlag dazu.
Die Befehlszeilenschnittstelle ist jetzt zur Verwendung verfügbar. Dies hilft Benutzern, die mit Python -Programmiersprache nicht vertraut sind. Verwenden Sie Trankit leicht. Schauen Sie sich die Tutorials auf dieser Seite an.
Trankit ist ein leichter transformatorbasiertes Python- Toolkit für die mehrsprachige Verarbeitung natürlicher Sprache (NLP). Es bietet eine trainierbare Pipeline für grundlegende NLP -Aufgaben über 100 Sprachen und 90 herunterladbare Pipelines für 56 Sprachen.
Trankit übertrifft die aktuelle hochmoderne mehrsprachige Toolkit-Strophe (Stanfordnlp) in vielen Aufgaben über 90 universelle Abhängigkeiten v2.5 Baumbankbänke von 56 verschiedenen Sprachen, während sie dennoch für Speicherverwendung und -geschwindigkeit effizient sind, wodurch es für Verallgemeinerungen verwendet werden kann .
Insbesondere für Englisch ist Trankit bei der Satzsegmentierung ( +9,36% ) und der Analyse von Abhängigkeiten ( +5,07% für UAS und +5,81% für LAS) signifikant besser als die Strophe. Für Arabisch verbessert unser Toolkit die Segmentierungsleistung der Satzsegmentierung erheblich um 16,36% , während Chinesen 14,50% und 15,00% Verbesserung der UAS und LAS für die Abhängigkeitsvorsorge beobachten. Ein detaillierter Vergleich zwischen Trankit, Stanza und anderen beliebten NLP -Toolkits (dh Spacy, Udpipe) in anderen Sprachen finden Sie hier auf unserer Dokumentationsseite.
Wir haben auch eine Demo -Website für Trankit erstellt, die unter: http://nlp.uoregon.edu/trankit gehostet wird
Trankit kann einfach über eine der folgenden Methoden installiert werden:
pip install trankit
Der Befehl würde Trankit und alle abhängigen Pakete automatisch installieren.
git clone https://github.com/nlp-uoregon/trankit.git
cd trankit
pip install -e .
Dies würde zuerst unser Github -Repo klonen und Trankit installieren.
Frühere Versionen von Trankit sind auf das Kompatibilitätsproblem bei der Verwendung neuer Versionen von Transformatoren gestoßen. Um dieses Problem zu beheben, installieren Sie bitte die neue Version von Trankit wie folgt:
pip install trankit==1.1.0
Wenn Sie auf ein anderes Problem mit der Installation stoßen, wecken Sie hier bitte ein Problem, um uns mitzuteilen. Danke.
Trankit kann auf Satz- und Dokumentenebene Eingänge verarbeiten, die nicht mehr (rohe) oder prterkusizierte Zeichenfolgen werden. Derzeit unterstützt Trankit die folgenden Aufgaben:
Der folgende Code zeigt, wie eine vorgezogene Pipeline für Englisch initialisiert wird. Es wird angewiesen, auf GPU auszuführen, automatisch vorgezogene Modelle herunterzuladen und sie in das angegebene Cache -Verzeichnis zu speichern. Trankit lädt keine vorbereiteten Modelle herunter, wenn sie bereits existieren.
from trankit import Pipeline
# initialize a multilingual pipeline
p = Pipeline ( lang = 'english' , gpu = True , cache_dir = './cache' ) Nach der Initialisierung einer vorbereiteten Pipeline kann sie verwendet werden, um die Eingabe für alle Aufgaben zu verarbeiten, wie unten gezeigt. Wenn der Eingang ein Satz ist, muss das Tag is_sent auf true eingestellt werden.
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 ) Beachten Sie, dass, obwohl Pretokenized-Eingänge immer verarbeitet werden können, und die Verwendung von prterkuzierten Eingaben für Sprachen, die eine Multi-Wörter-Token-Expansion erfordern, wie Arabisch oder Französisch möglicherweise nicht der richtige Weg sind. Bitte überprüfen Sie die Spalte Requires MWT expansion? von dieser Tabelle, um festzustellen, ob eine bestimmte Sprache eine Multi-Wörter-Token-Expansion erfordert oder nicht.
Ausführlichere Beispiele finden Sie auf unserer Dokumentationsseite.
Ab Version V1.0.0 unterstützt Trankit einen praktischen Auto -Modus, in dem Benutzer vor der Verarbeitung der Eingabe keine bestimmte Sprache einstellen müssen. Im Auto-Modus erkennt Trankit automatisch die Sprache der Eingabe und verwendet die entsprechenden sprachspezifischen Modelle, wodurch es vermieden wird, zwischen Sprachen in einer mehrsprachigen Pipeline hin und her zu schalten.
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''' ) In diesem Beispiel wird der Codename 'auto' verwendet, um eine mehrsprachige Pipeline im Auto -Modus zu initialisieren. Weitere Informationen finden Sie auf dieser Seite. Beachten Sie, dass neben dem neuen Auto -Modus der manuelle Modus weiterhin wie zuvor verwendet werden kann.
Das Training Customized Pipelines ist mit Trankit über die Klasse TPipeline einfach. Im Folgenden zeigen wir, wie wir einen Token und einen Satzsplitter auf angepassten Daten trainieren können.
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 ()Detaillierte Richtlinien für das Training und das Laden einer maßgeschneiderten Pipeline finden Sie hier
Falls Sie Ihre individuellen Pipelines an andere Benutzer weitergeben möchten. Bitte erstellen Sie hier ein Problem und geben Sie uns die folgenden Informationen an:
Dieses Projekt wurde vom Büro des Director of National Intelligence (ODNI), Intelligence Advanced Research Projects Activity (IARPA), über den IARPA-Vertragsnummer 2019-19051600006 unterstützt, das unter der besseren Extraktion von Text in Richtung Enhanced Abrival (Better) programmiert ist.
Wir verwenden XLM-Roberta und Adapter als gemeinsame mehrsprachige Encoder für verschiedene Aufgaben und Sprachen. Der AdapterHub wird verwendet, um unseren Plug-and-Play-Mechanismus mit Adaptern zu implementieren. Um den Entwicklungsprozess zu beschleunigen, sind die Implementierungen für den MWT -Expander und den Lemmatizer von Strophe angepasst. Um das Spracherkennungsmodul zu implementieren, nutzen wir die Langid -Bibliothek.