Project/생활데이터 분석

[프로젝트] 호텔 리뷰 텍스트 분석 & 분류 모델 제작

하나719 2020. 12. 27. 15:16
반응형

개요

- 데잇걸즈 4기 데모데이 프로젝트로 진행한 내용 정리

- 코드 및 발표자료 링크

- 주요 역할: 데이터 수집 및 전처리, 데이터 라벨링, 로지스틱 회귀 모델링

- 주제 : 호텔 리뷰 중 예약에 도움이 되는 리뷰 순으로 정렬하는 소팅 모델 제안

문제 인식 & 주제 선정

- 코로나 이후 재택근무 시행, 사회적 거리두기 등으로 집에만 머무르는 시간이 많아지면서 서울 호텔, 호캉스 키워드는 작년 동기간 대비 오히려 증가했음

- 호텔을 실제로 예약해보고자 사이트에 들어가서 리뷰를 보았는데, 가장 상단에 있는 리뷰의 대부분이 "굿","좋았어요", "잘 쉬다갑니다" 등의 예약에는 도움되지 않는 리뷰가 많았음

 

-> 이는 고객이 불필요한 스크롤을 하게 만드는 요소이며, 이를 개선한다면 호텔 예약을 하는 고객이 많은 리뷰를 봐야하는 수고를 덜어줄 수 있다고 생각

아이디어

- 호텔 예약 플랫폼의 리뷰를 분석하여, 예약에 도움이 되는 리뷰의 특징을 찾아 도움되는 리뷰순으로 정렬하는 모델을 제시하자!

 

분석 과정

데이터 수집

- 호텔 예약 서비스 사용에 대해 직접 시행한 설문조사 결과를 토대로 야놀자, 여기어때, 아고다 리뷰 크롤러 제작

- 3성, 4성, 5성 급 호텔에서 골고루 리뷰 수집 -> 총 4,500개 

 

데이터 정제

1) 전처리

* 이모티콘을 제거하는 방식으로 진행했으나, 이모티콘도 감정을 표현하는 하나의 방식이기 때문에 텍스트로 대치해주는 방식을 적용하면 모델의 성능을 올릴 수 있을 것으로 기대됨 

* 예시: (😍-> (하트) / 👍🏻-> (굿) )

 

2) 데이터 라벨링

 

종속 변수: 도움되는 리뷰 여부

- 도움되는 리뷰: 1 

- 도움되지 않는 리뷰: 0

3) 데이터 토큰화

 

- 리뷰 특성상 다른 텍스트문서에 비해 길이가 짧은 편인데, MeCab 은 단어의 원형을 추출해주기 때문에 같은 뜻을 가졌지만 형태가 다른 단어들을 하나로 count하여 데이터가 분산되는 것을 방지할 수 있었습니다.

- 문장을 토큰화 하여 원하는 품사만 추출 한 뒤에, 출연 빈도가 높지만 분석에 의미가 있지 않은 단어들은 불용어 사전에 추가하여 제거해주는 작업을 진행했습니다. 

 

TDM & TF-IDF

- 텍스트데이터인 리뷰를 컴퓨터가 이해할 수 있도록 숫자로 표현한 TDM(Term Document Matrix)을 만들어줍니다.

- 전체 문서에서 단어의 중요도를 파악하여 가중치를 조절하는 TF-IDF 를 구합니다.

-> 행렬로 변환 후 텍스트데이터로도 수치데이터처럼 다양한 통계 분석이 가능해집니다. 

 

[참고글]

2020/11/27 - [텍스트분석] TDM (Term Document Matrix) 단어 문서 행렬

2020/11/27 - [텍스트분석] 단어빈도의 가중치 TF-IDF

모델링

- X(독립변수): TDM, 호텔 정보 크롤링 사이트, 리뷰 길이 수

- Y(종속변수): 도움이 되는지 여부

- 시도한 Model 

1) Tensorflow: Sequential Model

2) Scikit-learn: Logistic Legression

모델 비교

- 정밀도를 높이기 위해 문턱값을 0.5 에서 0.7로 높였을 때 정확도가 유지되는 Scikit-learn 의 Logistic Regression 사용

모델 평가 지표

- 리뷰를 도움되는 순으로 재정렬 했을 때, 상단에 도움되지 않는 리뷰가 포함되는 경우를 줄이는 것이 서비스 측면에서 가장 중요하다고 판단하여 FP(False Positive)를 줄이는 것을 목표로 했습니다.

 

새로운 리뷰 데이터에 모델 적용

- 상위 50개 리뷰 중 도움되는 리뷰의 비율이 기존 32% 에서 새로운 모델 적용시 96%로 증가하는 것을 확인

마치며

- 모델을 만드는 것보다도 전처리 과정에 정말 큰 시간을 투자하는 것이 중요했습니다. 특히 잘 정제된 문서가 아닌 리뷰 특성상 오타, 맞춤법, 신조어 등이 많았는데 이는 모델을 헷갈리게 만드는 요소이기 때문에 잘 가공해주어야 모델이 잘 학습할 수 있었습니다.

- 도움이 되는 리뷰와 아닌 리뷰로 라벨링할 때 기준을 더욱 명확히 해야 합니다. 사람이 아닌 기계가 와도 분류 할 수 있을 정도로 기준을 세세하게 짠다면, 모델링 성능을 올리는데에 도움이 될 수 있습니다. (사람이 헷갈리면, 컴퓨터도 헷갈린다!)

- 가장 시간이 많이 소요된 라벨링 작업을 자동화 한다면 학습 데이터량을 폭발적으로 증가시킬 수 있고, 정확도 또한 높일 수 있습니다.

 

반응형