이 연구는 Othman El Houfi와 Dimitris Kotzinos에 의해 수행되었습니다. 자세한 기사는 여기에 게시되어 있습니다 : https://bit.ly/3mzvdup
잘못된 정보와 가짜 뉴스가 인터넷과 소셜 네트워크 전반에 걸쳐 전파되기 때문에, 정치, 재무 또는 기타 영역에서 일반 정보를 안정적으로 이용할 수있는 진실한 디지털 환경을 유지하기 위해서는 사실 확인 작업의 필요성이 필요합니다. 이 온라인 청구 평가의 필요성은 가짜 뉴스와 허위 정보가 정치, 경제 (2016 USA 선거) 및 공중 보건 (COVID-19)에 큰 부정적인 영향을 줄 수 있다는 사실에서 비롯됩니다.
이 문제를 다루고 수동 및 자동으로 허위 정보의 확산을 제한하기 위해 많은 솔루션이 제안되었습니다. 의심 할 여지없이 Politifact.com, Factcheck.org 및 Snopes.com과 같은 웹 사이트에서 수행 한 수동 접근 방식은 정보 전파의 속도와 규모가 기하 급수적으로 증가하여 인간의 사실 검사기가 동일한 속도로 제한되어 문제를 해결할 수없는이 수동 사실 확인 작업을 기하 급수적으로 렌더링함에 따라 장기적으로 실행 가능한 솔루션을 구성하지 않습니다.
여기에서 우리는 이와 관련하여 우리의 기여를 제시합니다. 오늘날 NLP 작업 (Bert, Roberta, Xlnet ...)에 사용되는 최첨단 언어 모델과 5 개의 잘 알려진 데이터 세트 (열, MultifC, Liar, Covid19 및 Antivax)가 포함 된 각 LM 및 Tweets를 포함하여 주어진 주장을 제한하기 위해 획득하는 5 개의 잘 알려진 데이터 세트 (열, Multifc, Liar, Covid19 및 Antivax)를 사용하여 사실 확인 솔루션을 제시합니다.
우리는 올바른 설정으로 LM을 미세 조정하면 Covid19 & Antivax 데이터 세트에서 98% 및 F1- 점수의 정확도와 오늘날 존재하는 사실 확인 방법의 대부분보다 64%의 정확도와 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또는이 저장소에서 요구 사항 을 사용하여 모든 종속성을 설치할 수 있습니다.
$ pip3 install -r requirements.txt계산 능력이 필요한 어려운 작업이므로 미세 조정 변압기 기반 언어 모델에 GPU를 사용하는 것이 좋습니다. 이 프로그램은 여전히 CPU에서 작동 할 수 있습니다.
LMS 배치를 위해 Python 프로그래밍 언어와 Hugging Face Library를 사용하여 Transformers API를 제공하여 최첨단 미리 훈련 된 모델을 쉽게 다운로드하고 미세 조정했습니다. 미리 훈련 된 모델을 사용하면 컴퓨팅 비용, 탄소 발자국을 줄이며 모델을 처음부터 훈련하여 시간을 절약 할 수 있습니다.
실험 중에 교육 메트릭, 검증 메트릭, 디스크 사용, CPU 사용 및 기타 환경 변경을 추적하기 위해 Weights & Biases 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.
예를 들어 DataSet에서 프로그램을 실행하려는 경우 :
$ ./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'
]다른 데이터 세트를 사용하려면이 저장소의 기존 데이터 세트에 사용 된 것과 동일한 아키텍처를 따르십시오.