AiRBnB : Aspect in Review 비교 & 분석 숙소를 고를 때 '사진이랑 다르지는 않을까, 적혀져 있는 정보가 틀리지는 않을까' 고민해보신 적 없으신가요? 그래서 저희는 에어비앤비의 리뷰를 통해 사람들의 관심사에 대해 알아보았습니다! 토픽 모델링을 통해 사람들이 관심있는 Aspect를 살펴보고 LARA를 이용해 Aspect별 점수를 매겨 숙소의 평가기준인 별점도 재정의하여 쉽게 방을 고를 수 있도록 하였습니다. 이제 이것저것 고민하시지 마시고 리뷰로 방을 골라보세요
4. 1. 주제선정배경
리뷰 = 별점 + 텍스트
• 별점
• 가치: 파악이 쉽고 상품끼리 비교하기 용이함
• 한계: 이용자 개개인의 평점 도출 배경 알 수 없음. 구체적이지 못함
• 텍스트
• 가치: 별점만으로 파악하기 힘든 여러 측면의 정보 도출
• 한계: 한눈에 파악하기 힘듦
6. 1. 주제선정배경
숙박 공유 서비스
방을 빌려준 사람을 호스트
들어가는 사람을 게스트
배낭여행자들 사이에서 인기
공유 민박업은 기존에 없던 새로운 서비스
호스트의 부재, 셀프 체크인 등 예기치 못한 문제 발생
구체적인 정보 필요(위치, 시설, 호스트 등)
7. 1. 주제선정배경
답하고자 하는 질문들
리뷰를 쓸 때, 중요하게 생각하는 주제는 무엇일까 ?
(비슷한 것들 많은데) 굳이 리뷰를 모두 읽어야 하나?
좀 더 효과적으로 방을 비교할 수 있는 방법은 없을까?
또다른 정보를 알아낼 수는 없을까?
8. D A T A
데이터 수집 및 전처리
A I R B N B : Aspect In Review 비교 & 분석
9. 2. 데이터 설명
- 대한민국의 도시 9곳 선정 : 서울,부산,제주,서귀포,강릉,전주,대전,대구,광주,여수
- 방의 고유번호인 Listing ID 수집 -> 방에 해당하는 리뷰 크롤링
2.1 데이터 수집 : 에어비앤비 리뷰
총 32,958개
지역별 방 갯수
총 628,095개
지역별 리뷰 수
10. 2. 데이터 설명
2.2 데이터 전처리 : 번역
언어별 리뷰 수
약 40여개 언어가 혼재, 파파고 번역기를 이용하여
전처리가 상대적으로 쉬운 영어로 번역
11. 2. 데이터 설명
2.2 데이터 전처리
리뷰 안에는 문장
문장 안에는 단어
품사로 구분되는 단어
전 처 리 목 표
리뷰를 요약하는 단어 추출
12. 2. 데이터 설명
1. 정규표현식 이용하여 알파벳과 숫자를 제외한 불필요한 기호들 제거
. ! ? 같이 문장이 끝나는 정보를 포함하는 기호는 남김
2. 정확한 문장 tokenizing 을 위해 정규표현식으로 띄어쓰기 보정
3. 문장 tokenizing (NLTK)
"It's very convenient.” “Many coffee shops nearby are nice."
2.2 데이터 전처리
13. 2. 데이터 설명
4. 너무 짧은 문장은 제거
예 > ‘ha.’, ‘ Oh!’
5. 리뷰가 없는 방 제거
6. 단어 tokenizing (NLTK) 후 품사 tagging
'Many’, 'coffee’, 'shops’, 'nearby’, 'are’, 'nice’, '.'
('Many', 'JJ'), ('coffee', 'NN'), ('shops', 'NNS’),
('nearby', 'RB'), ('are', 'VBP'), ('nice', 'JJ'), ('.', '.')
2.2 데이터 전처리
14. 2. 데이터 설명
7. ‘ 명사 형용사 동사 부사 ‘ 만 뽑고 고유명사(‘NNP’)는 선택적으로 제거
예 > 제거: ‘Henry’, ‘Kyungsoon’
제거 X: ‘Nice’, ‘Wifi’(단어의 시작이 대문자)
8. 품사별 Lemmatization(표제어 추출) 진행
예 > 동사 ‘ is ’ , ’ are ’ -> ‘ be ’
명사 ‘rooms’ -> ‘ room ’
9. 모든 단어를 소문자으로 변환
2.2 데이터 전처리
15. 2. 데이터 설명
10. 불용어(Stop words) 제거 : 분석에 큰 의미를 가지지 못하지만 빈출하는 단어
Python NLTK에서 제공하는 stopwords 사용해 제거
Ex) I, am, a, the…
분석을 진행하며 불필요한 단어는 불용어 리스트에 지속적으로 업데이트
2.2 데이터 전처리
16. 2. 데이터 설명
"It's very convenient.Many coffee shops nearby are nice.
Also coffee is good ☺”
[ [very, convenient]
, [coffee, shop, nearby, nice]
,[coffee, good ] ]
2.2 데이터 전처리
17. M O D E L
LDA / Elastic Net / LARA
A I R B N B : Aspect In Review 비교 & 분석
18. 3. 모델
3.1 LDA : Topic modeling
리뷰를 쓸 때, 중요하게 생각하는 주제는 무엇일까 ?
리뷰가 ‘어떤 주제(topic)’에 관한 정보인지
‘어떠한 측면(aspect)’ 을 언급하는지 알아보자
Ex) 위치, 가격, 청결도
19. 3. 모델
3.1 LDA : Topic modeling
LDA 가정
1. 한 리뷰에는 여러 가지 주제가
포함될 수 있다.
2. 주제에는 여러 개의 단어가
포함될 수 있다.
3. 리뷰에 사용된 단어 하나하나는
어떤 주제에 포함된다.
20. 3. 모델
3.1 LDA : Topic modeling
𝜽 = 문서의 주제 분포
Z = 단어의 주제 분포
𝝋 = 주제의 단어 분포
K = 주제의 수
D = 리뷰 문장 수
N = 문장에 속한 단어의 수
21. 3. 모델
3.1 LDA : 지역별
내륙해안
서귀포
제주
부산
여수
대구
서울
대전
광주
전주
22. 해안 내륙
3.1 LDA : 지역별
3. 모델
host
kind
neat
help
friendly
location
close
convenient
walk
beach
clean
comfortable
bed
everything
bathroom
stay
place
time
want
next
view
see
beautiful
floor
morning
Host
Kind
Helpful
home
Location
Station
close
Subway
bus
airport
Clean
Comfortable
Accommodation
Cozy
Spacious
Restaurant
Store
Convenience
nearby
Use
Bed
Small
Bathroom
kitchen
LDA로 도출한 지역별 주제 분포의 차이
26. 3. 모델
3.2 LARA: Latent Aspect Rating Analysis
▪ 별점( 𝑟𝑑 ) : 리뷰에 대한 별점
▪ Aspect : 말하고자 하는 바 (topic)
▪ Aspect 별점 ( 𝜶 𝒅 ) : 리뷰에 대한 aspect별 별점
▪ Aspect 가중치 ( 𝒔 𝒅 ) : 리뷰에 대한 aspect별 가중치
▪ LARA
‘ 별점과 리뷰 텍스트만 가지고도
aspect별 별점과 가중치를 알 수 있는’ 모델
27. 3. 모델
숙소가 사진이랑 완전 똑같았고 사진처럼 정말 깨끗했습니다. 나와서 건물 하나만 지나면
바로 해운대 백사장이 있어서 저녁에 산책하기에도 너무 좋았고 주변에 편의시설도
있었습니다. 하지만 가격이 비싸서 조금 아쉬웠습니다.
3.2 LARA: Latent Aspect Rating Analysis
28. 3. 모델
숙소가 사진이랑 완전 똑같았고 사진처럼 정말 깨끗했습니다. 나와서 건물 하나만 지나면
바로 해운대 백사장이 있어서 저녁에 산책하기에도 너무 좋았고 주변에 편의시설도
있었습니다. 하지만 가격이 비싸서 조금 아쉬웠습니다.
별점 ( 𝑟𝑑 ) 4점
3.2 LARA: Latent Aspect Rating Analysis
29. 3. 모델
숙소가 사진이랑 완전 똑같았고 사진처럼 정말 깨끗했습니다. 나와서 건물 하나만 지나면
바로 해운대 백사장이 있어서 저녁에 산책하기에도 너무 좋았고 주변에 편의시설도
있었습니다. 하지만 가격이 비싸서 조금 아쉬웠습니다.
별점( 𝑟𝑑 ) 4점
= 청결도 × 4점 + 위치 × 5점 + 가격 × 2점
Aspect 별점 ( 𝒔 𝒅 )
3.2 LARA: Latent Aspect Rating Analysis
30. 3. 모델
숙소가 사진이랑 완전 똑같았고 사진처럼 정말 깨끗했습니다. 나와서 건물 하나만 지나면
바로 해운대 백사장이 있어서 저녁에 산책하기에도 너무 좋았고 주변에 편의시설도
있었습니다. 하지만 가격이 비싸서 조금 아쉬웠습니다.
별점( 𝑟𝑑 ) 4점
= 청결도 × 4점 + 위치 × 5점 + 가격 × 2점
= 0.5 × 4점 + 0.35 × 5점 + 0.125 × 2점
Aspect 가중치 ( 𝜶 𝒅 )
3.2 LARA: Latent Aspect Rating Analysis
31. 3. 모델
단어별 감성 극성
DTM(N*K*D)
aspect 가중치
Variance
aspect 별점
aspect 가중치의 평균
aspect 가중치 의
Variance
Aspect Segmentation
(LDA + Bootstrapping)
3.2 LARA: Latent Aspect Rating Analysis
32. 3. 모델
3.2 Elastic Net - 감정사전 구축
다른 방법으로는
각 주제에 대한 사람들의 생각, 감정을 알 수 없을까?
33. 3. 모델
3.2 Elastic Net - 감정사전 구축
리뷰는 텍스트,
텍스트에는 사람들의 감정이 담겨있다.
그럼 텍스트에 담긴 감정을 어떻게 정량화할 수 있을까?
텍스트에 이용된 단어들의 감정을 수치화 시킨 것이 감정사전이다.
34. 3. 모델
3.2 Elastic Net - 감성사전 구축
감정사전은 이미 존재
But,
Domain(숙소)에 따른 감성사전 구축의 필요성
-> Elastic Net을 이용하여 에어비앤비의 감성사전을 직접 구축
35. 3. 모델
3.2 Elastic Net - 감성사전 구축
+ = = 1 이라는 제약조건 하에서 각 값을 0과 1사이로 조절
중요한 변수를 선택할 수 있고 다중공선성 문제를 해결 가능
데이터의 관측치 수에 비해 변수의 수가 많아지면
변수들 사이의 강한 상관관계로 과적합이 발생 -> 모델 해석이 어렵고 예측력이 떨어짐
36. 3. 모델
3.2 Elastic Net - 감성사전 구축
별점 (rating) 단어 빈도수
DTM very convenient coffee … shop nearby … nice good
review1 1 1 2 0 1 1 0 1 1
Rating
4
37. 3. 모델
3.2 Elastic Net - 감성사전 구축
Elastic Net을 적용하여 산출한 각 회귀계수를 개별 단어의 감정 점수로 사용
별점 (rating) 단어 빈도수
38. 3.3 감성사전 구축 - 결과
Negative Words
vocab Coefficent
challenge -2.095048
burner -0.689223
freshener -0.635682
inaccurate -0.543925
commercial -0.543383
confuse -0.521895
pyeong -0.506351
line -0.503193
furniture -0.466405
advance -0.402517
Positive Words
vocab Coefficent
hostess 0.203116
decorate 0.174437
reply 0.138483
focus 0.136315
tend 0.126949
news 0.115064
human 0.103802
perfectly 0.098851
provide 0.097512
flood 0.095992
- Elastic Net 결과 빈도수 기반으로 추려낸 2920개의 단어 중 412개 단어가 유의
3. 모델
39. M O D E L I N G
Scoring
A I R B N B : Aspect In Review 비교 & 분석
40. 4. 모델링
4.1 모델 Framework
데이터
LDA
주제의
단어분포
▪ LDA output
Distribution topic1 topic2
word1 0.7 0.2
word2 0.3 0.8
41. 4. 모델링
데이터
DTM 생성
감정사전
구축
▪ Elastic Net▪ 문서 단어 행렬
Sentiment
dictionary
Sentiment
score
word1 0.5
word2 0.3
4.1 모델 Framework