استخدام الترشيح الاحتمالي للرسائل غير المرغوب فيها (Bayesian Spam Filtering) لتصنيف الرسائل الإلكترونية في بايثون
Contents
[
Hide
]
استخدام الترشيح الاحتمالي للرسائل غير المرغوب فيها
توفر Aspose.Email وظيفة تصفية البريد الإلكتروني باستخدام محلل Bayesian Spam. إنها توفر الـ SpamAnalyzer فئة لهذا الغرض. توضح هذه المقالة كيفية تدريب الفلتر للتمييز بين البريد المزعج والبريد العادي بناءً على قاعدة بيانات الكلمات.
- حدد مسارات المجلدات لرسائل البريد غير المزعج (ham_folder)، ورسائل البريد المزعج (spam_folder)، ورسائل الاختبار (test_folder)، وملف قاعدة البيانات (database_file) لمرشح الرسائل غير المرغوب فيها.
- تعريف الدالة المساعدة
print_resultلطباعة ما إذا كانت الرسالة مصنّفة كرسالة غير مرغوب فيها أم لا بناءً على احتمال الرسائل غير المرغوب فيها المحسوب. - أنشئ محلل البريد غير المرغوب باستخدام ملف قاعدة البيانات، درّبه باستخدام رسائل البريد من ham_folder (ليس غير مرغوب) و spam_folder (غير مرغوب)، ثم احفظ قاعدة البيانات المدربة.
- حمّل ملفات .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)