Menggunakan Penyaringan Spam Bayesian untuk Mengklasifikasikan Email dalam Python
Contents
[
Hide
]
Menggunakan Penyaringan Spam Bayesian
Aspose.Email menyediakan fungsionalitas penyaringan email menggunakan analis spam Bayesian. Ia menyediakan SpamAnalyzer kelas untuk tujuan ini. Artikel ini menunjukkan cara melatih filter untuk membedakan antara spam dan email biasa berdasarkan basis data kata.
- Tentukan jalur folder untuk email ham (ham_folder), email spam (spam_folder), email uji (test_folder), dan file basis data (database_file) untuk filter spam.
- Definisikan fungsi pembantu
print_resultuntuk mencetak apakah sebuah pesan diklasifikasikan sebagai spam atau tidak berdasarkan probabilitas spam yang dihitung. - Buat Spam Analyzer menggunakan file basis data, latih dengan email dari ham_folder (bukan spam) dan spam_folder (spam), lalu simpan basis data yang telah dilatih.
- Muat file .eml dari ’test_folder’, analisis masing‑masing dengan SpamAnalyzer.test untuk mendapatkan probabilitas spam, dan cetak subjek email serta klasifikasinya menggunakan ‘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)