File size: 1,699 Bytes
18eda99
e7b4ab2
bcb51a3
18eda99
 
 
 
 
 
 
fdef919
18eda99
 
 
 
 
 
669e067
18eda99
 
 
 
 
 
 
 
 
 
 
669e067
 
 
fdef919
669e067
fdef919
 
e7b4ab2
fdef919
669e067
 
 
fdef919
 
669e067
fdef919
 
e7b4ab2
fdef919
e6591a5
18eda99
 
 
 
 
 
 
 
 
 
 
 
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
54
55
56
57
58
59
60
61
62
import streamlit as st
from transformers import pipeline

@st.cache_resource
def load_summarizer():
    return pipeline(
        "summarization",
        model="sshleifer/distilbart-cnn-12-6",
        tokenizer="sshleifer/distilbart-cnn-12-6"
    )

@st.cache_resource
def load_sentiment():
    return pipeline(
        "sentiment-analysis",
        model="distilbert-base-uncased-finetuned-sst-2-english"
    )

@st.cache_resource
def load_fake_news_detector():
    return pipeline(
        "text-classification",
        model="mrm8488/bert-tiny-finetuned-fake-news-detection",
        tokenizer="mrm8488/bert-tiny-finetuned-fake-news-detection"
    )

summarizer = load_summarizer()
sentiment_pipe = load_sentiment()
fake_news_pipe = load_fake_news_detector()

def summarize_texts(texts):
    summaries = []
    for text in texts:
        try:
            result = summarizer(text, max_length=60, min_length=15, do_sample=False)
            summaries.append(result[0]["summary_text"])
        except Exception:
            summaries.append("⚠️ Summary failed")
    return summaries

def analyze_sentiment(texts):
    results = []
    for text in texts:
        try:
            res = sentiment_pipe(text[:512])[0]["label"]
            results.append(res)
        except Exception:
            results.append("Unknown")
    return results

def detect_fake_news(texts):
    results = []
    for text in texts:
        try:
            prediction = fake_news_pipe(text[:512])[0]
            label = prediction["label"]
            score = prediction["score"]
            results.append(f"{label} ({score:.2f})")
        except Exception:
            results.append("Unknown")
    return results