Notre document technique pour Trankit a remporté le prix du papier de démonstration exceptionnel à EACL 2021. Veuillez citer le papier si vous utilisez Trankit dans votre recherche.
@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 nouveaux pipelines à base de transformateurs pré-entraînés pour 56 langues . Les nouveaux pipelines sont formés avec XLM-Roberta Large, ce qui augmente encore les performances supérieures à 90 banques d'arbres du corpus universel V2.5. Découvrez la nouvelle performance ici. Cette page vous montre comment utiliser les nouveaux pipelines.
Mode automatique pour les pipelines multilingues . En mode Auto, la langue de l'entrée sera automatiquement détectée, permettant aux pipelines multilingues de traiter l'entrée sans spécifier sa langue. Découvrez comment activer le mode automatique ici. Merci Loretoparisi pour votre suggestion à ce sujet.
L'interface de ligne de commande est désormais disponible à l'utilisation. Cela aide les utilisateurs qui ne connaissent pas le langage de programmation Python utilisent facilement Trankit. Consultez les tutoriels sur cette page.
Trankit est une boîte à outils Python basée sur un transformateur léger pour le traitement multilingue du langage naturel (NLP). Il fournit un pipeline formable pour les tâches NLP fondamentales de plus de 100 langues et 90 pipelines pré-tracés téléchargeables pour 56 langues.
Trankit surpasse la strophe à outils multilingues de pointe actuelle (stanfordnlp) dans de nombreuses tâches sur 90 dépendances universelles v2.5 arbres de 56 langues différentes tout en étant efficace dans l'utilisation et la vitesse de la mémoire, ce qui le rend utilisable pour les utilisateurs généraux .
En particulier, pour l'anglais , Trankit est significativement meilleur que la strophe sur la segmentation des phrases ( + 9,36% ) et l'analyse de dépendance ( + 5,07% pour les UAS et + 5,81% pour le LAS). Pour l'arabe , notre boîte à outils améliore considérablement les performances de segmentation des phrases de 16,36% tandis que les Chinois observent 14,50% et 15,00% d'amélioration des UAS et du LAS pour l'analyse de dépendance. Une comparaison détaillée entre Trankit, Stanza et d'autres boîtes à outils PNL populaires (c.-à-d. Spacy, UDPipe) dans d'autres langues peut être trouvée ici sur notre page de documentation.
Nous avons également créé un site Web de démonstration pour Trankit, qui est hébergé à: http://nlp.uoregon.edu/trankit
Trankit peut être facilement installé via l'une des méthodes suivantes:
pip install trankit
La commande installerait automatiquement Trankit et tous les packages dépendants.
git clone https://github.com/nlp-uoregon/trankit.git
cd trankit
pip install -e .
Cela allait d'abord cloner notre repo GitHub et installer Trankit.
Les versions précédentes de Trankit ont rencontré le problème de compatibilité lors de l'utilisation de versions récentes de Transformers. Pour résoudre ce problème, veuillez installer la nouvelle version de Trankit comme suit:
pip install trankit==1.1.0
Si vous rencontrez un autre problème avec l'installation, veuillez soulever un problème ici pour nous le faire savoir. Merci.
Trankit peut traiter des entrées qui ne sont pas suspendues (brutes) ou des cordes préalables, à la fois au niveau de la phrase et du document. Actuellement, Trankit prend en charge les tâches suivantes:
Le code suivant montre comment initialiser un pipeline pré-entraîné pour l'anglais; Il est invité à fonctionner sur GPU, à télécharger automatiquement des modèles pré-entraînés et à les stocker dans le répertoire de cache spécifié. Trankit ne téléchargera pas de modèles pré-entraînés s'ils existent déjà.
from trankit import Pipeline
# initialize a multilingual pipeline
p = Pipeline ( lang = 'english' , gpu = True , cache_dir = './cache' ) Après avoir initialisé un pipeline pré-entraîné, il peut être utilisé pour traiter l'entrée sur toutes les tâches comme indiqué ci-dessous. Si l'entrée est une phrase, la balise is_sent doit être définie sur 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 ) Notez que, bien que les entrées préalables puissent toujours être traitées, l'utilisation d'entrées préalables pour les langues qui nécessitent une expansion de jetons multi-mots telles que l'arabe ou le français pourraient ne pas être la bonne façon. Veuillez consulter la colonne Requires MWT expansion? de ce tableau pour voir si une langue particulière nécessite une expansion de jetons multi-mots ou non.
Pour des exemples plus détaillés, veuillez consulter notre page de documentation.
À partir de la version V1.0.0, Trankit prend en charge un mode automatique pratique dans lequel les utilisateurs n'ont pas à définir une langue particulière active avant de traiter l'entrée. En mode automatique, Trankit détectera automatiquement la langue de l'entrée et utilisera les modèles spécifiques à la langue correspondants, évitant ainsi de basculer entre les langues dans un pipeline multilingue.
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''' ) Dans cet exemple, le nom de code 'auto' est utilisé pour initialiser un pipeline multilingue en mode Auto. Pour plus d'informations, veuillez visiter cette page. Notez que, outre le nouveau mode Auto, le mode manuel peut toujours être utilisé comme auparavant.
La formation des pipelines personnalisés est facile avec Trankit via la classe TPipeline . Ci-dessous, nous montrons comment nous pouvons former un jeton et un séparateur de phrase sur des données personnalisées.
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 ()Des directives détaillées pour la formation et le chargement d'un pipeline personnalisé peuvent être trouvées ici
Dans le cas où vous souhaitez partager vos pipelines personnalisés avec d'autres utilisateurs. Veuillez créer un problème ici et nous fournir les informations suivantes:
Ce projet a été soutenu par le Bureau du directeur du renseignement national (ODNI), Intelligence Advanced Research Projects Activity (IARPA), via le contrat IARPA n ° 2019-19051600006 sous la meilleure extraction du texte vers un programme de récupération (meilleur) amélioré.
Nous utilisons XLM-Roberta et Adaptors comme codeur multilingue partagée pour différentes tâches et langues. L'adaptère est utilisé pour implémenter notre mécanisme de plug-and-play avec des adaptateurs. Pour accélérer le processus de développement, les implémentations de l'expanseur MWT et du lemmatizer sont adaptées de la strophe. Pour implémenter le module de détection de langue, nous tirons parti de la bibliothèque Langid.