허위 리뷰를 찾는 기술의 발전

by SL

얼마 전에 허위로 작성된 리뷰를 찾으려는 연구를 소개했다. 자연어 처리 기법으로 리뷰 내용을 분석해서 상상으로 꾸며진 글을 분류하는 것이었는데, 흥미가 생겨서 관련 연구를 더 찾아봤다. 역시나 최근 몇 년 동안 꾸준하게 연구해온 사람들이 있었고, 또 그 방법론에서도 눈에 띄는 흐름이 있었다.

2008년 WSDM에 나온 Opinion Spam and Analysis를 보면, 리뷰 문서 단위로 보면서 각각이 스팸인지 아닌지 판정하려고 한다. 여기서 스팸이라 함은, 흔히 생각하는 그런 말도 안 되는 광고 문서가 아니라 특정 상품을 홍보하거나 혹은 깎아내릴 목적으로 작성된 가짜 리뷰(Fake Review) 혹은 의견 스팸(Opinion Spam)을 말한다. ((저자들은 그런 것까지 포함하여 스팸 종류를 3가지로 구분하지만, 핵심은 이런 가짜 리뷰 찾기다.)) 여기서 궁금한 점은 세 가지다. (1) 리뷰가 허위로 작성된 스팸인지 아닌지 어떻게 알까? (2) 스팸 판정 모델을 만들려면 학습에 쓸 데이터가 있어야 하는데 그건 어떻게 구했을까? 마지막으로 (3) 어떤 특성(Feature)을 이용해서 분류했을까?

논문에서 저자들이 하소연(?)하는 것처럼, 글 내용만 보고 그게 진실한 리뷰인지 홍보성인지 알기는 사람도 힘들다. 그러니까 스패머들이 그런 짓을 하는 거겠지만.. 아무튼 이 연구에서는 중복된 내용이 여기저기 많이 나오는 리뷰를 스팸이라고 가정했다. 제품을 칭찬하는 글을 하나 잘 써놓고 이 제품 저 제품에 재활용하는 경우가 많다는 점을 이용한 것이다. 그럼 그런 리뷰를 골라내려면 어떤 특징을 이용할 수 있을까? 논문에 나오는 것들 몇 개만 나열해보자.

  • 리뷰 길이, 리뷰에 대한 사람들의 평가
  • 리뷰가 작성된 순서 (광고가 목적이라면, 첫리뷰로 올리는 게 효과적이므로)
  • 긍정적/부정적 단어의 비율
  • 리뷰 내용과 제품 소개 내용과의 유사도
  • 리뷰 평점과 다른 사람들의 평점과의 일치도
  • 리뷰어가 쓴 리뷰 중에서 제품의 첫리뷰였던 비율

이때까지만 해도 -리뷰 작성자 정보를 사용하긴 하지만 일단은- 리뷰 자체의 특성을 이용해서 스팸을 찾으려고 노력하고 있었다. 하지만, 2년 후 CIKM에 발표된 Detecting Product Review Spammers using Rating Behaviors에서는 리뷰가 아닌 사용자 단위로 스패머를 찾으려고 하는 변화가 발견된다. 이 논문의 저자 목록에는 앞의 논문 Opinion Spam and Analysis를 쓴 Nitin Jindal과 Bing Liu가 포함되어 있다. 저자들에 따르면, 접근 방식을 바꾼 이유는 개별 리뷰보다는 작성자의 행위로부터 스팸 증거를 찾는 게 더 쉽기 때문이다. (A user centric approach is preferred over the review centric approach as gathering behavioral evidence of spammers is easier than that of spam reviews.)

그럼 사용자의 어떤 특징을 분석했을까? 우선, 동일한 제품에 비슷한 내용과 평점의 리뷰를 여러 번 올리는 행위를 찾아냈고, 그 사람이 올린 평점이 다른 사람들과 얼마나 비슷했는지를 살폈으며, 다른 리뷰가 없을 때 재빨리 리뷰를 올려서 사람들의 판단을 흐트려뜨리려 한 정도를 점수화했다. 요소 뿐만 아니라 평가 방법에서도 발전이 있었는데, 중복 문서를 스팸으로 간주했던 2년 전과 달리 이번에는 직접 학생들을 리쿠르팅해서 그들에게 스패머 여부를 판정해달라고 했다. 아래와 같은 프로그램을 만들어서 제공했다니 평가 작업이 조금은 수월했을 듯싶다.

문서 단위. 그리고 문서 작성자 단위. 그 다음은 뭘까? 그 답이 올해 월드와이드웹 컨퍼런스에 올라온 Spotting Fake Reviewer Groups in Consumer Reviews에 담겨 있다. 이 논문에서는 집단적으로 스팸 리뷰를 작성하는 그룹을 발견하려는 연구를 싣고 있으며, 역시나 Bing Liu의 이름이 저자 목록에 올라 있다.

대충 읽은 만큼 간단히 소개하면, 이 연구에서는 같은 제품에 동시에 리뷰를 남기는 사용자 집합들을 찾아낸 뒤, 이 그룹이 정말 스패머들인지 판단하는 방법을 제시했다. 예를 들면,

  • 특정 그룹의 사람들이 어떤 제품의 리뷰를 막 몰아서 올렸는가
  • 그 그룹의 평가 점수가 그룹에 속하지 않은 사람들의 점수와 많이 다른가
  • 그룹 사람들의 리뷰 내용이 비슷한가
  • 그룹 사람들이 동시에 리뷰를 남긴 제품의 개수 (이 값이 크다는 것은, 그룹 멤버들의 취향이 비슷해서일 수도 있지만 리뷰 조작 사주를 받았기 때문일 수도 있다.)

같은 특징을 분석해서 그룹의 스팸성을 판정한다.

게다가, 스패머 여부를 판정하기 위해 전문가를 초빙했다고 한다. Rediff Shopping과 eBay의 직원 8명을 데려다가 8주 동안 스팸 그룹 후보들을 보여주고 스팸이다/아니다/모르겠다(boardline)로 평가받았더니 그들간의 일치도가 완벽에 가까웠다고 자랑한다. (Fleiss’ multi-rater kappa 0.79)

일련의 연구들을 보면서 드는 생각을 적어보자면,

1. 스팸 리뷰를 찾기 위해서 문서 -> 사용자 -> 집단으로 범위를 넓혀서 분석하는 흐름이 흥미롭고, 평가 데이터를 고도화해가는 과정도 재미있다. 역시 어느날 하늘에서 뚝 떨어지는 연구는 없나 보다. 또, 자세히 살펴보면, Spotting Fake Reviewer Groups in Consumer Reviews가 나오기 1년 전에 같은 컨퍼런스에 예비 연구 격인 포스터가 Detecting Group Review Spam이라는 제목으로 제출되었다. Opinion Spam Analysis도 역시 1년 전 다른 컨퍼런스의 포스터 Review Spam Detection으로 예고되었다. 예전에 포스터 하나 꼴랑 내고 풀페이퍼에는 결국 실패한 나로서는 이들의 뚝심이 조금 부럽다.

2. 마지막 논문의 그룹 분석 방법은 리뷰 스패머 찾는 용도 외에도 여기저기 써먹을 데가 많아 보인다. 무엇이 되었건 특정한 아이템을 매개로 공통적으로 발견되는 사용자 그룹을 찾고 그들의 공통된 특성을 분석하면… 좋은 쪽으로는 비슷한 사용자 찾기나 추천 시스템. 나쁜 쪽으로는 이른바 커뮤니티 속 알바 찾기가 아닌가 -_-