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.
¿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 variableEn estadística y matemáticas, una "variable" es un símbolo que representa un valor que puede cambiar o variar. Existen diferentes tipos de variables, como las cualitativas, que describen características no numéricas, y las cuantitativas, que representan cantidades numéricas. Las variables son fundamentales en experimentos y estudios, ya que permiten analizar relaciones y patrones entre diferentes elementos, facilitando la comprensión de fenómenos complejos.... 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 profundoEl aprendizaje profundo, una subdisciplina de la inteligencia artificial, se basa en redes neuronales artificiales para analizar y procesar grandes volúmenes de datos. Esta técnica permite a las máquinas aprender patrones y realizar tareas complejas, como el reconocimiento de voz y la visión por computadora. Su capacidad para mejorar continuamente a medida que se le proporcionan más datos la convierte en una herramienta clave en diversas industrias, desde la salud... 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.