Python'da E-postaları Sınıflandırmak İçin Bayesyen Spam Filtrelemesi Kullanma
Contents
[
Hide
]
Bayesyen Spam Filtrelemesi Kullanma
Aspose.Email, Bayesyen bir spam analizörü kullanarak e-posta filtreleme işlevi sağlar. Şu özellikleri sunar SpamAnalyzer bu amaç için sınıf. Bu makale, filtreyi kelime veritabanına dayanarak spam ve normal e-posta arasını ayıracak şekilde nasıl eğiteceğinizi gösterir.
- Spam filtresi için ham e-postaların (ham_folder), spam e-postaların (spam_folder), test e-postaların (test_folder) ve veritabanı dosyasının (database_file) klasör yollarını belirt.
- Yardımcı işlevi tanımla
print_resulthesaplanan spam olasılığına dayanarak bir mesajın spam olarak sınıflandırılıp sınıflandırılmadığını yazdırmak için. - Veritabanı dosyasını kullanarak Spam Analizörü oluştur, ham_folder (spam olmayan) ve spam_folder (spam) içindeki e-postalarla eğit, ardından eğitilmiş veritabanını kaydet.
- ’test_folder’ klasöründen .eml dosyalarını yükle, her birini SpamAnalyzer.test ile analiz et ve spam olasılığını al, ardından ‘print_result’ kullanarak e-posta konusunu ve sınıflandırmasını yazdır.
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)