[개인] 텍스트 마이닝 기반 경쟁 가게 리뷰 분석 및 마케팅 전략 수립 프로젝트 - 데이터 처리 및 분석
분석 개요
수집한 8개 가게의 리뷰 텍스트 데이터를 기반으로 텍스트 분석 및 감성 분석(Sentiment Analysis) 을 수행했습니다. 분석에 맞게 다른 전처리 방식을 사용하였으며, 분석 결과는 최종 대시보드에 사용되었습니다.
- 텍스트 분석 과정:
텍스트 토큰화 → TF-IDF 분석(불용어 제거 O) → 감성분석(불용어 제거 X) - 데이터 구성:
분석 목적에 따라 두 가지 데이터셋을 분리 생성- TF-IDF용: 불용어 제거 후 핵심 단어 추출
- 감성분석용: 강조어·부정어 유지 (감정 표현 손실 방지)
감성 분석 고도화 과정
처음에는 단순한 긍정/부정 사전 기반으로 감성 분석을 시도했지만
정확도가 낮아 지속적으로 모델을 보강하였습니다.
개선 단계
- 긍정어·부정어 단어 확장
- 중립어(Neutral words) 추가 및 제외 처리
- 강조어(Intensifiers) 에 따른 감정 가중치 반영
- 부정어(Negation) 에 따른 의미 반전 처리
- KNU 한국어 감성사전 추가 결합
데이터 토큰화
- TF-IDF 분석용: 불용어 제거, 조사 제거
- 감성분석용: 불용어 미제거, 단순 조사만 제외
- 분석 목적에 맞게 서로 다른 토큰 데이터를 생성
데이터 분석
TF-IDF 분석
vectorizer = TfidfVectorizer(
max_features=1000, # 상위 1000개 단어까지만 사용
min_df=2, # 2개 이상 문서에서 등장한 단어만 포함
max_df=0.9, # 전체 문서의 90% 이상에서 등장하는 단어는 제거 (너무 흔한 단어)
ngram_range=(1, 2) # unigram + bigram (단어 1개 또는 2개 조합)
)
- 위 조건으로 TF-IDF 분석을 실시
- 각 단어의 중요도(importance) 와 특이도(distinctiveness) 계산
- 중요도: 많이 등장한 단어
- 특이도: 특정 가게에서 상대적으로 많이 등장한 단어 (경쟁력 지표)
감성 분석
- 1순위로 감성사전을 사용하여 단어별 점수 계산
- 감성사전에 없는 단어는 키워드 방식으로 긍/부정 여부 판정
- 최종 감정 점수(positive_score - negative_score)를 기준으로 리뷰별 긍정 / 부정 / 중립 분류 수행
# 긍정어 사전 (일부)
positive_words = {
'좋', '맛있', '최고', '훌륭', '추천', '만족', '깨끗', '친절', '신선',
'고소', '담백', '깔끔', '부드럽', '쫄깃', '달콤', '향긋', '가성비',
'재방문', '합리', '저렴', '괜찮', '쾌적', '강추', '최곱'
}
# 부정어 사전 (일부)
negative_words = {
'맛없', '별로', '실망', '짜', '불친절', '비싸', '후회', '최악',
'느리', '시끄럽', '불편', '냄새나', '불결', '아깝', '엉망'
}
# 중립어 (제외 대상)
neutral_exclude_words = {
'식사', '가게', '식당', '메뉴', '주차', '배달', '시간', '장소'
}
# 부정어
negation_words = {'안', '못', '없', '아니', '전혀', '결코', '비'}
# 강조어 가중치
intensifiers = {
'너무': 1.5, '정말': 1.5, '진짜': 1.5, '완전': 1.5,
'매우': 1.3, '아주': 1.3, '엄청': 1.5, '진심': 1.5,
'최고로': 2.0, '되게': 1.3
}
| 예시 문장 | 적용 결과 |
|---|---|
| “너무 맛있어요” | 긍정 점수 × 1.5 |
| “안 친절했어요” | 긍정어 → 부정어로 반전 |
| “정말 깔끔하고 맛있어요” | 강조어 + 긍정어 2회 누적 |
분석 결과 활용
- TF-IDF 결과를 통해 가게별 차별 키워드 도출
- 감성분석 결과를 통해 긍정·부정 리뷰 비율 시각화
- 결과를 Tableau에 연동하여 가게별 강점·약점·리뷰 패턴을 직관적으로 파악할 수 있도록 설계
다음 단계 (예정)
현재까지 수집된 리뷰 데이터를 기반으로 텍스트 마이닝 단계를 완료했습니다.
다음 단계에서는 데이터 분석 결과를 기반으로 대시보드 설계를 진행할 예정입니다.
- 데이터 수집
네이버 리뷰 데이터를 크롤링하여 가게별 리뷰·메뉴·방문 정보를 수집합니다.
- TF-IDF 분석
리뷰 텍스트를 기반으로 가게별 특징 단어(차별 키워드) 를 추출하고 경쟁 가게 간 언어적 차이점을 분석합니다.
- 감성 분석 (Sentiment Analysis)
리뷰 내 긍정·부정 표현을 분석하여 가게별 감정 점수 및 비율을 산출하고
긍정/부정 키워드의 패턴을 비교합니다.
- Tableau 시각화
TF-IDF 및 감성 분석 결과를 기반으로
가게별 비교 대시보드 및 지역 기반 지도 시각화를 구현합니다.
- 인사이트 도출 및 협업
대시보드 인사이트를 바탕으로 마케팅 담당자와 협업하여
브랜드 강점과 개선 포인트를 도출하고 콘텐츠 방향성을 제시합니다.
- 마케팅 전략 기획 및 실행
도출된 인사이트를 홍보 콘텐츠, 이벤트, SNS 포스팅 등 마케팅 전략으로 연결합니다.
전체 분석은 GitHub Repository 에서 확인할 수 있습니다.