[python] PySimpleGUI를 사용하여 스팸 필터링 도구 만들기

spam-filtering

이번에는 Python의 PySimpleGUI를 활용하여 스팸 필터링 도구를 만드는 방법을 알아보겠습니다. PySimpleGUI는 편리하고 사용하기 쉬운 GUI 개발 도구로, 다양한 플랫폼에서 동작합니다.

필요한 라이브러리 설치하기

먼저, PySimpleGUI를 설치해야 합니다. 다음 명령어를 사용하여 설치할 수 있습니다:

pip install PySimpleGUI

이제 필터링에 사용될 예시 데이터와 스팸 필터링 알고리즘이 필요합니다. 이 예제에서는 spam_filter.py라는 파일에 스팸 필터링 기능을 구현하도록 하겠습니다.

스팸 필터링 알고리즘 작성하기

spam_filter.py를 다음과 같이 작성합니다:

class SpamFilter:
    def __init__(self, spam_words):
        self.spam_words = spam_words

    def is_spam(self, message):
        for word in self.spam_words:
            if word in message:
                return True
        return False

def main():
    # 스팸 필터링 도구를 초기화합니다.
    spam_filter = SpamFilter(spam_words=['buy', 'discount', 'click here'])

    # 사용자에게 메시지를 입력받습니다.
    message = input('Enter a message: ')

    # 스팸 여부를 판단합니다.
    if spam_filter.is_spam(message):
        print('This message is spam.')
    else:
        print('This message is not spam.')

if __name__ == '__main__':
    main()

위 코드는 내부적으로 spam_words라는 스팸 단어 목록을 가지고 있는 SpamFilter 클래스를 정의합니다. is_spam 메소드는 주어진 메시지에 스팸 단어가 포함되어 있는지를 확인하고, 스팸인 경우 True를 반환합니다.

GUI 구현하기

이제 PySimpleGUI를 사용하여 스팸 필터링 도구의 GUI를 구현해 보겠습니다.

import PySimpleGUI as sg
from spam_filter import SpamFilter

def main():
    # 스팸 필터링 도구를 초기화합니다.
    spam_filter = SpamFilter(spam_words=['buy', 'discount', 'click here'])

    # GUI 레이아웃을 설정합니다.
    layout = [
        [sg.Text('메시지 입력:')],
        [sg.InputText(key='message')],
        [sg.Button('확인'), sg.Button('취소')],
        [sg.Text('결과:', key='result')]
    ]

    # 윈도우를 생성합니다.
    window = sg.Window('스팸 필터링 도구', layout)

    # 이벤트 루프를 실행합니다.
    while True:
        event, values = window.read()

        if event == sg.WINDOW_CLOSED or event == '취소':
            break

        if event == '확인':
            # 사용자가 입력한 메시지를 가져옵니다.
            message = values['message']

            # 스팸 여부를 판단합니다.
            if spam_filter.is_spam(message):
                window['result'].update('이 메시지는 스팸입니다.')
            else:
                window['result'].update('이 메시지는 스팸이 아닙니다.')

    # 윈도우를 닫습니다.
    window.close()

if __name__ == '__main__':
    main()

위 코드는 PySimpleGUI를 사용하여 GUI를 구현합니다. 사용자는 텍스트 입력 필드에 메시지를 입력한 후 ‘확인’ 버튼을 클릭하면 스팸 여부가 결과 창에 표시됩니다.

실행하기

이제 spam_filter.py 파일과 위의 GUI 구현 코드를 모두 작성하였습니다. 다음 명령어를 사용하여 프로그램을 실행해 보세요:

python gui.py

GUI 창이 표시되고, 메시지를 입력하고 확인 버튼을 클릭하면 스팸 여부가 표시됩니다.

참고 자료