Search
Login

평점과 리뷰 텍스트 감성 분석을 결합한 추천 시스템 향상 방안 연구

Created
2022/08/03
Editor
Tags
Text mining
Recommendation System

이 논문을 선정하게 된 배경

저는 기존에 어플을 개발했었고 더 사용자들이 편리하게 쓸 수 있는 어플을 고민하다가 데이터 분석을 공부하기로 결심했습니다. 그중에서도 유튜브와 넷플릭스, 네이버 뉴스와 같이 사용자들의 정보를 분석해서 적절한 컨텐츠를 제공하는 것에 관심이 많았고 검색을 해보니 이는 추천시스템이라는 것을 알게 되었습니다. 향후 저만의 추천시스템을 만들고 싶기도하고 텍스트 마이닝에도 관심이 많아 영화리뷰를 감정분석하여 추천하는 이 논문을 선택하게 되었습니다.

Abstract

개인에게 맞춤형 서비스를 제공하기 위해 협업필터링이 많이 사용되고 있지만 정량적인 정보에만 국한해서 분석이 이뤄지고 있습니다. 더 정확한 추천을 위해서는 리뷰와 같은 정성적인 부분들도 분석해야 하고 이 논문은 텍스트 감정분석을 활용하여 추천시스템의 성능을 향상시키는 것을 목표로 하고 있습니다. 기존의 연구들은 텍스트 감성분석을 직접적으로 반영하지 못하지만 본 연구는 감성을 수치화하여 평점에 반영하는 것을 목표로 하고 있습니다.

Introduction

정보가 쏟아지고 있는 상황에서 나에게 적합한 정보를 찾기란 쉬운일이 아닙니다. 그렇기에 추천시스템은 정보의 홍수속에서 살고 있는 우리들에게 너무나 필요하고 중요한 서비스라고 생각합니다. 그러나 과거의 연구들은 정량적인 분석에 많은 초점을 두고 있습니다. 가장 대표적인 지표로는 평점을 사용하였는데 같은 평점이라도 굉장히 상이한 리뷰를 남길 수 있음을 자주 볼 수 있었습니다. 따라서 정성적인 분석이 중요해 지고 있고 이를 텍스트 감정분석을 통해 수치화하여 추천시스템의 성능을 향상해 보려는 목적을 가지고 있습니다.

Model/Architecture

1. 데이터 수집(Web Crawling)

기본적으로 영화 평점과 리뷰에 대해 분석하는 것이기 때문에 데이터가 필요합니다. 이 논문에서는 네이버영화라는 페이지에서 웹크롤러를 사용하여 사용자가 남긴 평점, 리뷰를 수집하였습니다.

2. 데이터 표본 추출(Sampling)

평점을 부여한 영화보다 평점을 부여하지 않은 영화가 많게 되면 데이터가 희소한 문제가 발생합니다. 따라서 이 연구에서는 적어도 10개이상의 영화에 대해 평점을 남긴 사용자의 데이터만 추출하였습니다.

3. 평점 정규화(Noramlization)

사람마다 평점을 주는 기준이 다르기 때문에 두 명이 같은 느낌을 받았다 하더라도 다른 평점을 줄 수 있습니다. 이를 보정해 주기 위해 평가성향을 바탕으로 데이터를 정규화하는 과정을 진행했습니다.

4. 리뷰 - 전처리(Preprocessing)

우선 불필요한 단어, 특수문자, 문장부호, 영문자, 숫자를 제거하고 라이노 라이브러리를 활용하여 분석에 많이 사용되는 명사, 동사, 형용사만 선별하여 추출하였습니다.

5. 리뷰 - 감정분석(Sentiment Analysis)

1.
리뷰 데이터 수집
사전을 구축하기 위해 네이버랩에서 제공하는 데이터를 이용해 평점 1~3점은 부정인 0으로 9~10점은 긍정인 1로 label을 부여합니다.
2.
리뷰 데이터 전처리
라이노 라이브러리를 활용하여 형태소를 분석한 후 명사, 동사, 형용사만 추출합니다.
3.
사전 구축
전처리를 마친 리뷰데이터를 DTM 행렬로 만듭니다. 또 단어의 중요성 정도를 나타내는 TF-IDF를 종속 변수로 하고 전처리에서 만들어준 0,1 label값을 종속변수로 사용한다. 사전을 구축하는 방식으로는 회귀분석을 사용하고 릿지회귀, 라쏘회귀, 엘라스틱넷 회귀 중 정확도가 높은 것을 사용할 예정입니다.
회귀분석을 통해 나온 값이 0보다 클경우에는 긍정사전에 추가하고 0보다 작을 경우에는 부정사전에 단어를 추가하여 감성사전을 구축합니다.
4.
사전 정확성 검정
Setiment Score
SetimentScore=PoswordNegativewordPosword+NegativewordSetimentScore = {Posword-Negativeword\over Posword+Negativeword}
Accuracy
Accuracy=TP+TNTP+FP+FN+TNAccuracy = {TP+TN\over TP+FP+FN+TN}
테스트 데이터의 감성 점수를 산출하여 감성 점수가 0보다 큰 경우에는 긍정, 0보다 작은 경우에는 부정으로 평가하며 결과를 위의 정확도 식을 사용해서 평가합니다.
Lasso 회귀
Ridge 회귀
ElasticNet회귀
중에서 ElasticNet 회귀가 가장 높은 정확도를 보여서 이 모델을 선정하였습니다.

6. 감정 수치를 반영한 평점

새로운 평점은 감성 수치(Setiment Score)와 평점을 합하여 표현합니다.

7. 평점 예측

평점 예측에는 메모리기반의 Collaborative Filtering, 모델기반의 Matrix Factorization의 대표 알고리즘인 SVD, SVD++를 활용하여 분석하였습니다.
피어슨 상관계수
IBCF
SVD(행렬 분해의 대표적인 방식)
SGD(SVD로 나타낸 Cost Function의 min값을 찾기 위해 Gradient Descent를 활용하는 방법)
SGD++(sparse한 경우 SVD가 정의되지 않을 수 있는데 이를 보완하여 implicit feedback에도 적용할 수 있는 방법)
분석 결과 모든 추천 알고리즘에서 성능이 향상된 사실을 확인할 수 있었습니다.