Наша техническая статья для 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 Laign, что еще больше повышает производительность более 90 деревьев универсальных зависимостей v2.5 Corpus. Проверьте новую производительность здесь. На этой странице показано, как использовать новые трубопроводы.
Автоматический режим для многоязычных трубопроводов . В автоматическом режиме язык ввода будет автоматически обнаружен, что позволит многоязычным трубопроводам обрабатывать вход без указания его языка. Проверьте, как включить автозаправление здесь. Спасибо Loretoparisi за ваше предложение по этому поводу.
Интерфейс командной строки теперь доступен для использования. Это помогает пользователям, которые не знакомы с языком программирования Python легко использовать Trankit. Проверьте учебники на этой странице.
Trankit-это легкий инструментарий Python на основе светости для многоязычной обработки естественного языка (NLP). Он обеспечивает обучаемый трубопровод для фундаментальных задач NLP на более чем 100 языках и 90 загружаемых предварительных трубопроводов для 56 языков.
Trankit превосходит текущую современную многоязычную инструментарию Stanza (Stanfordnlp) во многих задачах более 90 универсальных зависимостей v2.5 Treebanks из 56 различных языков, в то же время эффективно используя память и скорость, что делает его полезными для общих пользователей .
В частности, для английского языка , Trankit значительно лучше, чем строфа при сегментации предложений ( +9,36% ) и анализ зависимости ( +5,07% для UAS и +5,81% для LAS). Для арабского языка наш инструментарий значительно повышает эффективность сегментации предложения на 16,36%, в то время как китайцы наблюдают 14,50% и 15,00% улучшения UAS и LAS для парирования зависимостей. Подробное сравнение между 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 может обрабатывать входные данные, которые незаконны (необработанные) или проведенные строки, как на уровне предложения, так и на уровне документов. В настоящее время Trankit поддерживает следующие задачи:
Следующий код показывает, как инициализировать предварительный трубопровод для английского языка; Поручено работать на графическом процессоре, автоматически загружать предварительные модели и хранить их в указанном каталоге кэша. 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 ()Подробные рекомендации по обучению и загрузке индивидуального трубопровода можно найти здесь
Если вы хотите поделиться своими индивидуальными трубопроводами с другими пользователями. Пожалуйста, создайте проблему здесь и предоставьте нам следующую информацию:
Этот проект был поддержан Управлением директора National Intelligence (ODNI), разведывательной деятельности Advanced Research Deciiatts (IARPA), через контракт IARPA № 2019-1905160000 в рамках лучшей извлечения от текста в программу расширенного поиска (лучше).
Мы используем XLM-Roberta и адаптеры в качестве нашего общего многоязычного энкодера для разных задач и языков. AdapterHub используется для реализации нашего механизма Plug-и Play с помощью адаптеров. Чтобы ускорить процесс разработки, реализации для Expander MWT и Lemmatizer адаптированы из Stanza. Для реализации модуля обнаружения языка мы используем библиотеку Langid.