Это исследование было проведено Отманом Эль -Хуфи и Димитрисом Коциносом. Подробная статья опубликована здесь: https://bit.ly/3mzvdup
Поскольку ложная информация и фальшивые новости распространяются по всему Интернету и социальным сетям, необходимость в операциях по проверке фактов становится необходимой для поддержания правдивой цифровой среды, в которой общая информация может быть надежно использована в политике, финансах или других областях. Необходимость этой онлайн-оценки претензий происходит из-за того, что фальшивые новости и ложная информация могут оказать большое негативное влияние на политику, экономику (выборы в США) и общественное здравоохранение (COVID-19).
Был предложен ряд решений для решения этой проблемы и ограничения распространения ложной информации, как ручной, так и автоматической. Несомненно, ручные подходы, выполняемые на таких веб-сайтах, как Politifact.com, FactCheck.org и Snopes.com не строят жизнеспособное решение для долгосрочной перспективы, поскольку скорость и масштаб распространения информации увеличивают экспоненциально вручную эту ручную операцию по проверке фактов, когда человеческие проверки не могут масштабироваться с той же скоростью, ограниченной и неспособным решать проблему.
Здесь мы представляем наш вклад в этом отношении: автоматизированное решение для проверки фактов с использованием современных языковых моделей, используемых сегодня для задач NLP (Bert, Roberta, Xlnet ...) и пять известных наборов данных (Fever, Multifc, Liar, Covid19 и Antivax), содержащих аннотированные претензии/твиты, в том, что они в конечном итоге наносят все возможное, и классифицируют данный утверждение.
Мы успешно доказываем, что тонкая настройка LM с правильными настройками может достичь точности 98% и F1-показателя 98% в наборах данных COVID19 и Antivax, а также точность 64% и F1-показатель 63% в наборе данных лихорадки, который является более продвинутым, чем большинство методов проверки фактов, которые существуют сегодня.
Индексные термины: обработка естественного языка, предварительно обученная языковая модель, Википедия, текстовое корпус, тонкая настройка, обработка текста, вывод о естественном языке, проверка фактов, фальшивые новые, Twitter, сложные сети.
Чтобы запустить эту программу, вы должны сначала установить следующие пакеты:
$ 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Или вы можете установить все зависимости, используя файл neffement.txt в этом репозитории:
$ pip3 install -r requirements.txtРекомендуется использовать графический процессор для языковых моделей на основе тонкой настройки, поскольку это сложная задача, которая требует вычислительной мощности. Программа все еще может работать на процессоре.
Для развертывания 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Мы создали общий кодовый порядок, чтобы предоставить другим разработчикам/исследователям простое приложение Plug и Play. При выполнении программы вы взаимодействуете с простым интерфейсом, который позволяет выбирать 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'
]Если вы хотите использовать другой набор данных, просто следуйте той же архитектуре, что и для существующих наборов данных в этом репозитории.