감성분석(Sentiment Analysis)을 수행하기 위해 3가지 방법을 이용하였으며, 각 방법의 성능(정확도, accuracy)을 비교해 보았습니다. 사용된 세 가지 방법은 다음과 같습니다.
- Bag-of-Words 방법 (TF-IDF + Logistic Regression)
- Word Embedding 방법 (Word2Vec + Logistic Regression)
- Neural Network 방법 (RNN)
1. Bag-of-Words 방법 (TF-IDF + Logistic Regression)
📌 Bag-of-Words란?
Bag-of-Words는 문서를 단어의 출현 빈도를 기반으로 숫자 벡터로 변환하는 전통적인 텍스트 분석 방법입니다. 그러나 단순 출현 빈도만으로는 자주 등장하는 단어의 영향력이 지나치게 커질 수 있으므로, 여기서는 TF-IDF (Term Frequency - Inverse Document Frequency) 방법을 사용하여 각 단어의 중요도를 반영한 가중치를 부여합니다.
📌 수행 과정
- 텍스트 데이터를 TF-IDF 방법을 이용해 수치 벡터로 변환
- 변환된 벡터를 이용하여 로지스틱 회귀(Logistic Regression) 모형으로 긍정(Positive)과 부정(Negative) 리뷰를 분류
📌 장점 및 한계
- 장점: 직관적이고 해석이 쉬우며 구현이 간단
- 한계: 문장의 문맥이나 순서가 고려되지 않아 정보 손실이 발생할 수 있다.
2. Word Embedding 방법 (Word2Vec + Logistic Regression)
📌 Word2Vec이란?
Word2Vec은 딥러닝 기반의 임베딩 기술로, 단어를 의미 있는 연속 벡터 공간에 표현하여 유사한 단어들이 유사한 벡터 값을 가지도록 합니다. 단어의 의미를 포착하여 보다 정교한 분석을 가능하게 합니다.
📌 수행 과정
- Word2Vec 알고리즘을 사용하여 각 단어를 100차원의 벡터로 표현
- 각 문장에 포함된 단어 벡터들의 평균값을 구하여 문장 전체를 하나의 벡터로 표현
- 이렇게 만들어진 벡터를 Logistic Regression 모델로 분류하여 감성분석을 수행
📌 장점 및 한계
- 장점: 단어의 의미를 잘 반영하여 성능을 개선할 수 있습니다.
- 한계: 문장 내 단어 순서가 고려되지 않고 단순히 평균값을 이용하기 때문에 문맥 정보가 충분히 반영되지 않을 수 있습니다.
3. Neural Network 방법 (RNN, Recurrent Neural Network)
📌 RNN이란?
Recurrent Neural Network(RNN)는 순차적인 데이터를 처리할 때 뛰어난 성능을 보여주는 신경망 모델입니다. 텍스트와 같은 시계열 데이터를 효과적으로 분석하며, 문장 내 단어 순서와 문맥을 학습하는 능력을 가지고 있습니다.
📌 수행 과정
- 텍스트 데이터를 Tokenizer로 처리하여 각 단어를 숫자 시퀀스로 변환
- 시퀀스의 길이를 동일하게 맞추기 위해 padding을 수행
- Embedding 레이어를 통해 시퀀스를 벡터로 변환한 후 SimpleRNN을 통해 학습
- 마지막으로 Dense 레이어에서 감성을 분류(긍정 또는 부정)
📌 장점 및 한계
- 장점: 단어의 순서와 문맥을 고려하여 보다 높은 정확성을 달성
- 한계: 계산 비용이 높고 학습 시간이 상대적으로 오래 걸립니다. 긴 문장에서는 gradient vanishing 문제가 발생할 수 있어 LSTM이나 GRU와 같은 발전된 RNN 모형을 활용
📈 세 가지 방법의 정확도 비교 예시
방법Training AccuracyTesting Accuracy특징
TF-IDF + Logistic Regression | 간단하고 빠름 |
Word2Vec + Logistic Regression | 단어 의미 반영, 중간 정도 성능 |
RNN(SimpleRNN) | 높은 정확도, 문맥 반영 |
🎯 결론 및 의견
- Bag-of-Words 방법은 구현이 간단하고 빠르게 분석할 수 있는 장점이 있지만 문맥 정보를 놓치는 단점이 존재합니다.
- Word Embedding 방법은 단어 의미를 효과적으로 활용하지만, 문장 전체의 맥락을 완전히 반영하기 어렵습니다.
- Neural Network(RNN)는 문맥까지 고려할 수 있어 일반적으로 성능이 우수하지만, 학습 과정이 복잡하고 시간이 오래 걸릴 수 있습니다.
사용하고자 하는 환경과 목표하는 성능, 데이터 특성에 맞춰 적절한 방법을 선택하는 것이 중요합니다.
LIST
'Python' 카테고리의 다른 글
numpy 실습 (1) | 2025.05.01 |
---|---|
matplotlib 실습 (0) | 2025.05.01 |
크롤링 (2) | 2025.04.26 |
matplotlib 라이브러리 (0) | 2025.04.26 |
pandas 라이브러리 (0) | 2025.04.26 |