Este estudio de investigación fue realizado por Othman El Houfi y Dimitris Kotzinos. Aquí se publica un artículo detallado: https://bit.ly/3mzvdup
Como la información falsa y las noticias falsas se propagan en Internet y las redes sociales, la necesidad de operaciones de verificación de hechos se hace necesario para mantener un entorno digital veraz donde la información general puede ser explotada de manera confiable, ya sea en política, finanzas u otros dominios. La necesidad de esta evaluación de reclamos en línea proviene del hecho de que las noticias falsas y la información falsa pueden tener un gran impacto negativo en la política, la economía (elecciones de EE. UU. 2016) y la salud pública (CoVID-19).
Se han propuesto varias soluciones para tratar este problema y limitar la propagación de información falsa, tanto manual como automática. Sin lugar a dudas, los enfoques manuales realizados en sitios web como Politifact.com, FactCheck.org y Snopes.com no construyen una solución viable a largo plazo, ya que la velocidad y la escala de la propagación de la información aumentan exponencialmente, lo que hace que esta operación manual de verificación de hechos manual no pueda escalar a la misma velocidad limitada e incapaz de resolver el problema.
Aquí, presentamos nuestra contribución a este respecto: una solución automatizada para la verificación de hechos utilizando modelos de lenguaje de última generación utilizados hoy para tareas de PNL (Bert, Roberta, XLNet ...) y cinco conjuntos de datos bien conocidos (fiebre, multifc, liar, covid19 y antiVAX) que contienen reclamos anotados/tweets para fingir cada LM y clasificar una reclamación dada.
Probamos con éxito que el ajuste de A LM con la configuración correcta puede lograr una precisión del 98% y el puntaje F1 del 98% en los conjuntos de datos CoVID19 y Antivax, así como una precisión del 64% y la puntuación F1 del 63% en el conjunto de datos de fiebre, que es más avanzado que la mayoría de los métodos de compra de hechos que existen hoy.
Términos del índice: procesamiento del lenguaje natural, modelo de lenguaje previamente capacitado, Wikipedia, corpus de texto, ajuste fino, procesamiento de texto, inferencia de lenguaje natural, verificación de hechos, revistas falsas, Twitter, redes complejas.
Para ejecutar este programa, primero debe instalar los siguientes paquetes:
$ 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/cpuO puede instalar todas las dependencias utilizando el archivo requiration.txt en este repositorio:
$ pip3 install -r requirements.txtSe recomienda utilizar una GPU para modelos de lenguaje basados en transformadores de ajuste fino, ya que es una tarea difícil que requiere potencia computacional. El programa aún puede funcionar en una CPU.
Para la implementación del LMS, utilizamos el lenguaje de programación de Python y la biblioteca de abrazadera que proporciona API de transformadores para descargar fácilmente y ajustar los modelos previamente capacitados de última generación. El uso de modelos previamente capacitados puede reducir sus costos de cómputo, la huella de carbono y ahorrar tiempo para entrenar un modelo desde cero.
Para rastrear las métricas de capacitación, las métricas de validación, el uso de disco, el uso de la CPU y otros cambios en el entorno durante nuestros experimentos, utilizamos Pesos y API de sesgos (WANDB). Para cada paso o época, enviamos todos los puntajes y cambios a nuestro perfil del proyecto Wandb y visualizamos todo en tiempo real.
Para ejecutar el programa, debe estar en el repositorio ./lm_for_fact_checking/model y ejecutar:
$ ./language_model.py or $ python3 language_model.pyPara obtener más capacidad de control, puede agregar opciones a esta línea de comando, aquí está la lista de opciones:
$ ./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.
Por ejemplo, si desea ejecutar el programa en el conjunto de datos de fiebre:
$ ./language_model.py -d FEVER -n 3 -e 3 -t 20 -v 20Creamos un orden de código genérico para proporcionar a otros desarrolladores/investigadores una aplicación fácil de enchufe y reproducción. Al ejecutar el programa, interactúa con una interfaz simple que le permite elegir el LM que desea usar y una lista de operaciones como ajustar o evaluar el modelo.
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
Finalmente, puede editar más parámetros en el archivo ./lm_for_fact_checking/model/conf.py . También puede agregar su perfil Wandb y otros LM:
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 desea usar un conjunto de datos diferente, simplemente siga la misma arquitectura utilizada para los conjuntos de datos existentes en este repositorio.