
Multi_task_nlp عبارة عن مجموعة أدوات أدوات تمكن مطوري NLP من التدريب بسهولة واستنتاج نموذج واحد لمهام متعددة. نحن ندعم العديد من تنسيقات البيانات لغالبية مهام NLU وعمليات الترميز المتعددة المستندة إلى المحولات (مثل Bert و Distil-Bert و Albert و Roberta و Xlnet وما إلى ذلك)
للحصول على وثائق كاملة لهذه المكتبة ، يرجى الرجوع إلى الوثائق
يتضمن أي نظام AI للمحادثة بناء مكونات متعددة لأداء مهام مختلفة وخط أنابيب لغرز جميع المكونات معًا. شريطة أن تكون الفعالية الحديثة للنماذج القائمة على المحولات في NLP ، من الشائع جدًا إنشاء نموذج قائم على المحولات لحل حالة الاستخدام الخاصة بك. لكن وجود نماذج متعددة من هذا القبيل تعمل معًا لنظام الذكاء الاصطناعى المحادثة يمكن أن يؤدي إلى استهلاك موارد باهظ الثمن ، وزيادة اختفاء التنبؤات وجعل النظام صعبًا. هذا يمثل تحديًا حقيقيًا لأي شخص يريد بناء نظام AI للمحادثة بطريقة مبسطة.
يمنحك multi_task_nlp القدرة على تحديد مهام متعددة معًا وتدريب نموذج واحد يتعلم في وقت واحد على جميع المهام المحددة. هذا يعني أنه يمكن للمرء أن يؤدي مهام متعددة مع زمن الوصول واستهلاك الموارد المكافئ لمهمة واحدة.
لاستخدام Multi-Task-NLP ، يمكنك استنساخ المستودع في الموقع المطلوب على نظامك مع الأمر الطرفي التالي.
$ cd /desired/location/
$ git clone https://github.com/hellohaptik/multi-task-NLP.git
$ cd multi-task-NLP
$ pip install -r requirements.txt ملاحظة:- تم تصميم المكتبة واختبارها باستخدام Python 3.7.3 . يوصى بتثبيت المتطلبات في بيئة افتراضية.
دليل سريع لإظهار كيف يمكن تدريب النموذج على مهام NLU واحدة/متعددة في 3 خطوات بسيطة فقط وبدون شرط للرمز !!
اتبع هذه الخطوات الثلاث البسيطة لتدريب نموذج المهام المتعددة!
ملف المهمة هو ملف تنسيق YAML حيث يمكنك إضافة جميع المهام التي تريد تدريب نموذج متعدد المهام.
TaskA :
model_type : BERT
config_name : bert-base-uncased
dropout_prob : 0.05
label_map_or_file :
- label1
- label2
- label3
metrics :
- accuracy
loss_type : CrossEntropyLoss
task_type : SingleSenClassification
file_names :
- taskA_train.tsv
- taskA_dev.tsv
- taskA_test.tsv
TaskB :
model_type : BERT
config_name : bert-base-uncased
dropout_prob : 0.3
label_map_or_file : data/taskB_train_label_map.joblib
metrics :
- seq_f1
- seq_precision
- seq_recall
loss_type : NERLoss
task_type : NER
file_names :
- taskB_train.tsv
- taskB_dev.tsv
- taskB_test.tsvلمعرفة معلمات ملف المهمة لجعل ملف المهمة الخاص بك ، معلمات ملف المهمة.
بعد تحديد ملف المهمة ، قم بتشغيل الأمر التالي لإعداد البيانات.
$ python data_preparation.py
--task_file 'sample_task_file.yml'
--data_dir 'data'
--max_seq_len 50 لمعرفة البرنامج النصي data_preparation.py ووسائطه ، راجع تشغيل إعداد البيانات.
أخيرًا ، يمكنك بدء تدريبك باستخدام الأمر التالي.
$ python train.py
--data_dir 'data/bert-base-uncased_prepared_data'
--task_file 'sample_task_file.yml'
--out_dir 'sample_out'
--epochs 5
--train_batch_size 4
--eval_batch_size 8
--grad_accumulation_steps 2
--log_per_updates 25
--save_per_updates 1000
--eval_while_train True
--test_while_train True
--max_seq_len 50
--silent True لمعرفة البرنامج النصي train.py ووسائطه ، راجع القطار الجاري
بمجرد أن يكون لديك نموذج متعدد المهام مدرب على مهامك ، فإننا نقدم طريقة مريحة وسهلة لاستخدامه للحصول على تنبؤات على العينات من خلال خط أنابيب الاستدلال .
لتشغيل الاستدلال على العينات باستخدام نموذج مدرب لـ Taska و TaskB و TaskC ، يمكنك استيراد فئة InferPipeline وتحميل نموذج المهمة المتعددة المقابلة عن طريق إنشاء كائن من هذه الفئة.
> >> from infer_pipeline import inferPipeline
> >> pipe = inferPipeline ( modelPath = 'sample_out_dir/multi_task_model.pt' , maxSeqLen = 50 ) يمكن استدعاء وظيفة infer للحصول على تنبؤات لعينات الإدخال للمهام المذكورة.
> >> samples = [ [ 'sample_sentence_1' ], [ 'sample_sentence_2' ] ]
> >> tasks = [ 'TaskA' , 'TaskB' ]
> >> pipe . infer ( samples , tasks ) لمعرفة عن infer_pipeline ، راجع الاستنتاج.
هنا يمكنك العثور على مختلف مهام AI للمحادثة كأمثلة ويمكنها تدريب النماذج متعددة المهام في خطوات بسيطة المذكورة في دفاتر الملاحظات.
(الإعداد: متعدد المهام ، نوع المهمة: متعددة)
الكشف عن القصد (نوع المهمة: تصنيف جملة واحدة)
Query: I need a reservation for a bar in bangladesh on feb the 11th 2032
Intent: BookRestaurant
NER (نوع المهمة: تسلسل العلامات)
Query: ['book', 'a', 'spot', 'for', 'ten', 'at', 'a', 'top-rated', 'caucasian', 'restaurant', 'not', 'far', 'from', 'selmer']
NER tags: ['O', 'O', 'O', 'O', 'B-party_size_number', 'O', 'O', 'B-sort', 'B-cuisine', 'B-restaurant_type', 'B-spatial_relation', 'I-spatial_relation', 'O', 'B-city']
اكتشاف الشظايا (نوع المهمة: تصنيف جملة واحدة)
Query: a reservation for
Label: fragment
دفتر ملاحظات :- intent_ner_fragment
ملف التحويل :- transform_file_snips
ملف المهام :- TASKS_FILE_SNIPS
(الإعداد: المهمة الفردية ، نوع المهمة: تصنيف زوج الجملة)
Query1: An old man with a package poses in front of an advertisement.
Query2: A man poses in front of an ad.
Label: entailment
Query1: An old man with a package poses in front of an advertisement.
Query2: A man poses in front of an ad for beer.
Label: non-entailment
دفتر ملاحظات :- Indailment_Snli
ملف التحويل :- transform_file_snli
ملف المهام :- TASKS_FILE_SNLI
(الإعداد: المهمة الفردية ، نوع المهمة: تصنيف زوج الجملة)
Query: how much money did evander holyfield make
Context: Evander Holyfield Net Worth. How much is Evander Holyfield Worth? Evander Holyfield Net Worth: Evander Holyfield is a retired American professional boxer who has a net worth of $500 thousand. A professional boxer, Evander Holyfield has fought at the Heavyweight, Cruiserweight, and Light-Heavyweight Divisions, and won a Bronze medal a the 1984 Olympic Games.
Label: answerable
دفتر الملاحظات :- قابلية الإجابة _detection_msmarco
ملف تحويل :- transform_file_answerability
ملف المهام :- TASKS_FILE_ANSWERABILITY
(الإعداد: المهمة الفردية ، نوع المهمة: تصنيف جملة واحدة)
Query: what's the distance between destin florida and birmingham alabama?
Label: NUMERIC
Query: who is suing scott wolter
Label: PERSON
دفتر ملاحظات :- query_type_detection
ملف التحويل :- transform_file_querytype
ملف المهام :- TASKS_FILE_QUERYTYPE
(الإعداد: متعدد المهام ، نوع المهمة: تسلسل العلامات)
Query: ['Despite', 'winning', 'the', 'Asian', 'Games', 'title', 'two', 'years', 'ago', ',', 'Uzbekistan', 'are', 'in', 'the', 'finals', 'as', 'outsiders', '.']
NER tags: ['O', 'O', 'O', 'I-MISC', 'I-MISC', 'O', 'O', 'O', 'O', 'O', 'I-LOC', 'O', 'O', 'O', 'O', 'O', 'O', 'O']
POS tags: ['I-PP', 'I-VP', 'I-NP', 'I-NP', 'I-NP', 'I-NP', 'B-NP', 'I-NP', 'I-ADVP', 'O', 'I-NP', 'I-VP', 'I-PP', 'I-NP', 'I-NP', 'I-SBAR', 'I-NP', 'O']
دفتر الملاحظات :- ner_pos_tagging_conll
ملف التحويل :- transform_file_conll
ملف المهام :- TASKS_FILE_CONLL
(الإعداد: المهمة الفردية ، نوع المهمة: تصنيف جملة واحدة)
Query: What places have the oligarchy government ?
Label: well-formed
Query: What day of Diwali in 1980 ?
Label: not well-formed
دفتر ملاحظات :- Query_Correctness
ملف تحويل :- transform_file_query_correctness
ملف المهام :- المهام
(الإعداد: المهمة الفردية ، نوع المهمة: تصنيف جملة واحدة)
Query1: What is the most used word in Malayalam?
Query2: What is meaning of the Malayalam word ""thumbatthu""?
Label: not similar
Query1: Which is the best compliment you have ever received?
Query2: What's the best compliment you've got?
Label: similar
دفتر ملاحظات :- Query_Similarity
ملف التحويل :- transform_file_qqp
ملف المهام :- TASKS_FILE_QQP
(الإعداد: المهمة الفردية ، نوع المهمة: تصنيف جملة واحدة)
Review: What I enjoyed most in this film was the scenery of Corfu, being Greek I adore my country and I liked the flattering director's point of view. Based on a true story during the years when Greece was struggling to stand on her own two feet through war, Nazis and hardship. An Italian soldier and a Greek girl fall in love but the times are hard and they have a lot of sacrifices to make. Nicholas Cage looking great in a uniform gives a passionate account of this unfulfilled (in the beginning) love. I adored Christian Bale playing Mandras the heroine's husband-to-be, he looks very very good as a Greek, his personality matched the one of the Greek patriot! A true fighter in there, or what! One of the movies I would like to buy and keep it in my collection...for ever!
Label: positive
دفتر ملاحظات :- IMDB_SENTIMENT_ANALYSIS
ملف التحويل :- transform_file_imdb
ملف المهام :- TASKS_FILE_IMDB