Talleres pasados

Cómo crear un detector de SPAM con machine learning

Jueves 6 de Julio de 2023

En este taller te enseñamos a utilizar el machine learning para detectar mensajes de SPAM. Aprendimos el desarrollo de un entorno básico y realizaremos pruebas para ver el funcionamiento real de nuestro detector de SPAM. 

¡Revive el taller online!

Resumen

El aprendizaje automático es una rama de la inteligencia artificial (IA) que permite a las computadoras aprender de patrones y tomar decisiones basadas en esos patrones. Mientras que la IA se enfoca en crear sistemas que puedan realizar tareas sin intervención humana, el aprendizaje automático se especializa en técnicas para lograr ese propósito. Por ejemplo, si quisiéramos identificar si una imagen es de un gato o un perro, la IA definiría las características distintivas de cada uno, mientras que el aprendizaje automático entrenaría al sistema con datos etiquetados para que aprenda a reconocer esas diferencias automáticamente.

Problemas del spam y su impacto

El spam, conocido como correo basura, no solo es molesto para los destinatarios, sino que también cuesta dinero porque requiere que un servidor web procese estos mensajes no deseados. Detectar y filtrar el spam es esencial para mejorar la eficiencia y reducir costos operativos.

Preparando el entorno

Para crear nuestro detector de spam, utilizaremos un VPS y escribiremos un script en Python. Primero, debemos actualizar el índice de paquetes e instalar los recursos necesarios en un entorno virtual. Esto nos permitirá trabajar de manera aislada sin afectar el resto del sistema. A continuación, detallamos los pasos básicos para configurar el entorno:

  1. Actualizar el índice de paquetes:
sudo apt update
  1. Instalar Python y crear un entorno virtual:
sudo apt install python3.10-venv
python3 -m venv myenv
source myenv/bin/activate
  1. Instalar los paquetes necesarios:
pip install pandas numpy scikit-learn nltk
  1. Descargar y descomprimir el conjunto de datos de entrenamiento, que contiene mensajes etiquetados como spam y no spam.

Procesamiento de datos y entrenamiento del modelo

Una vez configurado el entorno, el siguiente paso es procesar el conjunto de datos. Leeremos el archivo de texto plano que contiene los mensajes y su clasificación, y utilizaremos técnicas de procesamiento de texto para preparar los datos para el entrenamiento.

Cargando los datos

Usamos pandas para leer el archivo de datos y asignar nombres a las columnas:

import pandas as pd

data = pd.read_csv('spam_data.txt', sep='\t', names=['label', 'message'])
print(data.head())

Transformando los datos

Convertimos los mensajes en una matriz de recuento de palabras y luego en una matriz de frecuencia de términos:

from sklearn.feature_extraction.text import CountVectorizer, TfidfTransformer

count_vect = CountVectorizer()
X_train_counts = count_vect.fit_transform(data['message'])

tfidf_transformer = TfidfTransformer()
X_train_tfidf = tfidf_transformer.fit_transform(X_train_counts)

Entrenando el modelo

Usamos un clasificador de Naive Bayes para entrenar nuestro modelo con los datos procesados:

from sklearn.naive_bayes import MultinomialNB

clf = MultinomialNB().fit(X_train_tfidf, data['label'])

Probando el modelo

Para probar el modelo, le pasamos nuevos mensajes y verificamos si son clasificados correctamente como spam o no spam:

docs_new = ["Free money!!!", "Hello, how are you?"]
X_new_counts = count_vect.transform(docs_new)
X_new_tfidf = tfidf_transformer.transform(X_new_counts)

predicted = clf.predict(X_new_tfidf)

for doc, category in zip(docs_new, predicted):
    print(f'{doc} => {category}')

Conclusión

Crear un detector de spam con machine learning implica comprender tanto los conceptos básicos como los detalles técnicos del procesamiento de datos y el entrenamiento de modelos. Con las herramientas adecuadas, como Python y sus bibliotecas, es posible desarrollar sistemas eficaces para filtrar el spam y mejorar la eficiencia operativa.

Este taller te ha mostrado una introducción práctica al uso del aprendizaje automático para detectar spam, desde la preparación del entorno hasta la implementación y prueba del modelo. Para más detalles y recursos, no dudes en seguir explorando y experimentando con diferentes conjuntos de datos y algoritmos.

Participantes

Ponente:

Software Development Specialist en Scalar. Docente colaborador de carrera Linux Argentina. Ha escrito numerosos artículos para DigitalOcean, Linode, Carrera Linux Argentina y Tecmint.

Entérate de nuestros próximos talleres
Suscríbete a nuestro newsletter para recibir nuestras novedades.
Talleres nuevos todas las semanas.
Recibe nuestras novedades para no perderte ninguno.