Verwendung von Bayesianischem Spam-Filter zum Klassifizieren von E-Mails in Python
Contents
[
Hide
]
Verwendung von Bayesianischem Spam-Filtering
Aspose.Email bietet E‑Mail‑Filterfunktionen mittels eines Bayesianischen Spam‑Analyzers. Es stellt die SpamAnalyzer Klasse für diesen Zweck. Dieser Artikel zeigt, wie man den Filter trainiert, um Spam von regulärer E‑Mail anhand einer Wortdatenbank zu unterscheiden.
- Gib die Ordnerpfade für die Ham-E-Mails (ham_folder), Spam-E-Mails (spam_folder), Test-E-Mails (test_folder) und die Datenbankdatei (database_file) für den Spam-Filter an.
- Definiere die Hilfsfunktion
print_resultum auszugeben, ob eine Nachricht basierend auf der berechneten Spam-Wahrscheinlichkeit als Spam klassifiziert wurde oder nicht. - Erstelle einen Spam-Analyzer mit der Datenbankdatei, trainiere ihn mit E-Mails aus ham_folder (kein Spam) und spam_folder (Spam) und speichere anschließend die trainierte Datenbank.
- Lade .eml-Dateien aus ’test_folder’, analysiere jede mit SpamAnalyzer.test, um die Spam-Wahrscheinlichkeit zu erhalten, und gib den E-Mail-Betreff sowie die Klassifizierung mit ‘print_result’ aus.
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)