Python에서 베이지안 스팸 필터링을 사용하여 이메일 분류하기
Contents
[
Hide
]
베이지안 스팸 필터링 사용
Aspose.Email는 베이지안 스팸 분석기를 사용한 이메일 필터링 기능을 제공합니다. 이 기능은 SpamAnalyzer 이 목적을 위한 클래스입니다. 이 문서는 워드 데이터베이스를 기반으로 스팸과 일반 이메일을 구분하도록 필터를 교육하는 방법을 보여줍니다.
- 스팸 필터를 위한 햄 이메일(ham_folder), 스팸 이메일(spam_folder), 테스트 이메일(test_folder) 폴더 경로와 데이터베이스 파일(database_file)을 지정합니다.
- 헬퍼 함수를 정의합니다
print_result계산된 스팸 확률을 기반으로 메시지가 스팸인지 아닌지를 출력합니다. - 데이터베이스 파일을 사용하여 스팸 분석기를 만들고, ham_folder(스팸이 아님)와 spam_folder(스팸)에서 이메일을 사용해 학습한 뒤, 학습된 데이터베이스를 저장합니다.
- ’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)