Analizador SPAM

# Funcion para saber que es SPAM (en este caso es FINANZAS) def probabilidadSpam(palabra,clasificacion,clasificacion2): spam = len(clasificacion) # Calculamos la cantidad de palabras de la tabla probabilidad = clasificacion.count(palabra) + 1 # Obtenemos el numero de las palabras + 1 por laplace conjunto = list(set(clasificacion)) # Obtenemos el conjunto sin valores repetidos conjunto.extend(list(set(clasificacion2))) # Agregamos el conjunto de la otra clasificacion conjunto = list(set(conjunto)) # Eliminamos elementos repetidos total = spam + len(conjunto) # Obtenemos la cantidad de palabras total retorno = (probabilidad)/total # Calculamos el valor de que sea SPAM return retorno # Funcion para caltular la probabilidad total def probabilidadTotal(clasificacion,clasificacion2): return len(clasificacion)/(len(clasificacion)+len(clasificacion2)) # Funcion para calcular la probabilidad por palabra def probabilidadTotalPalabra(probabilidadV,probabilidadF): return (probabilidadV)/(probabilidadV+probabilidadF) SPAM = ["offer","is","secret","click","secret","link","secret","sports","link"] HAM = ["play","sports","today","went","play","sports","secret","sports","event","sports","is","today","sports","cost","money"] mensaje = ["secret", "is", "secret"] proba = proba2 = 1.0 for palabra in mensaje: # Probabilidad de que la noticia sea FINANZAS proba *= probabilidadSpam(palabra,SPAM,HAM) for palabra in mensaje: # Probabilidad de que no sea FINANZAS proba2 *= probabilidadSpam(palabra,HAM,SPAM) for palabra in mensaje: # Agregamos a la tabla SEGURIDAD la palabra (si no existe) if palabra not in HAM: HAM.append(palabra) for palabra in mensaje: # Agregamos a la tabla FINANZAS la palabra (si no existe) if palabra not in SPAM: SPAM.append(palabra) proba *= probabilidadTotal(SPAM,HAM) # Calculamos la probabilidad con los elementos agregados proba2 *= probabilidadTotal(HAM,SPAM) # Calculamos la probabilidad con los elementos agregados total = probabilidadTotalPalabra(proba,proba2) # Calculo de la probabilidad total print ("El mensaje: \"",end=" ") for m in mensaje: print(m,end=" ") print ("\" es: ",end=" ") if total > 0.5: print ("SPAM") else: print ("HAM")

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.