เอกสารทางเทคนิคของเราสำหรับ Trankit ได้รับรางวัล Demo Paper Award ที่ 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 Large ซึ่งช่วยเพิ่มประสิทธิภาพการทำงานอย่างมีนัยสำคัญมากกว่า 90 TreeBanks ของการพึ่งพาสากล V2.5 Corpus ตรวจสอบประสิทธิภาพใหม่ที่นี่ หน้านี้แสดงวิธีใช้ท่อใหม่
โหมดอัตโนมัติสำหรับท่อหลายภาษา ในโหมดอัตโนมัติภาษาของอินพุตจะถูกตรวจพบโดยอัตโนมัติช่วยให้ท่อหลายภาษาสามารถประมวลผลอินพุตโดยไม่ระบุภาษา ตรวจสอบวิธีเปิดโหมดอัตโนมัติที่นี่ ขอบคุณ Loretoparisi สำหรับคำแนะนำของคุณเกี่ยวกับเรื่องนี้
อินเทอร์เฟซบรรทัดคำสั่ง พร้อมใช้งานแล้ว สิ่งนี้จะช่วยให้ผู้ใช้ที่ไม่คุ้นเคยกับภาษาการเขียนโปรแกรม Python ใช้ trankit ได้อย่างง่ายดาย ตรวจสอบบทเรียนในหน้านี้
Trankit เป็น ชุดเครื่องมือ Python Tool-based น้ำหนักเบา สำหรับการประมวลผลภาษาธรรมชาติหลายภาษา (NLP) มันให้บริการท่อฝึกอบรมสำหรับงาน NLP พื้นฐานมากกว่า 100 ภาษาและ 90 ท่อ pretrained ที่สามารถดาวน์โหลดได้สำหรับ 56 ภาษา
Trankit มีประสิทธิภาพสูงกว่า Stanza (Stanfordnlp) ที่ทันสมัย ในงานหลายภาษามากกว่า 90 การพึ่งพาสากล V2.5 Treebanks 56 ภาษาที่แตกต่างกันในขณะที่ยังคงมีประสิทธิภาพในการใช้งาน หน่วยความ จำ
โดยเฉพาะอย่างยิ่งสำหรับ ภาษาอังกฤษ Trankit ดีกว่าบทเพลงอย่างมีนัยสำคัญ ในการแบ่งส่วนประโยค ( +9.36% ) และการแยกวิเคราะห์การพึ่งพา ( +5.07% สำหรับ UAS และ +5.81% สำหรับ LAS) สำหรับ ภาษาอาหรับ ชุดเครื่องมือของเราปรับปรุงประสิทธิภาพการแบ่งส่วนประโยคอย่างมีนัยสำคัญ 16.36% ในขณะที่ จีน สังเกตการปรับปรุง UAS และ LAS และ LAS สำหรับการวิเคราะห์การพึ่งพาอาศัยกัน 14.50% และ 15.00% การเปรียบเทียบรายละเอียดระหว่าง 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 .
สิ่งนี้จะโคลน repo github ของเราก่อนและติดตั้ง trankit
Trankit รุ่นก่อนหน้าได้พบปัญหาความเข้ากันได้เมื่อใช้หม้อแปลงรุ่นล่าสุด หากต้องการแก้ไขปัญหานี้โปรดติดตั้ง trankit เวอร์ชันใหม่ดังนี้:
pip install trankit==1.1.0
หากคุณพบปัญหาอื่น ๆ เกี่ยวกับการติดตั้งโปรดเพิ่มปัญหาที่นี่เพื่อแจ้งให้เราทราบ ขอบคุณ.
Trankit สามารถประมวลผลอินพุตที่ไม่ได้พูด (ดิบ) หรือสตริง pretokenized ทั้งสองประโยคและระดับเอกสาร ปัจจุบัน Trankit รองรับงานต่อไปนี้:
รหัสต่อไปนี้แสดงวิธีการเริ่มต้นท่อส่งล่วงหน้าสำหรับภาษาอังกฤษ ได้รับคำสั่งให้ทำงานบน GPU ดาวน์โหลดรุ่นที่ผ่านการฝึกอบรมโดยอัตโนมัติและจัดเก็บไว้ในไดเรกทอรีแคชที่ระบุ Trankit จะไม่ดาวน์โหลดโมเดลที่ผ่านการฝึกอบรมหากมีอยู่แล้ว
from trankit import Pipeline
# initialize a multilingual pipeline
p = Pipeline ( lang = 'english' , gpu = True , cache_dir = './cache' ) หลังจากเริ่มต้นไปป์ไลน์ที่ผ่านการฝึกอบรมแล้วมันสามารถใช้ในการประมวลผลอินพุตในงานทั้งหมดดังที่แสดงด้านล่าง หากอินพุตเป็นประโยคแท็ก is_sent จะต้องตั้งค่าเป็นจริง
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 ) โปรดทราบว่าถึงแม้ว่าอินพุต pretokenized สามารถประมวลผลได้เสมอโดยใช้อินพุต pretokenized สำหรับภาษาที่ต้องใช้การขยายโทเค็นหลายคำเช่นภาษาอาหรับหรือฝรั่งเศสอาจไม่ใช่วิธีที่ถูกต้อง โปรดตรวจสอบคอลัมน์ 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 ()แนวทางโดยละเอียดสำหรับการฝึกอบรมและการโหลดไปป์ไลน์ที่กำหนดเองสามารถดูได้ที่นี่
ในกรณีที่คุณต้องการแชร์ท่อส่งที่กำหนดเองกับผู้ใช้รายอื่น โปรดสร้างปัญหาที่นี่และให้ข้อมูลต่อไปนี้แก่เรา:
โครงการนี้ได้รับการสนับสนุนจากสำนักงานผู้อำนวยการหน่วยข่าวกรองแห่งชาติ (ODNI) กิจกรรมโครงการวิจัยขั้นสูง Intelligence (IARPA) ผ่านสัญญา IARPA หมายเลข 2019-19051600006 ภายใต้การสกัดที่ดีขึ้นจากข้อความไปสู่โปรแกรมการดึง (ดีกว่า) ที่ดีขึ้น
เราใช้ XLM-Roberta และอะแดปเตอร์เป็นตัวเข้ารหัสหลายภาษาที่ใช้ร่วมกันสำหรับงานและภาษาที่แตกต่างกัน AdapterHub ใช้เพื่อใช้กลไกการปลั๊กและเล่นของเรากับอะแดปเตอร์ เพื่อเพิ่มความเร็วในกระบวนการพัฒนาการใช้งานสำหรับ MWT Expander และ Lemmatizer นั้นถูกดัดแปลงจาก Stanza ในการใช้โมดูลการตรวจจับภาษาเราใช้ประโยชน์จากไลบรารี Langid