Utilizzare il filtraggio spam bayesiano per classificare le email in Python
Contents
[
Hide
]
Utilizzo del filtraggio spam bayesiano
Aspose.Email fornisce funzionalità di filtraggio email usando un analizzatore spam bayesiano. Fornisce il SpamAnalyzer classe per questo scopo. Questo articolo mostra come addestrare il filtro per distinguere tra spam e email normali basandosi su un database di parole.
- Specifica i percorsi delle cartelle per le email legittime (ham_folder), le email spam (spam_folder), le email di test (test_folder) e il file di database (database_file) per il filtro spam.
- Definisci la funzione di supporto
print_resultper stampare se un messaggio è classificato come spam o meno in base alla probabilità di spam calcolata. - Crea lo Spam Analyzer usando il file di database, addestralo con le email della cartella ham_folder (non spam) e spam_folder (spam), quindi salva il database addestrato.
- Carica file .eml dalla cartella ’test_folder’, analizza ognuno con SpamAnalyzer.test per ottenere la probabilità di spam e stampa l’oggetto dell’email e la classificazione usando ‘print_result’.
from aspose.email import MailMessage, SaveOptions, MsgLoadOptions, MessageFormat, FileCompatibilityMode
from aspose.email.antispam import SpamAnalyzer
import os
ham_folder = "/hamFolder"
spam_folder = "/Spam"
test_folder = data_dir
database_file = "SpamFilterDatabase.txt"
def print_result(probability):
if probability >= 0.5:
print("The message is classified as spam.")
else:
print("The message is classified as not spam.")
print("Spam Probability: " + str(probability))
print()
def teach_and_create_database(ham_folder, spam_folder, database_file):
analyzer = SpamAnalyzer(database_file)
analyzer.teach_from_directory(ham_folder, True)
analyzer.teach_from_directory(spam_folder, False)
analyzer.save_database()
teach_and_create_database(ham_folder, spam_folder, database_file)
test_files = [f for f in os.listdir(test_folder) if f.endswith(".eml")]
analyzer = SpamAnalyzer(database_file)
for file in test_files:
file_path = os.path.join(test_folder, file)
msg = MailMessage.load(file_path)
print(msg.subject)
probability = analyzer.test(msg)
print_result(probability)