Nosso documento técnico para o Trankit ganhou o excelente prêmio de documento de demonstração na EACL 2021. Cite o jornal se você usar o Trankit em sua pesquisa.
@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 novos pipelines baseados em transformadores pré-tenhados para 56 idiomas . Os novos oleodutos são treinados com XLM-Roberta Large, o que aumenta ainda mais o desempenho significativamente mais de 90 bancas de árvores das dependências universais v2.5 corpus. Confira o novo desempenho aqui. Esta página mostra como usar os novos pipelines.
Modo automático para pipelines multilíngues . No modo automático, o idioma da entrada será detectado automaticamente, permitindo que os pipelines multilíngues processem a entrada sem especificar seu idioma. Confira como ativar o modo automático aqui. Obrigado Loretoparisi por sua sugestão sobre isso.
A interface da linha de comando está agora disponível para uso. Isso ajuda os usuários que não estão familiarizados com a linguagem de programação Python a usar o Trankit facilmente. Confira os tutoriais nesta página.
O Trankit é um kit de ferramentas Python baseado em transformador leve para o processamento multilíngue de linguagem natural (PNL). Ele fornece um pipeline treinável para tarefas fundamentais de PNL em mais de 100 idiomas e 90 oleodutos pré -traidos para download para 56 idiomas.
O Trankit supera a atual estrofe de kit de ferramentas multilíngues de última geração (Stanfordnlp) em muitas tarefas acima de 90 dependências universais v2.5 bancos de árvores de 56 idiomas diferentes, enquanto ainda são eficientes no uso e velocidade da memória, tornando-o utilizável para usuários em geral .
Em particular, para o inglês , o Trankit é significativamente melhor que a estrofe na segmentação de sentenças ( +9,36% ) e a análise de dependência ( +5,07% para UAS e +5,81% para LAS). Para o árabe , nosso kit de ferramentas melhora substancialmente o desempenho da segmentação de sentenças em 16,36%, enquanto o chinês observa 14,50% e 15,00% da melhoria de UAS e LAS para análise de dependência. A comparação detalhada entre Trankit, Stanza e outros kits de ferramentas PNLP (isto é, Spacy, UDPipe) em outros idiomas pode ser encontrada aqui em nossa página de documentação.
Também criamos um site de demonstração para o Trankit, que está hospedado em: http://nlp.uoregon.edu/trankit
Trankit pode ser facilmente instalado através de um dos seguintes métodos:
pip install trankit
O comando instalaria o Trankit e todos os pacotes dependentes automaticamente.
git clone https://github.com/nlp-uoregon/trankit.git
cd trankit
pip install -e .
Isso primeiro clonaria nosso repositório do GitHub e instalaria o Trankit.
As versões anteriores do Trankit encontraram o problema de compatibilidade ao usar versões recentes de transformadores. Para corrigir esse problema, instale a nova versão do Trankit da seguinte maneira:
pip install trankit==1.1.0
Se você encontrar algum outro problema com a instalação, levante um problema aqui para nos informar. Obrigado.
O Trankit pode processar entradas que são uniletadas (cru) ou pré -opatadas, no nível da frase e do documento. Atualmente, o Trankit suporta as seguintes tarefas:
O código a seguir mostra como inicializar um pipeline pré -traido para o inglês; Ele é instruído a executar na GPU, baixar automaticamente modelos pré -traidos e armazená -los no diretório de cache especificado. O Trankit não baixará modelos pré -tenhados se eles já existirem.
from trankit import Pipeline
# initialize a multilingual pipeline
p = Pipeline ( lang = 'english' , gpu = True , cache_dir = './cache' ) Após a inicialização de um pipeline pré -treinamento, ele pode ser usado para processar a entrada em todas as tarefas, como mostrado abaixo. Se a entrada for uma frase, a tag is_sent deve ser definida como 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 ) Observe que, embora os insumos pré-súmitos sempre possam ser processados, o uso de insumos pré-opatados para idiomas que requerem expansão de token de várias palavras, como o árabe ou o francês, pode não ser a maneira correta. Por favor, verifique se a coluna Requires MWT expansion? desta tabela para ver se um específico idioma requer expansão de token de várias palavras ou não.
Para exemplos mais detalhados, consulte nossa página de documentação.
A partir da versão v1.0.0, o Trankit suporta um modo automático útil no qual os usuários não precisam definir um idioma específico ativo antes de processar a entrada. No modo automático, o Trankit detectará automaticamente o idioma da entrada e usará os modelos específicos de idioma correspondentes, evitando assim a troca entre os idiomas em um pipeline multilíngue.
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''' ) Neste exemplo, o nome do código 'auto' é usado para inicializar um pipeline multilíngue no modo automático. Para mais informações, visite esta página. Observe que, além do novo modo automático, o modo manual ainda pode ser usado como antes.
O treinamento de pipelines personalizados é fácil com o Trankit por meio da TPipeline de classe. Abaixo, mostramos como podemos treinar um splitter de token e sentença em dados 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 ()Diretrizes detalhadas para treinamento e carregamento de um pipeline personalizado podem ser encontradas aqui
Caso você queira compartilhar seus pipelines personalizados com outros usuários. Crie um problema aqui e forneça as seguintes informações:
Este projeto foi apoiado pelo Escritório do Diretor de Inteligência Nacional (ODNI), Atividade de Projetos de Pesquisa Avançada de Inteligência (IARPA), via contrato de IARPA nº 2019-19051600006 sob a melhor extração do programa de texto para melhorar a recuperação (melhor).
Usamos o XLM-Roberta e os adaptadores como nosso codificador multilíngue compartilhado para diferentes tarefas e idiomas. O adaptador é usado para implementar nosso mecanismo plug-and-play com adaptadores. Para acelerar o processo de desenvolvimento, as implementações para o MWT Expander e o Lemmatizer são adaptadas da estrofe. Para implementar o módulo de detecção de idiomas, aproveitamos a biblioteca Langid.