[python] PyQt에서의 감정 분석 기능 구현
감정 분석은 컴퓨터가 텍스트나 음성과 같은 자연어 데이터를 분석하여 그 안에 담긴 감정을 식별하는 기술입니다. PyQt를 사용하여 GUI 기반의 감정 분석 프로그램을 구현해보겠습니다.
프로그램 개요
이 프로그램은 PyQt를 사용하여 텍스트 입력을 받아 감정 분석을 수행하고, 결과를 사용자에게 표시하는 간단한 프로그램입니다.
필요한 도구
- PyQt5: PyQt5는 Qt를 Python에서 사용할 수 있도록 하는 라이브러리입니다.
- NLTK: 자연어 처리를 위한 라이브러리입니다.
- 감정 분석 모델: 감정을 분석하기 위한 사전 학습된 모델입니다. 이 예시에서는 Vader Sentiment Analyzer를 사용하겠습니다.
프로그램 구조
- PyQt로 GUI를 구현합니다.
- 사용자로부터 텍스트를 입력받는 기능을 추가합니다.
- 입력받은 텍스트를 전처리합니다. (예: 특수 문자 제거, 대소문자 통일 등)
- NLTK를 사용하여 텍스트를 감정 분석 모델에 적용합니다.
- 결과를 화면에 표시합니다.
프로그램 구현
1. PyQt로 GUI 구현
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QLabel, QLineEdit, QPushButton
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("감정 분석 프로그램")
self.setGeometry(100, 100, 400, 200)
self.input_label = QLabel(self)
self.input_label.setText("텍스트 입력:")
self.input_label.move(20, 20)
self.input_textbox = QLineEdit(self)
self.input_textbox.move(120, 20)
self.input_textbox.resize(200, 25)
self.analyze_button = QPushButton("분석", self)
self.analyze_button.move(160, 60)
self.analyze_button.clicked.connect(self.analyze_text)
self.result_label = QLabel(self)
self.result_label.move(20, 110)
def analyze_text(self):
# 텍스트를 분석하는 기능을 구현합니다.
text = self.input_textbox.text()
# ...
# 결과를 화면에 표시합니다.
self.result_label.setText("감정 분석 결과: " + result)
self.result_label.adjustSize()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
2. 텍스트 입력 기능 추가
class MainWindow(QMainWindow):
# ...
def analyze_text(self):
text = self.input_textbox.text()
# 텍스트 분석 기능을 호출하고 결과를 화면에 표시합니다.
self.result_label.setText("감정 분석 결과: " + result)
self.result_label.adjustSize()
def analyze_text(self):
text = self.input_textbox.text()
cleaned_text = self.preprocess_text(text)
result = self.analyze_sentiment(cleaned_text)
self.display_result(result)
def preprocess_text(self, text):
# 텍스트 전처리를 구현합니다. (예: 특수 문자 제거, 대소문자 통일 등)
return cleaned_text
def analyze_sentiment(self, text):
# NLTK를 사용하여 텍스트를 감정 분석하는 기능을 구현합니다.
return sentiment_result
def display_result(self, result):
self.result_label.setText("감정 분석 결과: " + str(result))
self.result_label.adjustSize()
3. NLTK를 사용한 감정 분석 기능 추가
from nltk.sentiment import SentimentIntensityAnalyzer
class MainWindow(QMainWindow):
# ...
def analyze_sentiment(self, text):
sid = SentimentIntensityAnalyzer()
scores = sid.polarity_scores(text)
compound_score = scores["compound"]
if compound_score >= 0.05:
return "긍정"
elif compound_score <= -0.05:
return "부정"
else:
return "중립"
4. 실행
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
결론
PyQt를 사용하여 감정 분석 기능을 갖춘 간단한 프로그램을 구현해보았습니다. 이를 통해 사용자는 텍스트를 입력하고 분석 결과를 즉시 확인할 수 있습니다. 이 예시를 통해 PyQt와 NLTK를 활용하여 감정 분석 기능을 구현하는 방법을 이해하실 수 있을 것입니다.