Python में ईमेल वर्गीकृत करने के लिए बेयेसियन स्पैम फिल्टरिंग का उपयोग

बेयेसियन स्पैम फ़िल्टरिंग का उपयोग

Aspose.Email बेयेसियन स्पैम विश्लेषक का उपयोग करके ईमेल फ़िल्टरिंग कार्यक्षमता प्रदान करता है। यह प्रदान करता है SpamAnalyzer इस उद्देश्य के लिए क्लास। यह लेख दर्शाता है कि शब्द डेटाबेस के आधार पर फ़िल्टर को स्पैम और सामान्य ईमेल में अंतर करने के लिए कैसे प्रशिक्षित किया जाए।

  1. स्पैम फ़िल्टर के लिए हैम ईमेल (ham_folder), स्पैम ईमेल (spam_folder), टेस्ट ईमेल (test_folder) और डेटाबेस फ़ाइल (database_file) के फ़ोल्डर पथ निर्दिष्ट करें।
  2. हेल्पर फ़ंक्शन परिभाषित करें print_result गणना की गई स्पैम संभाव्यता के आधार पर यह प्रिंट करने के लिए कि संदेश को स्पैम वर्गीकृत किया गया है या नहीं।
  3. एक स्पैम एनालाइज़र बनाएं, ’train_filter(message, is_spam)’ मेथड का उपयोग करके ham_folder (स्पैम नहीं) और spam_folder (स्पैम) से ईमेल्स पर प्रशिक्षण दें, फिर ‘save_database(file_path)’ से प्रशिक्षित डेटाबेस सहेजें।
  4. एक स्पैम एनालाइज़र बनाएं, ’load_database(file_path)’ से प्रशिक्षित डेटाबेस पुनर्स्थापित करें, ’test_folder’ से .eml फ़ाइलें लोड करें, प्रत्येक को ’test(message)’ से विश्लेषण करके स्पैम संभावना प्राप्त करें, और ‘print_result’ का उपयोग करके ईमेल विषय और वर्गीकरण प्रिंट करें।
import os

from aspose.email import MailMessage
from aspose.email.antispam import SpamAnalyzer

ham_folder = "hamFolder"
spam_folder = "spamFolder"
test_folder = "testFolder"
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 train_from_directory(analyzer, folder, is_spam):
    for file in os.listdir(folder):
        if file.endswith(".eml"):
            analyzer.train_filter(MailMessage.load(os.path.join(folder, file)), is_spam)

def teach_and_create_database(ham_folder, spam_folder, database_file):
    analyzer = SpamAnalyzer()
    train_from_directory(analyzer, ham_folder, False)
    train_from_directory(analyzer, spam_folder, True)
    analyzer.save_database(database_file)

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()
analyzer.load_database(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)