Diese Forschungsstudie wurde von Othman El Houfi und Dimitris Kotzinos durchgeführt. Hier wird ein detaillierter Artikel veröffentlicht: https://bit.ly/3mzvDup
Da sich falsche Informationen und gefälschte Nachrichten im gesamten Internet- und sozialen Netzwerke vermehren, ist die Notwendigkeit von Tatsachenabschlussprüfungen erforderlich, um eine wahrheitsgemäße digitale Umgebung aufrechtzuerhalten, in der allgemeine Informationen zuverlässig genutzt werden können, ob in Politik, Finanzen oder anderen Bereichen. Die Notwendigkeit dieser Online-Behauptungsbewertung beruht auf der Tatsache, dass gefälschte Nachrichten und falsche Informationen einen großen negativen Einfluss auf die Politik, die Economy (Wahlen der USA) und die öffentliche Gesundheit (Covid-19) haben können.
Es wurde eine Reihe von Lösungen vorgeschlagen, um dieses Problem zu lösen und die Verbreitung falscher Informationen sowohl manuell als auch automatisch zu begrenzen. Zweifellos die manuellen Ansätze, die auf Websites wie Politifact.com, factCheck.org und snopes.com durchgeführt wurden, konstruieren nicht langfristig eine praktikable Lösung, da die Geschwindigkeit und die Skala der Informationsausbreitung exponentiell vergrößert werden und dieses manuelle Tatsachenabbau des Faktenprüfungsbetriebs, bei dem die menschlichen Tatsachenprüfer nicht mit der gleichen Rate begrenzt werden können, und nicht in der Lage sind, das Problem zu lösen.
Hier präsentieren wir unseren Beitrag in dieser Hinsicht: Eine automatisierte Lösung für die Überprüfung der Fakten unter Verwendung hochmoderner Sprachmodelle, die heute für NLP-Aufgaben (Bert, Roberta, XLNET ...) und fünf bekannte Datensätze (Fieber, Multifc, Lügner, CoVID19) und Antivax) verwendet wurden, die annotierte Ansprüche enthalten.
Wir beweisen erfolgreich, dass die Feinabstimmung eines LM mit den richtigen Einstellungen eine Genauigkeit von 98% und F1-Score von 98% in CoVID19- und Antivax-Datensätzen sowie eine Genauigkeit von 64% und F1-Score von 63% im Fieberdatensatz erreichen kann, das heute mehr als die Mehrheit der Tatsache übernimmt, die heute vorhanden sind.
Indexbegriffe: Verarbeitung natürlicher Sprache, vorgebildetes Sprachmodell, Wikipedia, Textkorpus, Feinabstimmung, Textverarbeitung, Inferenzierung für natürliche Sprache, Faktenprüfung, gefälschte News, Twitter, komplexe Netzwerke.
Um dieses Programm auszuführen, müssen Sie zunächst die folgenden Pakete installieren:
$ 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/cpuOder Sie können alle Abhängigkeiten mit der Datei Anforderungstxt in diesem Repository installieren:
$ pip3 install -r requirements.txtEs wird empfohlen, eine GPU für feinabstimmungsbasierte Sprachmodelle zu verwenden, da es eine schwierige Aufgabe ist, die Rechenleistung erfordert. Das Programm kann weiterhin auf einer CPU arbeiten.
Für die Bereitstellung des LMS haben wir die Python-Programmiersprache und die Umarmung der Gesichtsbibliothek verwendet, die Transformers-API bietet, um hochgebliebene Modelle auf dem neuesten Stand der Technik herunterzuladen und zu optimieren. Durch die Verwendung von vorgebreiteten Modellen können Sie Ihre Rechenkosten, den CO2-Fußabdruck reduzieren und Zeit beim Training eines Modells von Grund auf sparen.
Um Schulungsmetriken, Validierungsmetriken, Disk -Nutzung, CPU -Nutzung und andere Umgebungsänderungen während unserer Experimente zu verfolgen, verwendeten wir Gewichte und Verzerrungen API (WANDB). Für jeden Schritt oder jede Epoche senden wir alle Ergebnisse und Änderungen an unser WANDB -Projektprofil und visualisieren Sie alles in Echtzeit.
Um das Programm auszuführen , müssen Sie sich im Repository.
$ ./language_model.py or $ python3 language_model.pyFür mehr Steuerbarkeit können Sie dieser Befehlszeile Optionen hinzufügen. Hier finden Sie die Liste der Optionen:
$ ./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.
Zum Beispiel, wenn Sie das Programm im Fever -Datensatz ausführen möchten:
$ ./language_model.py -d FEVER -n 3 -e 3 -t 20 -v 20Wir haben eine generische Code -Bestellung erstellt, um anderen Entwicklern/Forschern eine einfache Plug -and -Play -Anwendung zur Verfügung zu stellen. Wenn Sie das Programm ausführen, interagieren Sie mit einer einfachen Schnittstelle, mit der Sie die LM auswählen können, die Sie verwenden möchten, und eine Liste von Vorgängen wie Feinabstimmung oder Bewertung des Modells.
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
Schließlich können Sie weitere Parameter in der Datei bearbeiten ./LM_FOR_FACT_CHECKING/MODEL/CONF.PY . Sie können auch Ihr Wandb -Profil und andere LMs hinzufügen:
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'
]Wenn Sie einen anderen Datensatz verwenden möchten, befolgen Sie einfach dieselbe Architektur, die für die vorhandenen Datensätze in diesem Repository verwendet wird.