Detección de correo no deseado: una aplicación de aprendizaje profundo

Contenidos

Este post fue hecho público como parte del Blogatón de ciencia de datos

Lo que cada gran compañía de tecnología quiere es la seguridad y protección de sus clientes. Al detectar alertas de spam en correos electrónicos y mensajes, quieren proteger su red y mejorar la confianza de sus clientes. La aplicación de mensajería oficial de Apple y la aplicación de chat oficial de Google, dicho de otra forma, Gmail, son ejemplos inmejorables de este tipo de aplicaciones en las que el procedimiento de detección y filtrado de spam funciona bien para proteger a los usuarios contra las alertas de spam. Entonces, si está buscando crear un sistema de detección de spam, este texto es para usted.

fuenteDetección de spam

¿Qué es el llamado Spam?

Los mensajes electrónicos son un medio de comunicación crucial entre muchas personas en todo el mundo. Pero varias personas y corporaciones hacen un mal uso de esta función para repartir mensajes masivos no solicitados que comúnmente se denominan SMS no deseados. Los SMS no deseados pueden incluir anuncios de medicamentos, software, contenido para adultos, seguros u otros anuncios fraudulentos. Varios filtros de correo no deseado suelen proporcionar un mecanismo de protección que diseñará un sistema para reconocer el correo no deseado.

Detección de spam

Después de enviar sus datos personales, como el número de teléfono móvil o la dirección de email en cualquier plataforma, comenzaron la publicidad de sus productos inusuales haciéndole ping constantemente. Intentan anunciarse enviando correos electrónicos constantes y con la ayuda de tus datos de contacto siguen enviándote mensajes y están haciendo WhatsApp más en la actualidad. Por eso, el resultado no es más que una gran cantidad de alertas y notificaciones de spam que aparecen en su bandeja de entrada. A menudo, aquí es donde entra en juego la tarea de la detección de spam.

La detección de spam significa detectar mensajes de spam o correos electrónicos al comprender el contenido del texto para que solo reciba notificaciones sobre sus mensajes o correos electrónicos que sean cruciales para usted. Si se encuentran mensajes de spam, se transfieren automáticamente a una carpeta de spam y nunca se le notifica de tales alertas. Esto ayuda a mejorar la experiencia del usuario, dado que muchas alertas de spam pueden molestar a muchos usuarios.

¿Qué es el filtrado de spam?

¿Podrías adivinar cuándo te convertirás en el objetivo de los piratas informáticos? Sí, si estás pensando en spam, estás en el camino correcto. Siempre que el spam llegue a tu email o bandeja de entrada de mensajes, estás en manos de piratas informáticos y te llamarán su objetivo. Cuando se trata de tecnología, los humanos tienden a ser el eslabón más débil en la mayoría de situaciones de seguridad de TI. Los atacantes intentarán engañarlos constantemente, manipulando a los usuarios para que hagan clic en cosas que no deberían por medio de una gama de métodos. A menudo, estos «trucos» se realizan a través del email, dado que las plataformas de email pueden apuntar a una cantidad considerable de personas y tal vez a un ataque muy «económico». Después de hacer un clic en lo inapropiado disponible en los correos electrónicos no deseados, expuso sus datos importantes y personales a los piratas informáticos. El papel del filtrado de correo no deseado surge dado que el email se utiliza de forma general para aprovechar a los usuarios y sus datos más poderosos. Las instituciones deben usar un filtro de spam para reducir el peligro de que los usuarios hagan clic en algo que no deberían, manteniendo sucesivamente sus datos internos protegidos de un ciberataque.

¿POR QUÉ ES IMPORTANTE?

La implementación del filtrado de spam es de relevancia exclusiva para todas las instituciones. El papel principal del filtrado de spam es mantener la basura fuera de los buzones de email. Además puede tratar el filtrado de spam como un amigo que administra su vida sin problemas al mostrar solo los correos seguros y deseados. El filtrado de correo no deseado se utiliza en realidad como una herramienta anti-malware debido a que el único truco de los piratas informáticos es compartir los archivos adjuntos en el correo y solicitar sus credenciales. Otro aspecto que no se descuida es la eliminación de Graymail. Graymail es un email que un usuario ha optado por recibir previamente, pero que en realidad no necesita ni necesita en su bandeja de entrada. Graymail no se considera spam, dado que estos correos electrónicos no suelen infiltrarse en una corporación. lo que se considera correo gris se decide por las acciones del usuario a lo largo del tiempo, y las plataformas de filtrado de spam lo devorarán para averiguar qué se desea o no en una bandeja de entrada.

Hasta el momento, lo que aprendió es detección de spam, qué y por qué. Estoy bastante seguro de que le quedó muy claro. Ahora, este momento es para la implementación. Aquí, en esta parte, entrenamos los modelos de aprendizaje automático para detectar spam en su email con la ayuda del lenguaje Python. Comenzaré esta tarea importando las bibliotecas de Python requeridas y, por eso, el conjunto de datos que le gustaría para esta tarea es spam.csv

Paso 1: -Importar dependientes

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import nltk
from nltk.corpus import stopwords
from nltk.stem.porter import PorterStemmer
nltk.download('stopwords')
import re
import sklearn
from sklearn.naive_bayes import MultinomialNB
from sklearn.metrics import accuracy_score

Paso 2: -Obtener el conjunto de datos de SMS

sms = pd.read_csv('Spam SMS Collection', sep='t', names=['label','message'])
sms.head()
sms.drop_duplicates(inplace=True)
sms.reset_index(drop=True, inplace=True)
plt.figure(figsize=(8,5))
sns.countplot(x='label', data=sms)
plt.xlabel('SMS Classification')
plt.ylabel('Count')
plt.show()

Paso 3: -Limpieza de mensajes

corpus = []
ps = PorterStemmer()
for i in range(0,sms.shape[0]):
    message = re.sub(pattern='[^a-zA-Z]', repl=" ", string=sms.message[i])
#Cleaning special character from the message

    message = message.lower() #Converting the entire message into lower case
    words = message.split() # Tokenizing the review by words
    words = [word for word in words if word not in set(stopwords.words('english'))] 

#Removing the stop words

    words = [ps.stem(word) for word in words] #Stemming the words
    message=" ".join(words) #Joining the stemmed words
    corpus.append(message) #Building a corpus of messages

Paso 4: -Creación del modelo Bolsa de palabras

from sklearn.feature_extraction.text import CountVectorizer
cv = CountVectorizer(max_features=2500)
X = cv.fit_transform(corpus).toarray()

Paso 5: -Extraer la variable dependiente del conjunto de datos

y = pd.get_dummies(sms['label'])
y = y.iloc[:, 1].values

Paso 6: -train_test_split

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20, random_state=0)

Paso 7: -Comprobación del clasificador de Bayes ingenuo alfa

best_accuracy = 0.0
alpha_val = 0.0
for i in np.arange(0.0,1.1,0.1):
    temp_classifier = MultinomialNB(alpha=i)
    temp_classifier.fit(X_train, y_train)
    temp_y_pred = temp_classifier.predict(X_test)
    score = accuracy_score(y_test, temp_y_pred)
    print("Accuracy score for alpha={} is: {}%".format(round(i,1), round(score*100,2)))
    if score>best_accuracy:
        best_accuracy = score
        alpha_val = i
print('--------------------------------------------')
print('The best accuracy is {}% with alpha value as {}'.format(round(best_accuracy*100, 2), round(alpha_val,1)))

Paso 8: -Predicción

def predict_spam(sample_message):
    sample_message = re.sub(pattern='[^a-zA-Z]',repl=" ", string = sample_message)
    sample_message = sample_message.lower()
    sample_message_words = sample_message.split()
    sample_message_words = [word for word in sample_message_words if not word in set(stopwords.words('english'))]
    ps = PorterStemmer()
    final_message = [ps.stem(word) for word in sample_message_words]
    final_message=" ".join(final_message)
    temp = cv.transform([final_message]).toarray()
    return classifier.predict(temp)
result = ['Wait a minute, this is a SPAM!','Ohhh, this is a normal message.']
msg = "Hi! You are pre-qualified for Premium SBI Credit Card. Also get Rs.500 worth Amazon Gift Card*, 10X Rewards Point* & more. Click "
if predict_spam(msg):
    print(result[0])
else:
    print(result[1])

PRODUCCIÓN

Espera un minuto, ¡esto es SPAM!

msg = "[Update] Congratulations Shivani, Your account is activated for investment in Stocks. Click to invest now: "
if predict_spam(msg):
    print(result[0])
else:
    print(result[1])

PRODUCCIÓN

Espera un minuto, ¡esto es SPAM!

msg = "Your Stockbroker FALANA BROKING LIMITED reported your fund balance Rs.1500.5 & securities balance 0.0 as of the end of MAY-20. Balances do not cover your bank, DP & PMS balance with the broking entity. Check details at [email protected] If the email Id is not correct, kindly update with your broker."
if predict_spam(msg):
    print(result[0])
else:
    print(result[1])

PRODUCCIÓN

Ohhh, este es un yo normal

Resumen

Por lo tanto, a menudo, así es como entrenará un aprendizaje automático o especialmente un modelo de aprendizaje profundo para que puedan detectar si un email o un mensaje es spam o no. Un detector de spam detecta mensajes de spam o correos electrónicos al comprender el contenido del texto para que solo reciba notificaciones sobre mensajes o correos electrónicos que sean vitales para usted. Espero que este post le ayude a incrementar su alcance hacia la detección de spam. En el escenario actual, no podemos permitirnos perder nuestra seguridad tan fácilmente. Iniciemos una campaña junto con AnalyticsVidya para reducir el ciberdelito. Esté feliz de hacer sus valiosas preguntas en la sección de comentarios a continuación. Para más aplicaciones de aprendizaje profundo, haga clic aquí.

Los medios que se muestran en este post no son propiedad de DataPeaker y se usan a discreción del autor.

Suscribite a nuestro Newsletter

No te enviaremos correo SPAM. Lo odiamos tanto como tú.