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 }
}56 개 언어에 대한 90 개의 새로운 사전 트랜스포머 기반 파이프 라인 . 새로운 파이프 라인은 XLM-Roberta Large로 훈련되어 Universal Dependencies v2.5 코퍼스의 90 개 이상의 트리 뱅크를 크게 향상시킵니다. 여기에서 새로운 성능을 확인하십시오. 이 페이지에서는 새 파이프 라인을 사용하는 방법을 보여줍니다.
다국어 파이프 라인의 자동 모드 . 자동 모드에서는 입력 언어가 자동으로 감지되어 다국어 파이프 라인이 언어를 지정하지 않고 입력을 처리 할 수 있습니다. 여기에서 자동 모드를 켜는 방법을 확인하십시오. 이에 대한 제안에 대해 Loretoparisi에게 감사드립니다.
이제 명령 줄 인터페이스를 사용할 수 있습니다. 이를 통해 Python 프로그래밍 언어에 익숙하지 않은 사용자는 Trankit을 쉽게 사용하는 데 도움이됩니다. 이 페이지의 자습서를 확인하십시오.
Trankit은 다국어 자연 언어 처리 (NLP)를위한 가벼운 변압기 기반 Python 툴킷입니다. 기본 NLP 작업을위한 훈련 가능한 파이프 라인을 제공하며 56 개 언어에 대한 90 개의 다운로드 가능한 파이프 라인을 다운로드 할 수 있습니다.
Trankit은 90 개 이상의 범용 종속성 v2.5 56 개의 다른 언어의 트리 뱅크는 메모리 사용 및 속도가 여전히 효율적이며 일반 사용자가 사용할 수 있도록 현재의 최첨단 다국어 툴킷 Stanza (Stanfordnlp)보다 우수합니다 .
특히 영어 의 경우 Trankit은 문장 세분화 ( +9.36% ) 및 의존성 구문 분석 (UAS의 경우 +5.07% , LAS의 경우 +5.81% )에서 Stanza보다 훨씬 우수합니다 . 아랍어 의 경우, 우리의 툴킷은 문장 세분화 성능을 16.36% 로 크게 향상시키는 반면, 중국은 의존성 구문 분석을 위해 UAS 및 LAS의 14.50% 및 15.00% 개선을 관찰합니다. 다른 언어로 된 Trankit, Stanza 및 기타 인기있는 NLP 툴킷 (예 : Spacy, UDPipe)의 자세한 비교는 여기에서 문서 페이지에서 찾을 수 있습니다.
우리는 또한 trankit에 대한 데모 웹 사이트를 만들었습니다.
Trankit은 다음 방법 중 하나를 통해 쉽게 설치할 수 있습니다.
pip install trankit
명령은 Trankit 및 모든 종속 패키지를 자동으로 설치합니다.
git clone https://github.com/nlp-uoregon/trankit.git
cd trankit
pip install -e .
이것은 먼저 Github Repo를 복제하고 Trankit을 설치합니다.
이전 버전의 Trankit은 최근 버전의 변압기를 사용할 때 호환성 문제를 겪었습니다. 이 문제를 해결하려면 다음과 같이 새 버전의 Trankit을 설치하십시오.
pip install trankit==1.1.0
설치에 다른 문제가 발생하면 여기에서 문제를 제기하여 알려주십시오. 감사해요.
Trankit은 문장과 문서 수준 모두에서 해제되지 않은 (RAW) 또는 중포 된 문자열 입력을 처리 할 수 있습니다. 현재 Trankit은 다음과 같은 작업을 지원합니다.
다음 코드는 영어의 사전 배치 파이프 라인을 초기화하는 방법을 보여줍니다. GPU에서 실행하고 사전에 사전 모델을 자동으로 다운로드하여 지정된 캐시 디렉토리에 저장하도록 지시합니다. 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' 자동 모드에서 다국어 파이프 라인을 초기화하는 데 사용됩니다. 자세한 내용은이 페이지를 방문하십시오. 새로운 자동 모드 외에도 수동 모드는 여전히 이전과 같이 사용할 수 있습니다.
클래스 TPipeline 통해 Trankit을 사용하면 맞춤형 파이프 라인을 쉽게 교육합니다. 아래에서 우리는 맞춤형 데이터에서 토큰과 문장 스플리터를 훈련시키는 방법을 보여줍니다.
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 ()맞춤형 파이프 라인 교육 및로드에 대한 자세한 지침은 여기에서 찾을 수 있습니다.
사용자 정의 파이프 라인을 다른 사용자와 공유하려는 경우. 여기에 문제를 만들어 다음 정보를 제공하십시오.
이 프로젝트는 IARPA 계약 번호 2019-19051600006을 통해 IARPA (Intelligence Advanced Research Project Projects Activity), IARPA (Intelligence Advanced Research Project Projects Activity), National Intelligence (ODNI) 국장의 사무실에서 텍스트에서 향상된 검색 (더 나은) 프로그램으로 추출했습니다.
우리는 XLM-Roberta와 어댑터를 다양한 작업 및 언어에 대한 공유 다국어 인코더로 사용합니다. AdapterHub는 어댑터를 사용하여 플러그 앤 플레이 메커니즘을 구현하는 데 사용됩니다. 개발 프로세스의 속도를 높이기 위해 MWT Expander 및 Lemmatizer의 구현은 Stanza에서 조정됩니다. 언어 탐지 모듈을 구현하기 위해 Langid 라이브러리를 활용합니다.