שימוש בסינון דואר זבל בייסיאני למיון אימיילים ב-Python

שימוש בסינון ספאם בייסיאני

Aspose.Email מספקת פונקציונליות סינון אימיילים באמצעות מנתח ספאם בייסיאני. היא מספקת את SpamAnalyzer מחלקה למטרה זו. מאמר זה מראה כיצד לאמן את המסנן כדי להבדיל בין ספאם לאימייל רגיל על בסיס מסד מילים.

  1. ציין את נתיבי התיקיות עבור אימיילים ה- ham (ham_folder), אימיילים ספאם (spam_folder), אימיילי בדיקה (test_folder), וקובץ מסד הנתונים (database_file) עבור מסנן הספאם.
  2. הגדר את פונקציית העזר print_result להדפיס האם הודעה מסווגת כספאם או לא על בסיס הסתברות הספאם המחושבת.
  3. צור Spam Analyzer באמצעות קובץ מסד הנתונים, אימן אותו עם אימיילים מתיקיית ham_folder (לא ספאם) ותיקיית spam_folder (ספאם), ולאחר מכן שמור את מסד הנתונים המאומן.
  4. טען קבצי .eml מתיקיית ’test_folder’, נתח כל אחד עם SpamAnalyzer.test לקבלת הסתברות ספאם, והדפס את נושא האימייל והסיווג באמצעות ‘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)