File size: 2,115 Bytes
b654f44
 
 
 
 
 
 
 
 
 
 
 
 
 
b7534c5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
---
language:
- en
---
### Model Description
This model is a Binary classification model trained on the Liar Dataset using the BERT (bert-base-uncased) architecture. The primary task is to classify news articles into different categories, making it suitable for fake news detection.
BERT (Bidirectional Encoder Representations from Transformers) is a transformer-based model known for its effectiveness in natural language processing tasks.

The model classifies the input text into 2 classes, True (Real News) or False (Fake News).

The original labels include 'true', 'mostly-true', 'half-true', 'barely-true', 'false', and 'pants-fire'. 
In this custom mapping, statements labeled as 'true', 'mostly-true', and 'half-true' are all categorized as 'true', while 'barely-true', 'false', and 'pants-fire' are grouped under the 'false' category. 
This mapping simplifies the classification task into a binary problem, aiming to distinguish between truthful and non-truthful statements.

Bias: The model may inherit biases present in the training data, and it's important to be aware of potential biases in the predictions.

## Code Implementation
```python
# Load model directly
from transformers import AutoTokenizer, AutoModelForSequenceClassification

# Load the pre-trained model and tokenizer
tokenizer = AutoTokenizer.from_pretrained(
    "Arjun24420/BERT-FakeNews-BinaryClassification")
model = AutoModelForSequenceClassification.from_pretrained(
    "Arjun24420/BERT-FakeNews-BinaryClassification")


def predict(text):
    # Tokenize the input text and move tensors to the GPU if available
    inputs = tokenizer(text, padding=True, truncation=True,
                       max_length=512, return_tensors="pt")

    # Get model output (logits)
    outputs = model(**inputs)

    probs = outputs.logits.softmax(1)
    # Get the probabilities for each class
    class_probabilities = {class_mapping[i]: probs[0, i].item()
                           for i in range(probs.shape[1])}

    return class_probabilities


# Define class labels mapping
class_mapping = {
    0: 'reliable',
    1: 'unreliable',
}


```