Nuestro documento técnico para Trankit ganó el Premio Demo Paper destacado en EACL 2021. Cite el documento si usa Trankit en su investigación.
@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 nuevas tuberías basadas en transformadores previos a la petróleo para 56 idiomas . Las nuevas tuberías están entrenadas con XLM-Roberta grande, lo que aumenta aún más el rendimiento de más de 90 bancos de árboles de las dependencias universales v2.5 Corpus. Mira la nueva actuación aquí. Esta página le muestra cómo usar las nuevas tuberías.
Modo automático para tuberías multilingües . En el modo automático, el lenguaje de la entrada se detectará automáticamente, lo que permite que las tuberías multilingües procesen la entrada sin especificar su lenguaje. Vea cómo encender el modo automático aquí. Gracias LoretoParisi por su sugerencia sobre esto.
La interfaz de línea de comandos ya está disponible para usar. Esto ayuda a los usuarios que no están familiarizados con el lenguaje de programación de Python a usar Trankit fácilmente. Consulte los tutoriales en esta página.
Trankit es un kit de herramientas Python basado en el transformador ligero para el procesamiento multilingüe del lenguaje natural (PNL). Proporciona una tubería capacitable para tareas de PNL fundamentales de más de 100 idiomas, y 90 tuberías de detenimiento desactivadas para 56 idiomas.
Trankit supera la estrofa de herramientas multilingüe de última generación (StanfordNLP) en muchas tareas en 90 dependencias universales v2.5 bancos de árboles de 56 idiomas diferentes, al tiempo que sigue siendo eficiente en el uso y la velocidad de la memoria, lo que lo hace utilizable para los usuarios generales .
En particular, para el inglés , Trankit es significativamente mejor que la estrofa en la segmentación de oraciones ( +9.36% ) y el análisis de dependencia ( +5.07% para UAS y +5.81% para LAS). Para el árabe , nuestro conjunto de herramientas mejora sustancialmente el rendimiento de la segmentación de oraciones en un 16,36%, mientras que los chinos observan el 14,50% y el 15.00% de mejora de UAS y LAS para el análisis de dependencia. La comparación detallada entre trankit, estrofa y otros kits de herramientas NLP populares (es decir, Spacy, UdPipe) en otros idiomas se puede encontrar aquí en nuestra página de documentación.
También creamos un sitio web de demostración para Trankit, que está alojado en: http://nlp.uoregon.edu/trankit
Trankit se puede instalar fácilmente a través de uno de los siguientes métodos:
pip install trankit
El comando instalaría Trankit y todos los paquetes dependientes automáticamente.
git clone https://github.com/nlp-uoregon/trankit.git
cd trankit
pip install -e .
Esto primero clonaría nuestro repositorio de GitHub e instalaría Trankit.
Las versiones anteriores de Trankit han encontrado el problema de compatibilidad cuando se utilizan versiones recientes de Transformers. Para solucionar este problema, instale la nueva versión de Trankit de la siguiente manera:
pip install trankit==1.1.0
Si encuentra algún otro problema con la instalación, plantee un problema aquí para informarnos. Gracias.
Trankit puede procesar entradas que son hilas no transmitidas (sin procesar) o prepasteizadas, tanto a nivel de oración como de documentos. Actualmente, Trankit admite las siguientes tareas:
El siguiente código muestra cómo inicializar una tubería previa a la detención del inglés; Se le indica que se ejecute en GPU, descargue automáticamente los modelos previos a la petróleo y los almacene en el directorio de caché especificado. Trankit no descargará modelos previos a la aparición si ya existen.
from trankit import Pipeline
# initialize a multilingual pipeline
p = Pipeline ( lang = 'english' , gpu = True , cache_dir = './cache' ) Después de inicializar una tubería previa a la detención, se puede usar para procesar la entrada en todas las tareas como se muestra a continuación. Si la entrada es una oración, la etiqueta is_sent debe establecerse en 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 ) Tenga en cuenta que, aunque las entradas prepaídas siempre se pueden procesar, el uso de entradas pretakes para idiomas que requieren la expansión de token de múltiples palabras, como el árabe o el francés, podría no ser la forma correcta. Por favor, consulte la columna Requires MWT expansion? de esta tabla para ver si un idioma en particular requiere una expansión de token de varias palabras o no.
Para ver ejemplos más detallados, consulte nuestra página de documentación.
A partir de la versión V1.0.0, Trankit admite un práctico modo automático en el que los usuarios no tienen que configurar un lenguaje particular activo antes de procesar la entrada. En el modo automático, Trankit detectará automáticamente el lenguaje de la entrada y usará los modelos específicos del lenguaje correspondientes, evitando así cambiar de lenguaje entre idiomas en una tubería multilingüe.
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''' ) En este ejemplo, el nombre de código 'auto' se usa para inicializar una tubería multilingüe en el modo automático. Para obtener más información, visite esta página. Tenga en cuenta que, además del nuevo modo automático, el modo manual aún se puede usar como antes.
La capacitación de tuberías personalizadas es fácil con Trankit a través de la clase TPipeline . A continuación mostramos cómo podemos entrenar un token y un divisor de oraciones en datos personalizados.
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 ()Las pautas detalladas para la capacitación y la carga de una tubería personalizada pueden encontrar aquí
En caso de que desee compartir sus tuberías personalizadas con otros usuarios. Cree un problema aquí y proporcione la siguiente información:
Este proyecto ha sido apoyado por la Oficina del Director de Inteligencia Nacional (ODNI), Actividad de Proyectos de Investigación Avanzada de Inteligencia (IARPA), a través del contrato IARPA No. 2019-19051600006 bajo la mejor extracción del texto hacia el programa de recuperación (mejor) mejorado.
Usamos XLM-Roberta y adaptadores como nuestro codificador multilingüe compartido para diferentes tareas e idiomas. El AdapterHub se utiliza para implementar nuestro mecanismo plug-and-play con adaptadores. Para acelerar el proceso de desarrollo, las implementaciones para el expansor MWT y el lemmatizer se adaptan de la estrofa. Para implementar el módulo de detección de idiomas, aprovechamos la biblioteca Langid.