카페 주문 앱 '패스오더'의 사용자 경험 개선을 위해 구글 플레이스토어와 애플 앱스토어의 리뷰 데이터를 수집하고 분석한 프로젝트입니다. 단순 빈도 분석을 넘어 감성별 구문 추출을 통해 실질적인 서비스 개선 인사이트를 도출했습니다.
- 목적: 앱 리뷰 데이터를 활용한 사용자 긍정/부정 경험 분석 및 Pain Point 발굴
- 데이터 소스: Google Play Store, Apple App Store (약 1.9만 건)
- 주요 기술: Python, KoNLPy(Okt), WordCloud, Matplotlib, Seaborn
- 핵심 결과:
- 별점 기반 감성 라벨링을 통한 리뷰 자동 분류 (긍정: 4-5점, 부정: 1-2점)
- 불용어(Stopwords) 고도화를 통한 데이터 정제
- [명사+형용사] N-gram 추출을 통해 맥락 중심의 인사이트 도출 (예: '결제_편하다', '위치_오류')
-
Language:
Python 3.9 -
Libraries:
-
google-play-scraper,app-store-scraper: 리뷰 데이터 크롤링 -
pandas: 데이터 처리 및 CSV 저장 -
konlpy (Okt): 한국어 형태소 분석 및 명사/형용사 추출 -
wordcloud,matplotlib,seaborn: 데이터 시각화 -
Environment: Java (JDK 17) - KoNLPy 실행 필수 조건
구글과 애플 양대 스토어에서 데이터를 수집하고 병합합니다. 애플 앱스토어 수집 시 발생하는 인코딩 에러를 해결하기 위해 영문 매칭 기법을 적용했습니다.
# 애플 앱스토어 수집 (인코딩 에러 방지 버전)
as_reviews = AppStore(country='kr', app_name='passorder', app_id='1350702018')
as_reviews.review(how_many=1000)
# 별점 기반 감성 라벨링
df_all['sentiment'] = df_all['score'].apply(
lambda x: 'Positive' if x >= 4 else ('Negative' if x <= 2 else 'Neutral')
)🚨 이슈 해결
- 명령어 인식 오류: 윈도우 환경 변수 문제로
pip명령어가 거부될 때py -m pip을 사용하여 해결했습니다.- 인코딩 오류: 애플 앱스토어 라이브러리의 한글 처리 문제(
latin-1)를 해결하기 위해app_name을 영문으로 지정했습니다.
초기 워드 클라우드에서 의미 없는 단어(주문, 매장 등)가 크게 나오는 문제를 해결하기 위해 강력한 불용어 리스트를 적용했습니다.
refined_stop_words = ['패스', '오더', '진짜', '너무', '정말', '사용', '이용', '카페', '커피', '앱', '어플', '주문', '매장']
# 불용어가 제거된 긍정/부정 워드클라우드 생성단어 하나로는 파악하기 힘든 맥락을 잡기 위해 [명사 + 형용사] 조합을 추출했습니다.
# 명사+형용사 구문 추출 로직 예시
# "결제가 빨라요" -> [결제(Noun), 빠르다(Adjective)] -> "결제_빠르다"
pos_tags = okt.pos(text, stem=True)
nouns = [word for word, tag in pos_tags if tag == 'Noun']
adjectives = [word for word, tag in pos_tags if tag == 'Adjective']
- 긍정 리뷰: '주문_편하다', '사용_편하다', ‘미리_편하다’가 상위권. 앱 내의 주문에 대한 전반적인 이용과정과 미리 주문하는 MVP기능이 가장 큰 강점임.
- 부정 리뷰: '로그인_안되다', '사용_안되다', '적립_안되다' 등이 관찰됨. 로그인 오류 해결 및 적립 오류 해결이 필요함.
- JDK 설치: KoNLPy 사용을 위해 Adoptium에서 JDK 17 이상을 설치하고
JAVA_HOME을 설정하세요. - 라이브러리 설치:
py -m pip install google-play-scraper app-store-scraper pandas konlpy wordcloud matplotlib seaborn
- 스크립트 실행:
scraping.py: 데이터 수집 및 초기 전처리N-gram_analysis.py: 구문 추출 및 최종 시각화

