Cette étude a été menée par Othman El Houfi et Dimitris Kotzinos. Un article détaillé est publié ici: https://bit.ly/3mzvdup
Alors que les fausses informations et les fausses nouvelles se propagent sur Internet et les réseaux sociaux, la nécessité d'opérations de vérification des faits devient nécessaire afin de maintenir un environnement numérique véridique où les informations générales peuvent être exploitées de manière fiable, que ce soit dans la politique, la finance ou d'autres domaines. La nécessité de cette évaluation des réclamations en ligne provient du fait que les fausses nouvelles et les fausses informations peuvent avoir un gros impact négatif sur la politique, l'économie (élections américaines de 2016) et la santé publique (Covid-19).
Un certain nombre de solutions ont été proposées pour traiter ce problème et limiter la diffusion de fausses informations, manuelles et automatiques. Sans aucun doute, les approches manuelles réalisées sur des sites Web tels que Politifact.com, factcheck.org et snopes.com ne construisent pas une solution viable à long terme, car la vitesse et l'échelle de la propagation des informations augmentent de façon exponentielle rendant cette opération manuelle de vérification des faits lorsque les vérificateurs de faits humains ne peuvent pas augmenter au même rythme limité et incapable de résoudre le problème.
Ici, nous présentons notre contribution à cet égard: une solution automatisée pour la vérification des faits à l'aide de modèles de langage de pointe utilisés aujourd'hui pour les tâches NLP (Bert, Roberta, XLNET ...) et cinq ensembles de données bien connus (fièvre, multifc, menteur, régide19 et antivax) contenant une réclamation annotée / tweets afin de rafraîchir le LM et la classification d'une affirmation annotée.
Nous prouvons avec succès que le réglage fin d'un LM avec les paramètres corrects peut atteindre une précision de 98% et un score F1 de 98% dans les ensembles de données Covid19 et Antivax, ainsi qu'une précision de 64% et du score F1 de 63% dans un ensemble de données de fièvre qui est plus avancé que la majorité des méthodes de réchauffage des faits qui existent aujourd'hui.
Termes d'index: traitement du langage naturel, modèle de langage pré-formé, wikipedia, corpus de texte, réglage fin, traitement de texte, induction du langage naturel, vérification des faits, faux-neuf, Twitter, réseaux complexes.
Afin d'exécuter ce programme, vous devez d'abord installer les packages suivants:
$ 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/cpuOu vous pouvez installer toutes les dépendances à l'aide du fichier exigence.txt dans ce référentiel:
$ pip3 install -r requirements.txtIl est recommandé d'utiliser un GPU pour les modèles de langage basés sur les transformateurs à réglage fin car c'est une tâche difficile qui nécessite une puissance de calcul. Le programme peut toujours fonctionner sur un processeur.
Pour le déploiement de la LMS, nous avons utilisé le langage de programmation Python et la bibliothèque FACE HUGGINGS qui fournit des transformateurs API pour télécharger et affiner facilement les modèles pré-formés de pointe. L'utilisation de modèles pré-formés peut réduire vos coûts de calcul, une empreinte carbone et gagner du temps de la formation d'un modèle à partir de zéro.
Afin de suivre les mesures de formation, les mesures de validation, l'utilisation du disque, l'utilisation du processeur et d'autres changements d'environnement pendant nos expériences, nous avons utilisé l'API de poids et biais (WANDB). Pour chaque étape ou époque, nous envoyons tous les scores et modifications à notre profil de projet WANDB et visualisons tout en temps réel.
Pour exécuter le programme, vous devez être dans le référentiel ./LM_FOR_FACT_CHECKING/MODEL et exécuter:
$ ./language_model.py or $ python3 language_model.pyPour plus de contrôlabilité, vous pouvez ajouter des options à cette ligne de commande, voici la liste des options:
$ ./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.
Par exemple, si vous souhaitez exécuter le programme sur l'ensemble de données de fièvre:
$ ./language_model.py -d FEVER -n 3 -e 3 -t 20 -v 20Nous avons créé un ordre de code générique pour fournir à d'autres développeurs / chercheurs une application de fiche et de lecture facile. Lors de l'exécution du programme, vous interagissez avec une interface simple qui vous permettent de choisir le LM que vous souhaitez utiliser et une liste d'opérations comme le réglage fin ou l'évaluation du modèle.
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
Enfin, vous pouvez modifier plus de paramètres dans le fichier ./lm_for_fact_checking/model/conf.py . Vous pouvez également ajouter votre profil WANDB et d'autres 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'
]Si vous souhaitez utiliser un ensemble de données différent, suivez simplement la même architecture utilisée pour les ensembles de données existants dans ce référentiel.