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

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

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

  1. स्पैम फ़िल्टर के लिए हैम ईमेल (ham_folder), स्पैम ईमेल (spam_folder), टेस्ट ईमेल (test_folder) और डेटाबेस फ़ाइल (database_file) के फ़ोल्डर पथ निर्दिष्ट करें।
  2. हेल्पर फ़ंक्शन परिभाषित करें print_result गणना की गई स्पैम संभाव्यता के आधार पर यह प्रिंट करने के लिए कि संदेश को स्पैम वर्गीकृत किया गया है या नहीं।
  3. डेटाबेस फ़ाइल का उपयोग करके स्पैम विश्लेषक बनाएं, इसे ham_folder (स्पैम नहीं) और spam_folder (स्पैम) से ईमेल से प्रशिक्षित करें, फिर प्रशिक्षित डेटाबेस सहेजें।
  4. ’test_folder’ से .eml फ़ाइलें लोड करें, प्रत्येक को 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)