Crea un rilevatore di spam per email utilizzando Amazon SageMaker

Crea un rilevatore di spam con Amazon SageMaker

Le email di spam, anche conosciute come junk mail, vengono inviate contemporaneamente a un gran numero di utenti e spesso contengono truffe, contenuti di phishing o messaggi criptici. Le email di spam vengono talvolta inviate manualmente da un essere umano, ma più spesso vengono inviate utilizzando un bot. Esempi di email di spam includono annunci falsi, catene di email e tentativi di impersonificazione. C’è il rischio che una email di spam particolarmente ben mascherata possa finire nella tua casella di posta, il che può essere pericoloso se cliccato. È importante prendere precauzioni extra per proteggere il tuo dispositivo e le informazioni sensibili.

Con l’avanzamento della tecnologia, la rilevazione delle email di spam diventa una sfida difficile a causa della sua natura mutevole. Lo spam è molto diverso da altri tipi di minacce alla sicurezza. Potrebbe sembrare inizialmente un messaggio fastidioso e non una minaccia, ma ha un effetto immediato. Inoltre, gli spammers spesso si adattano a nuove tecniche. Le organizzazioni che forniscono servizi di posta elettronica vogliono ridurre al minimo lo spam per evitare danni ai propri clienti finali.

In questo post, mostriamo quanto sia semplice creare un rilevatore di email di spam utilizzando Amazon SageMaker. L’algoritmo integrato BlazingText offre implementazioni ottimizzate degli algoritmi Word2vec e di classificazione del testo. Word2vec è utile per varie attività di elaborazione del linguaggio naturale (NLP), come l’analisi del sentiment, il riconoscimento delle entità nominate e la traduzione automatica. La classificazione del testo è essenziale per applicazioni come le ricerche web, il recupero delle informazioni, la classifica e la classificazione dei documenti.

Panoramica della soluzione

In questo post mostriamo come è semplice configurare un rilevatore di email di spam e filtrare le email di spam utilizzando SageMaker. Vediamo come funziona tipicamente un rilevatore di spam, come mostrato nel seguente diagramma.

Le email vengono inviate attraverso un rilevatore di spam. Una email viene inviata alla cartella dello spam se il rilevatore di spam la rileva come spam. Altrimenti, viene inviata nella casella di posta dell’utente.

Ti guideremo attraverso i seguenti passaggi per configurare il nostro modello di rilevatore di spam:

  1. Scarica il dataset di esempio dal repo di GitHub.
  2. Carica i dati in un notebook di Amazon SageMaker Studio.
  3. Prepara i dati per il modello.
  4. Addestra, distribuisci e testa il modello.

Prerequisiti

Prima di affrontare questo caso d’uso, completa i seguenti prerequisiti:

  1. Configura un account AWS.
  2. Configura un dominio SageMaker.
  3. Crea un bucket di Amazon Simple Storage Service (Amazon S3). Per istruzioni, consulta “Crea il tuo primo bucket S3”.

Scarica il dataset

Scarica il file email_dataset.csv da GitHub e carica il file nel bucket S3.

L’algoritmo BlazingText si aspetta un singolo file di testo preelaborato con token separati da spazi. Ogni riga nel file dovrebbe contenere una singola frase. Se è necessario addestrare su più file di testo, concatenali in un unico file e carica il file nel canale corrispondente.

Carica i dati in SageMaker Studio

Per eseguire il caricamento dei dati, completa i seguenti passaggi:

  1. Scarica il file spam_detector.ipynb da GitHub e carica il file in SageMaker Studio.
  2. Nel tuo notebook di Studio, apri il notebook spam_detector.ipynb.
  3. Se ti viene chiesto di scegliere un kernel, scegli il kernel Python 3 (Data Science 3.0) e scegli Seleziona. In caso contrario, verifica che sia stato selezionato automaticamente il kernel corretto.

  1. Importa la libreria Python richiesta e imposta i ruoli e i bucket S3. Specifica il bucket S3 e il prefisso in cui hai caricato email_dataset.csv.

  1. Esegui la fase di caricamento dei dati nel notebook.

  1. Verifica se il dataset è bilanciato o meno in base alle etichette di categoria.

Possiamo vedere che il nostro dataset è bilanciato.

Prepara i dati

L’algoritmo BlazingText si aspetta che i dati abbiano il seguente formato:

__label__<etichetta> "<caratteristiche>"

Ecco un esempio:

__label__0 "Questo è HAM"
__label__1 "Questo è SPAM"

Verifica il formato dei dati di addestramento e di validazione per l’algoritmo BlazingText.

Ora esegui la fase di preparazione dei dati nel notebook.

  1. Prima di tutto, devi convertire la colonna Categoria in un numero intero. La cella seguente sostituisce il valore SPAM con 1 e il valore HAM con 0.

  1. La cella successiva aggiunge il prefisso __label__ a ciascun valore di Categoria e tokenizza la colonna Messaggio.

  1. Il passaggio successivo consiste nel dividere il dataset in dataset di addestramento e di validazione e caricare i file nel bucket S3.

Addestra il modello

Per addestrare il modello, completa i seguenti passaggi nel notebook:

  1. Configura il BlazingText estimator e crea un’istanza di estimator passando l’immagine del container.

  1. Imposta l’iperparametro della modalità di apprendimento su supervisionato.

BlazingText ha sia modalità di apprendimento non supervisionato che supervisionato. Il nostro caso d’uso è la classificazione del testo, che è un apprendimento supervisionato.

  1. Crea i canali di dati di addestramento e di validazione.

  1. Inizia l’addestramento del modello.

  1. Ottieni l’accuratezza del dataset di addestramento e di validazione.

Pubblica il modello

In questo passaggio, distribuiamo il modello addestrato come un endpoint. Scegli la tua istanza preferita

Testare il modello

Forniamo un esempio di tre messaggi di posta elettronica per cui vogliamo ottenere delle previsioni:

  • Fai clic sul link sottostante, inserisci i tuoi dati e vinci questo premio
  • Miglior offerta estiva qui
  • Ci vediamo in ufficio venerdì.

Tokenizza il messaggio di posta elettronica e specifica il payload da utilizzare durante la chiamata all’API REST.

Ora possiamo prevedere la classificazione della posta elettronica per ciascun messaggio. Chiama il metodo di previsione del classificatore di testo, passando le istanze di frasi tokenizzate (payload) nell’argomento dati.

Pulizia

Infine, puoi eliminare l’endpoint per evitare eventuali costi imprevisti.

Inoltre, elimina il file di dati dal bucket S3.

Conclusioni

In questo post, ti abbiamo guidato attraverso i passaggi per creare un rilevatore di spam per la posta elettronica utilizzando l’algoritmo SageMaker BlazingText. Con l’algoritmo BlazingText, puoi scalare su grandi dataset. BlazingText viene utilizzato per l’analisi testuale e i problemi di classificazione del testo ed ha sia modalità di apprendimento non supervisionato che supervisionato. Puoi utilizzare l’algoritmo per casi d’uso come l’analisi dei sentimenti dei clienti e la classificazione del testo.

Per saperne di più sull’algoritmo BlazingText, consulta l’algoritmo BlazingText.