vikram71198's picture
Update README.md
5614eac
|
raw
history blame
3.05 kB
metadata
license: apache-2.0
tags:
  - Fake News Detection
  - Text Classification
model-index:
  - name: distilroberta-base-finetuned-fake-news-detection
    results: []

distilroberta-base-finetuned-fake-news-detection

This model is a fine-tuned version of distilroberta-base on this Fake News Detection Dataset, which has been constructed by combining multiple Fake News datasets from Kaggle.

This is the classification report after training for 3 full epochs:

Precision Recall F-1 Score Support
Not Hate Speech (0) 0.99 0.99 0.99 4335
Hate Speech (1) 0.99 0.99 00.99 3782
accuracy 00.99 8117
macro avg 0.99 0.99 0.99 8117
weighted avg 0.99 0.99 0.99 8117

Training and evaluation data

All of the process to train this model is available in this repository. The dataset has been split into 24,353 examples for training & 8,117 examples for validation & testing each.

Training hyperparameters

The following hyperparameters were used during training:

  • learning_rate: 5e-05
  • train_batch_size: 32
  • eval_batch_size: 32
  • optimizer: default AdamW Optimizer
  • num_epochs: 3
  • warmup_steps: 500
  • weight_decay: 0.01
  • random seed: 42

I also trained for 3 full epochs on Colab's Tesla P100-PCIE-16GB GPU.

Training results

Epoch Training Loss Validation Loss
1 0.099100 0.042086
2 0.030200 0.028448
3 0.017500 0.024397

Model in Action πŸš€

from transformers import AutoTokenizer, AutoModelForSequenceClassification
import torch.nn as nn
tokenizer = AutoTokenizer.from_pretrained("vikram71198/distilroberta-base-finetuned-fake-news-detection")
model = AutoModelForSequenceClassification.from_pretrained("vikram71198/distilroberta-base-finetuned-fake-news-detection")
#Following the same truncation & padding strategy used while training
encoded_input = tokenizer("Enter any news article to be classified. Can be a list of articles too.", truncation = True, padding = "max_length", max_length = 512, return_tensors='pt')
output = model(**encoded_input)["logits"]
#detaching the output from the computation graph
detached_output = output.detach()
#Applying softmax here for single label classification
softmax = nn.Softmax(dim = 1)
prediction_probabilities = list(softmax(detached_output).detach().numpy())
predictions = []
for x,y in prediction_probabilities:
   predictions.append("not_fake_news") if x > y else predictions.append("fake_news")
print(predictions)

Framework versions

  • Transformers 4.12.5
  • Pytorch 1.11.0
  • Datasets 1.17.0
  • Tokenizers 0.10.3