فازت الورقة الفنية الخاصة بنا لـ 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 كبير ، مما يعزز الأداء بشكل كبير أكثر من 90 من ضفاف الأشجار من التبعيات العالمية v2.5. تحقق من الأداء الجديد هنا. توضح لك هذه الصفحة كيفية استخدام خطوط الأنابيب الجديدة.
الوضع التلقائي لخطوط الأنابيب متعددة اللغات . في الوضع التلقائي ، سيتم اكتشاف لغة الإدخال تلقائيًا ، مما يتيح خطوط الأنابيب متعددة اللغات من معالجة الإدخال دون تحديد لغته. تحقق من كيفية تشغيل وضع السيارات هنا. شكرا لك loretoparisi على اقتراحك بشأن هذا.
واجهة سطر الأوامر متاحة الآن للاستخدام. هذا يساعد المستخدمين الذين ليسوا على دراية بلغة برمجة Python على استخدام Trankit بسهولة. تحقق من الدروس في هذه الصفحة.
Trankit عبارة عن مجموعة أدوات بيثون ذات الوزن الخفيف القائم على المحولات لمعالجة اللغة الطبيعية متعددة اللغات (NLP). يوفر خط أنابيب قابل للتدريب لمهام NLP الأساسية أكثر من 100 لغة ، و 90 خطوط أنابيب قابلة للتنزيل قبل 56 لغة.
يتفوق Trankit على مجموعة الأدوات المتعددة اللغات الحالية Stanza (StanfordnLP) في العديد من المهام أكثر من 90 تبعية عالمية v2.5 من 56 لغة مختلفة بينما لا تزال فعالة في استخدام الذاكرة والسرعة ، مما يجعلها صالحة للاستخدام للمستخدمين العامين .
على وجه الخصوص ، بالنسبة للغة الإنجليزية ، يكون Trankit أفضل بكثير من Stanza على تجزئة الجملة ( +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 repo لدينا وتثبيت trankit.
واجهت الإصدارات السابقة من Trankit مشكلة التوافق عند استخدام الإصدارات الحديثة من المحولات. لإصلاح هذه المشكلة ، يرجى تثبيت الإصدار الجديد من Trankit على النحو التالي:
pip install trankit==1.1.0
إذا واجهت أي مشكلة أخرى في التثبيت ، فيرجى إثارة مشكلة هنا لإعلامنا بذلك. شكرًا.
يمكن لـ Trankit معالجة المدخلات غير المحدودة (الخام) أو السلاسل المخلوطة ، في كل من الجملة ومستوى المستند. حاليًا ، يدعم 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' لتهيئة خط أنابيب متعدد اللغات في وضع السيارات. لمزيد من المعلومات ، يرجى زيارة هذه الصفحة. لاحظ أنه ، إلى جانب الوضع التلقائي الجديد ، لا يزال من الممكن استخدام الوضع اليدوي كما كان من قبل.
من السهل تدريب خطوط الأنابيب المخصصة مع 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) ، نشاط مشاريع الأبحاث المتقدمة الاستخباراتية (IARPA) ، عبر عقد IARPA رقم 2019-19051600006 في ظل استخراج أفضل من النص إلى برنامج استرجاع (أفضل).
نستخدم XLM-Roberta والمحولات كمشفرات متعددة اللغات المشتركة لمهام ولغات مختلفة. يتم استخدام المحول لتنفيذ آلية التوصيل والتشغيل مع المحولات. لتسريع عملية التطوير ، يتم تكييف تطبيقات MWT Expander و Lemmatizer من Stanza. لتنفيذ وحدة الكشف عن اللغة ، نستفيد من مكتبة Langid.