وقد أجريت هذه الدراسة البحثية من قبل Othman El Houfi و Dimitris Kotzinos. يتم نشر مقال مفصل هنا: https://bit.ly/3mzvdup
نظرًا لأن المعلومات الخاطئة والأخبار المزيفة تنتشر في جميع أنحاء الإنترنت والشبكات الاجتماعية ، فإن الحاجة إلى عمليات التحقق من الحقائق تصبح ضرورية من أجل الحفاظ على بيئة رقمية صادقة حيث يمكن استغلال المعلومات العامة بشكل موثوق سواء في السياسة أو التمويل أو المجالات الأخرى. تأتي الحاجة إلى تقييم المطالبة عبر الإنترنت هذا من حقيقة أن الأخبار المزيفة والمعلومات الخاطئة يمكن أن يكون لها تأثير سلبي كبير على السياسة والاقتصاد (انتخابات الولايات المتحدة الأمريكية 2016) والصحة العامة (COVID-19).
تم اقتراح عدد من الحلول للتعامل مع هذه المشكلة والحد من انتشار المعلومات الخاطئة ، اليدوي والتلقائي. مما لا شك فيه أن الأساليب اليدوية التي تم إجراؤها على مواقع الويب مثل PolitiFact.com و FactCheck.org و Snopes.com لا تبني حلاً قابلاً للتطبيق على المدى الطويل ، حيث يزيد سرعة انتشار المعلومات بشكل كبير مما يجعل هذه العملية اليدوية التي تخضع للوقائع ، حيث لا يمكن لصياغة الحقائق البشرية أن تتوسع بنفس المعدل المحدودة في حل المشكلة.
هنا ، نقدم مساهمتنا في هذا الصدد: حل آلي لتكسير الحقائق باستخدام نماذج اللغة الحديثة المستخدمة اليوم لمهام NLP (Bert ، Roberta ، XLNET ...) وخمس مجموعات بيانات معروفة (حمى ، MultiFC ، Liar ، Covid19 ، ومضادة للضريبة) التي تحتوي على مطالبات مخصصة.
نثبت بنجاح أن ضبط LM مع الإعدادات الصحيحة يمكن أن يحقق دقة 98 ٪ وندرج F1 بنسبة 98 ٪ في مجموعات بيانات COVID19 ومضادات الفاكس ، بالإضافة إلى دقة 64 ٪ و F1 درجة من 63 ٪ في مجموعة بيانات الحمى التي هي أكثر تقدماً من أساليب الصدفة الواقعية اليوم.
مصطلحات الفهرس: معالجة اللغة الطبيعية ، نموذج اللغة المسبق ، ويكيبيديا ، مجموعة نصية ، صقل ، معالجة نصية ، استدلال اللغة الطبيعية ، فحص الحقائق ، الأخبار المزيفة ، تويتر ، شبكات معقدة.
من أجل تشغيل هذا البرنامج ، يجب عليك أولاً تثبيت الحزم التالية:
$ pip3 install numpy pandas sklearn transformers wandb texttable
$ pip3 install torch torchvision torchaudio torchinfo
$ pip3 install torch torchvision torchaudio --extra-index-url https://download.pytorch.org/whl/cpuأو يمكنك تثبيت جميع التبعيات باستخدام ملف متطلبات. txt في هذا المستودع:
$ pip3 install -r requirements.txtيوصى باستخدام GPU لنماذج اللغة المستندة إلى محولات التكييف حيث إنها مهمة صعبة تتطلب قوة حسابية. لا يزال بإمكان البرنامج العمل على وحدة المعالجة المركزية.
بالنسبة لنشر LMS ، استخدمنا لغة برمجة Python ومكتبة وجه المعانقة التي توفر API Transformers لتنزيل النماذج المتدربة قبل التدريب على أحدث طراز. يمكن أن يؤدي استخدام النماذج المدربة مسبقًا إلى تقليل تكاليف حسابك ، ومساحة الكربون ، وتوفير الوقت من تدريب نموذج من نقطة الصفر.
من أجل تتبع مقاييس التدريب ، ومقاييس التحقق من الصحة ، واستخدام القرص ، واستخدام وحدة المعالجة المركزية وتغييرات البيئة الأخرى خلال تجاربنا ، استخدمنا الأوزان والتحيزات API (WANDB). لكل خطوة أو عصر نرسل جميع الدرجات والتغييرات في ملف تعريف مشروع WANDB الخاص بنا وتصور كل شيء في الوقت الفعلي.
لتنفيذ البرنامج ، يجب أن تكون في ./lm_for_fact_checking/model مستودع وتنفيذ:
$ ./language_model.py or $ python3 language_model.pyلمزيد من القابلية للتحكم ، يمكنك إضافة خيارات إلى سطر الأوامر هذا ، إليك قائمة الخيارات:
$ ./language_model.py --help
usage: language_model.py [-h] [-r] [-d DATASET] [-n NUM_LABELS] [-e EPOCH] [-t TRAIN_BATCH] [-v EVAL_BATCH]
options:
-h, --help show this help message and exit
-r, --report Possible values ["none", "wandb"]. If used all logs during training and evaluation
are reported through Wandb API (must be connected with the right credentials).
-d DATASET, --dataset DATASET
Choose dataset by specifying its name: FEVER, MultiFC, Liar...
-n NUM_LABELS, --num_labels NUM_LABELS
Specify the number of labels in the dataset. Required if dataset is manually
specified (minimum is 2).
-e EPOCH, --epoch EPOCH
Specify the number of training epochs.
-t TRAIN_BATCH, --train_batch TRAIN_BATCH
Specify the size of training batch.
-v EVAL_BATCH, --eval_batch EVAL_BATCH
Specify the size of validation batch.
على سبيل المثال ، إذا كنت ترغب في تشغيل البرنامج على مجموعة بيانات الحمى:
$ ./language_model.py -d FEVER -n 3 -e 3 -t 20 -v 20لقد أنشأنا ترتيب رمز عام لتزويد المطورين/الباحثين الآخرين بتطبيق سهلة التوصيل والتشغيل. عند تنفيذ البرنامج ، تتفاعل مع واجهة بسيطة تتيح لك اختيار LM الذي ترغب في استخدامه وقائمة من العمليات مثل صقل أو تقييم النموذج.
Hi, choose a Language Model:
1 - bert-base-uncased
2 - roberta-base
3 - albert-base-v2
4 - distilbert-base-uncased
5 - xlnet-base-cased
6 - google/bigbird-roberta-base
7 - YituTech/conv-bert-base
0 - Quit program
4
**************** distilbert-base-uncased Model ****************
1 - Show dataset description
2 - Start model fine-tuning
3 - Start model predictions
4 - Show model metrics
0 - Quit program
أخيرًا ، يمكنك تحرير المزيد من المعلمات في الملف ./lm_for_fact_checking/model/conf.py . يمكنك أيضًا إضافة ملف تعريف WANDB الخاص بك و LMS الأخرى:
DEFAULT_PARAMS = {
# Transformer model
'MODEL_NAME' : None ,
# Dataset name
'DATASET_NAME' : 'FEVER' ,
'DATA_NUM_LABEL' : 2 , # minimum 2 labels
# hyperparams
'MAX_SEQ_LEN' : 128 ,
'TRAIN_BATCH_SIZE' : 20 ,
'EVAL_BATCH_SIZE' : 20 ,
'EPOCHS' : 3 ,
'LR' : 3e-5 ,
'OPTIM' : 'adamw_hf' ,
# Huggingface Trainer params
'EVAL_STEPS' : 100 ,
'SAVE_STEPS' : 100 ,
'LOGGING_STEPS' : 100 ,
'SAVE_TOTAL_LIMIT' : 1 ,
'EARLY_STOPPING_PATIENCE' : 3 ,
'REPORT' : 'none' ,
}
WANDB_PARAMS = {
'project' : 'LM-for-fact-checking' ,
'entity' : 'othmanelhoufi' ,
}
""" Here you can add more LMs to the list for more experiments """
MODEL_LIST = [
'bert-base-uncased' ,
'roberta-base' ,
'albert-base-v2' ,
'distilbert-base-uncased' ,
'xlnet-base-cased' ,
'google/bigbird-roberta-base' ,
'YituTech/conv-bert-base'
]إذا كنت ترغب في استخدام مجموعة بيانات مختلفة ، فما عليك سوى اتباع نفس البنية المستخدمة لمجموعات البيانات الموجودة في هذا المستودع.