Makalah teknis kami untuk Trankit memenangkan Penghargaan Kertas Demo yang Luar Biasa di EACL 2021. Harap kutip kertas jika Anda menggunakan Trankit dalam penelitian Anda.
@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 jaringan pipa berbasis transformator baru untuk 56 bahasa . Pipa-pipa baru dilatih dengan XLM-Roberta Large, yang selanjutnya meningkatkan kinerja secara signifikan lebih dari 90 bank pohon dari dependensi universal v2.5 corpus. Lihat kinerja baru di sini. Halaman ini menunjukkan cara menggunakan jaringan pipa baru.
Mode Otomatis untuk Jalur Sepulalual . Dalam mode otomatis, bahasa input akan terdeteksi secara otomatis, memungkinkan jaringan pipa multibahasa untuk memproses input tanpa menentukan bahasanya. Lihat cara menyalakan mode otomatis di sini. Terima kasih Loretoparisi atas saran Anda tentang ini.
Antarmuka baris perintah sekarang tersedia untuk digunakan. Ini membantu pengguna yang tidak terbiasa dengan bahasa pemrograman Python menggunakan trankit dengan mudah. Lihat tutorial di halaman ini.
Trankit adalah python toolkit berbasis transformator ringan untuk Multilingual Natural Language Processing (NLP). Ini menyediakan pipa yang dapat dilatih untuk tugas -tugas NLP mendasar lebih dari 100 bahasa, dan 90 pipa pretrained yang dapat diunduh untuk 56 bahasa.
Trankit mengungguli toolkit multibahasa canggih saat ini Stanza (Stanfordnlp) dalam banyak tugas lebih dari 90 ketergantungan universal v2.5 Treebanks dari 56 bahasa yang berbeda sambil tetap efisien dalam penggunaan memori dan kecepatan, membuatnya dapat digunakan untuk pengguna umum .
Secara khusus, untuk bahasa Inggris , trankit secara signifikan lebih baik daripada bait pada segmentasi kalimat ( +9,36% ) dan parsing ketergantungan ( +5,07% untuk UAS dan +5,81% untuk LAS). Untuk bahasa Arab , toolkit kami secara substansial meningkatkan kinerja segmentasi kalimat sebesar 16,36% sementara Cina mengamati 14,50% dan 15,00% peningkatan UAS dan LAS untuk penguraian ketergantungan. Perbandingan terperinci antara trankit, bait, dan toolkit NLP populer lainnya (yaitu, spacy, udpipe) dalam bahasa lain dapat ditemukan di sini di halaman dokumentasi kami.
Kami juga membuat situs web demo untuk trankit, yang di -host di: http://nlp.uoregon.edu/trankit
Trankit dapat dengan mudah diinstal melalui salah satu metode berikut:
pip install trankit
Perintah akan menginstal Trankit dan semua paket dependen secara otomatis.
git clone https://github.com/nlp-uoregon/trankit.git
cd trankit
pip install -e .
Ini pertama -tama akan mengkloning repo github kami dan menginstal trankit.
Versi -versi Trankit sebelumnya telah mengalami masalah kompatibilitas saat menggunakan versi transformer terbaru. Untuk memperbaiki masalah ini, silakan instal versi baru Trankit sebagai berikut:
pip install trankit==1.1.0
Jika Anda mengalami masalah lain dengan instalasi, silakan angkat masalah di sini untuk memberi tahu kami. Terima kasih.
Trankit dapat memproses input yang dilapisi (mentah) atau string pretokenisasi, baik pada tingkat kalimat dan dokumen. Saat ini, Trankit mendukung tugas -tugas berikut:
Kode berikut menunjukkan cara menginisialisasi pipa pretrained untuk bahasa Inggris; Diinstruksikan untuk berjalan di GPU, secara otomatis mengunduh model pretrained, dan menyimpannya ke direktori cache yang ditentukan. Trankit tidak akan mengunduh model pretrained jika sudah ada.
from trankit import Pipeline
# initialize a multilingual pipeline
p = Pipeline ( lang = 'english' , gpu = True , cache_dir = './cache' ) Setelah menginisialisasi pipa pretrained, dapat digunakan untuk memproses input pada semua tugas seperti yang ditunjukkan di bawah ini. Jika input adalah kalimat, tag is_sent harus diatur ke 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 ) Perhatikan bahwa, meskipun input pretokenisasi selalu dapat diproses, menggunakan input pretokenisasi untuk bahasa yang memerlukan ekspansi token multi-kata seperti Arab atau Prancis mungkin bukan cara yang benar. Silakan periksa kolom Requires MWT expansion? Tabel ini untuk melihat apakah bahasa tertentu membutuhkan ekspansi token multi-kata atau tidak.
Untuk contoh lebih rinci, silakan periksa halaman dokumentasi kami.
Mulai dari versi v1.0.0, Trankit mendukung mode otomatis yang praktis di mana pengguna tidak harus mengatur bahasa tertentu aktif sebelum memproses input. Dalam mode otomatis, Trankit akan secara otomatis mendeteksi bahasa input dan menggunakan model spesifik bahasa yang sesuai, sehingga menghindari beralih bolak-balik antara bahasa dalam pipa multibahasa.
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''' ) Dalam contoh ini, nama kode 'auto' digunakan untuk menginisialisasi pipa multibahasa dalam mode otomatis. Untuk informasi lebih lanjut, silakan kunjungi halaman ini. Perhatikan bahwa, selain mode otomatis baru, mode manual masih dapat digunakan seperti sebelumnya.
Pelatihan pipa yang disesuaikan mudah dengan trankit melalui kelas TPipeline . Di bawah ini kami menunjukkan bagaimana kami dapat melatih token dan pembagi kalimat pada data yang disesuaikan.
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 ()Pedoman terperinci untuk pelatihan dan pemuatan pipa yang disesuaikan dapat ditemukan di sini
Jika Anda ingin berbagi saluran pipa khusus dengan pengguna lain. Harap buat masalah di sini dan berikan informasi berikut kepada kami:
Proyek ini telah didukung oleh Kantor Direktur Intelijen Nasional (ODNI), Kegiatan Proyek Penelitian Lanjutan Intelijen (IARPA), melalui Kontrak IARPA No. 2019-19051600006 di bawah ekstraksi yang lebih baik dari teks ke program pengambilan yang ditingkatkan (lebih baik).
Kami menggunakan XLM-Roberta dan adaptor sebagai encoder multibahasa kami bersama untuk berbagai tugas dan bahasa. AdapterHub digunakan untuk mengimplementasikan mekanisme plug-and-play kami dengan adaptor. Untuk mempercepat proses pengembangan, implementasi untuk MWT Expander dan Lemmatizer diadaptasi dari bait. Untuk mengimplementasikan modul deteksi bahasa, kami memanfaatkan perpustakaan Langid.