Rilevamento delle Fake News con Machine Learning e un Plug-in per Chrome

Rilevamento delle Fake News con Machine Learning e un Plug-in per Chrome

Sviluppo di un modello di Machine Learning basato su NLP per identificare fake news. Integrazione in un plug-in per Chrome e API Flask per l'analisi in tempo reale delle notizie online.

Contesto e obiettivo

Il problema delle fake news è diventato una minaccia significativa nel mondo moderno, alimentato dalla crescente diffusione dei social media e dalla velocità con cui le informazioni possono viaggiare. Questo fenomeno ha portato a disinformazione diffusa e ha creato problemi nella società e nelle istituzioni.

Ho proposto questa soluzione a un’importante ente regolatorio del settore media e informazione, che era alla ricerca di strumenti efficaci per contrastare la disinformazione. La mia proposta consisteva nello sviluppo di un plug-in per Chrome in grado di identificare se una notizia è falsa o veritiera. Il sistema avrebbe avuto lo scopo di proteggere gli utenti dalla disinformazione, migliorando la qualità delle informazioni online.

Soluzione implementata

Per affrontare questa sfida, ho sviluppato un modello di Machine Learning utilizzando tecniche di Natural Language Processing (NLP) per analizzare e classificare le notizie come vere o false. Il modello è stato integrato in un plug-in per il browser Chrome, offrendo agli utenti un’indicazione in tempo reale sulla veridicità delle notizie che stanno leggendo.

Tecnologie e strumenti utilizzati

  • Linguaggio di Programmazione: Python
  • Librerie: scikit-learn, pandas, numpy, nltk
  • Strumenti di Sviluppo: Jupyter Notebook per lo sviluppo e la sperimentazione del modello; pickle per la serializzazione del modello addestrato
  • Dataset: Due raccolte di notizie fornite, una contenente solo notizie false e l’altra solo notizie vere
  • Modello ML: Naive Bayes per la classificazione del testo
  • Estrazione delle feature: TF-IDF (Term Frequency-Inverse Document Frequency)

Processo di sviluppo

1. Analisi eplorativa dei dati

Ho iniziato con un’analisi approfondita dei dataset per comprendere le caratteristiche distintive delle notizie vere e false. Alcune delle domande chiave analizzate:

  • Le fake news sono più frequenti in una determinata categoria?
  • Esistono argomenti che sono più soggetti alle fake news?
  • I titoli delle fake news presentano dei pattern ricorrenti?

2. Preprocessing dei dati

Ho effettuato diversi passaggi di pulizia del testo:

  • Rimozione di punteggiatura e stop words
  • Conversione del testo in minuscolo
  • Tokenizzazione e lemmatizzazione per uniformare le parole

3. Estrazione delle caratteristiche

Per convertire il testo in una rappresentazione numerica utilizzabile dal modello, ho adottato la tecnica TF-IDF, che misura l’importanza delle parole nei documenti.

from sklearn.feature_extraction.text import TfidfVectorizer

vectorizer = TfidfVectorizer(stop_words="english", max_df=0.7)
X_train_tfidf = vectorizer.fit_transform(X_train)
X_test_tfidf = vectorizer.transform(X_test)

4. Addestramento del modello

Il modello è stato addestrato con il classificatore Naive Bayes, noto per la sua efficacia nella classificazione di testi.

from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score

classifier = MultinomialNB()
classifier.fit(X_train_tfidf, y_train)

predictions = classifier.predict(X_test_tfidf)
accuracy = accuracy_score(y_test, predictions)
print(f"Accuracy del modello: {accuracy:.2f}")

L’accuratezza del modello ha superato il 90%, dimostrando un’elevata capacità di distinguere notizie vere da fake news.

5. Validazione e ottimizzazione

Ho valutato il modello con metriche standard come accuracy, precision, recall e F1-score, migliorando le prestazioni con tecniche di ottimizzazione.

from sklearn.metrics import classification_report

print(classification_report(y_test, predictions))

6. Esportazione del modello

Una volta ottenuti risultati soddisfacenti, ho salvato il modello in formato pickle per l’integrazione nel plug-in Chrome.

import pickle

with open("fake_news_model.pkl", "wb") as model_file:
    pickle.dump(classifier, model_file)

Integrazione nel Plug-in Chrome

Il plug-in per Chrome utilizza JavaScript per inviare il testo della notizia a un server Python Flask, che carica il modello ML e restituisce un’indicazione visiva all’utente.

Esempio di chiamata API nel plug-in:

fetch("http://localhost:5000/predict", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ text: newsText })
})
.then(response => response.json())
.then(data => {
    if (data.is_fake) {
        alert("⚠️ Questa notizia potrebbe essere falsa!");
    } else {
        alert("✅ Notizia verificata!");
    }
});

Mentre il backend Flask elabora la richiesta:

from flask import Flask, request, jsonify
import pickle

app = Flask(__name__)

with open("fake_news_model.pkl", "rb") as model_file:
    model = pickle.load(model_file)

@app.route("/predict", methods=["POST"])
def predict():
    data = request.json["text"]
    vectorized_text = vectorizer.transform([data])
    prediction = model.predict(vectorized_text)[0]
    return jsonify({"is_fake": bool(prediction)})

if __name__ == "__main__":
    app.run(port=5000)

Risultati e benefici

Il mio sistema di rilevamento delle fake news ha avuto un impatto significativo:

  • Riduzione della disinformazione: aiuta gli utenti a identificare tempestivamente notizie non attendibili.
  • Miglioramento della fiducia nei media: fornisce strumenti tecnologici avanzati per contrastare il problema della disinformazione.
  • Supporto decisionale: utenti e istituzioni possono prendere decisioni basate su informazioni più affidabili.

Conclusione e futuri miglioramenti

Questo mio progetto rappresenta un passo importante verso la lotta alla disinformazione online. Alcune possibili evoluzioni future che sto considerando includono:

  • Utilizzo di modelli avanzati come BERT per migliorare l’accuratezza della classificazione.
  • Estensione del sistema per analizzare anche immagini e video, oltre ai testi.
  • Creazione di una dashboard per monitorare le tendenze delle fake news nel tempo.
TUTTI I PROGETTI →

Affrontiamo le sfide insieme

Dall’ottimizzazione dei processi alla risoluzione di problemi complessi, posso supportarti con un approccio pratico e su misura.

Risorse consigliate

Netsons - Hosting SSD 10

Il tuo primo sito web merita la velocità SSD! Hosting economico ma potente con dominio incluso, 10 GB di spazio e certificato SSL gratuito.

DigitalOcean - Il cloud che parla la tua lingua

Infrastruttura cloud semplice, potente e a prezzo prevedibile. Droplets, Kubernetes, database gestiti e app platform per sviluppatori che vogliono concentrarsi sul codice.

Google Workspace - La tua azienda in un click

Trasforma il modo di lavorare con email professionali, documenti collaborativi, videoconferenze e cloud storage in un'unica soluzione integrata.