[box type=”note”]인터넷에 많은 가짜 맛집 리뷰가 넘쳐나다 보니 ‘맛집’ 대신 ‘오빠랑’이라는 검색어를 이용해서 “강남역 오빠랑”, “명동 오빠랑” 같은 식으로 검색하는 게 낫다는 말이 생길 정도입니다. 우리는 진짜 리뷰와 가짜 리뷰를 판별할 수 있을까요? 이 글은 가짜 리뷰 탐지에 대한 해외의 여러 연구 사례에 관한 글입니다. (편집자)[/box]
아직도 온라인 리뷰(평가, 후기)를 그대로 믿느냐는 핀잔을 피하려고 “인터넷에서 본 거라 얼마나 믿어야 할지는 모르겠지만”이라고 먼저 단서를 달아야만 할 것 같은 나날이다. 요즘 음식점이나 상품에 대한 후기, 영화 평점 등을 있는 그대로 받아들이는 사람이 얼마나 될까? 상업적인 이득을 노리고 작성된 허위 리뷰는 사람들의 짜증을 유발할 뿐만 아니라 정상적인 글에 대한 신뢰도까지 떨어뜨려서 결국 건강한 인터넷 생태계를 망가뜨린다. 이런 문제를 해결하기 위해서는 정직한 리뷰 문화를 정착시키려는 노력도 필요하나, 개인의 호의에만 의존하는 방식으로는 한계가 있다.
몇 년 전부터 온라인상에서 홍보 목적으로 작성된 허위 리뷰를 기계적인 알고리즘으로 찾아내려는 연구가 발표되고 있다. 이 글에서는 연구의 주요한 아이디어를 소개할 것인데, 각각에서 구체적이고 실용적인 도움을 얻을 수도 있고, 발전해온 흐름에서 어떤 경향을 발견할 수도 있을 것이다. 물론, 방패의 발전을 보면서 창을 정교하게 다듬는 사람도 있을 것이다.
허위 리뷰를 찾는 기술의 발전
우선 2008년 WSDM(Web Search and Data Mining)(주1) 컨퍼런스에 발표된 의견 스팸과 분석(Opinion Spam and Analysis)을 보자. 여기서는 리뷰를 문서 단위로 보면서 각각이 스팸인지 아닌지 판정하려고 한다.
스팸 여부를 문서 단위로 파악
여기서 스팸이라 함은, 흔히 생각하는 그런 말도 안 되는 광고 문서가 아니라 특정 상품을 홍보하거나 혹은 깎아내릴 목적으로 작성된 가짜 리뷰(Fake Review) 혹은 의견 스팸(Opinion Spam)을 가리킨다. 일단 궁금한 점은 두 가지다.
- 리뷰가 가짜인지 어떻게 알까?
- 어떤 특성(feature)을 이용해서 분류했을까?
논문에서 저자들이 하소연(?)하는 것처럼, 글 내용만 보고서는 그게 진실한 리뷰인지 홍보성인지 사람도 구분하기 힘들다. (그러니까 스패머들이 그런 짓을 하는 거겠지.) 이 연구에서는 중복된 내용이 여기저기 많이 나오는 리뷰를 스팸이라고 가정했다. 제품을 칭찬하는 글을 하나 잘 써놓고 이 제품 저 제품에 재활용하는 경우가 많다는 점을 이용한 것이다. 그럼 그런 리뷰를 골라내려면 어떤 특성을 이용할 수 있을까? 아래 목록은 저자들이 제시한 것 중 일부다. 스팸성과 상관관계가 있을 듯하지 않은가?
- 리뷰 길이
- 리뷰에 대한 사람들의 평가
- 리뷰가 작성된 순서(주2)
- 긍정적/부정적 단어의 비율
- 리뷰 내용과 제품 소개 내용과의 유사도
- 리뷰 평점과 다른 사람들의 평점과의 일치도
- 리뷰어가 쓴 리뷰 중에서 제품의 첫 리뷰였던 비율
이때까지만 해도 (리뷰의 작성자 정보를 일부 이용하긴 하지만 일단은) 개별 리뷰의 특징을 분석해서 스팸을 찾으려고 노력하고 있었다.
반복 행위, 최초 리뷰 시도 등 문서 작성자 단위로 파악
하지만 2년 후 CIKM(Conference on Information and Knowledge Management)에 발표된 평가 행위를 이용한 제품 리뷰 스패머 탐지(Detecting Product Review Spammers using Rating Behaviors)에서는 리뷰가 아닌 사용자 단위로 스패머를 찾으려는 변화가 발견된다. 저자들이 발표한 바로는, 접근 방식을 바꾼 이유는 개별 리뷰보다는 작성자의 행위로부터 스팸 증거를 찾는 게 더 쉽기 때문이다. 참고로, 이 논문의 저자 목록에는 앞의 “의견 스팸과 분석(Opinion Spam and Analysis)”을 쓴 니틴 진달(Nitin Jindal)과 빙 루(Bing Liu)도 포함되어 있다.(주3)
새로운 접근방식에서는 사용자 단위로 어떤 특징을 분석했을까? 먼저, 동일한 제품에 비슷한 내용과 평점의 리뷰를 여러 번 올리는 행위를 찾아냈고, 그 사람이 올린 평점이 다른 사람들과 얼마나 비슷했는지를 살폈으며, 다른 리뷰가 없을 때 재빨리 리뷰를 올려서 사람들의 판단에 영향을 주려고 한 정도를 점수화했다. 분석 요소뿐만 아니라 스팸 판정 방법에서도 발전이 있었는데, 중복 문서를 스팸으로 간주했던 2년 전과 달리 이번에는 직접 학생들을 리쿠르팅해서 그들에게 스패머 여부를 판정해달라고 했다.
집단으로 스팸 리뷰를 작성하는 그룹 단위로 파악
문서 단위. 그리고 문서 작성자 단위. 다음은 뭘까? 그 답이 2012년 월드와이드웹(WWW) 컨퍼런스에 올라온 소비자 리뷰에서 가짜 리뷰어 그룹 찾기(Spotting Fake Reviewer Groups in Consumer Reviews)에 담겨 있다. 이 논문에서는 집단으로 스팸 리뷰를 작성하는 그룹을 발견하려는 연구를 싣고 있으며, 역시나 빙 루가 저자 목록에 이름을 올렸다.
간단히 소개하면, 이 연구에서는 같은 제품에 동시에 리뷰를 남기는 사용자 집합을 찾아낸 뒤, 이 그룹이 정말 스패머인지 판단하는 접근방식을 취했다. 예를 들어,
- 특정 그룹의 사람들이 어떤 제품의 리뷰를 막 몰아서 올렸는가
- 그 그룹의 평가 점수가 그룹에 속하지 않은 사람들의 점수와 많이 다른가
- 그룹 사람들의 리뷰 내용이 비슷한가
- 그룹 사람들이 동시에 리뷰를 남긴 제품의 개수(주4)
이런 특징을 분석해서 그룹의 스팸성을 판정한다. 게다가, 이번에는 스패머 여부를 판정하기 위해 업계 전문가까지 초빙했다. 레디프 쇼핑(Rediff Shopping)과 이베이(eBay)의 직원 8명을 데려다가 8주 동안 스팸 그룹 후보들을 보여주고 스팸이다/아니다/모르겠다(borderline)로 평가받았더니 그들 간의 일치도가 꽤 높게 나왔다고 한다. 스팸을 찾기 위한 요소도, 스팸 판정 기법도 모두 발전하고 있다.
내용만 보고도 리뷰가 가짜인지 알 수 있을까?
지금까지 소개한 연구는 스팸성을 판단하기 위해 리뷰 내용도 분석하기는 하지만, 리뷰와 관련된 외부요소에 의지하는 바가 컸다. 하지만 2011년 ACL(Association for Computational Linguistics)에 코넬대 연구진이 발표한 논문 상상력 발휘 여부를 이용해서 기만적인 의견 스팸 찾기(Finding Deceptive Opinion Spam by Any Stretch of the Imagination)를 보면, 이들은 보다 “정공법”을 택했다. 내용만 보고 그게 진짜인지 허위인지를 판단하겠다는 것이다.
이들은 호텔 이용 후기를 대상으로 잡았다. 가짜 리뷰를 구하기 위해 아마존 메커니컬 터크(Amazon Mechanical Turk; AMT)에 의뢰해서 호텔에 실제로 투숙한 고객인 양 위장해서 리뷰를 쓰도록 했다.(주5) 그럼 진짜 리뷰는 어떻게 구했을까? 트립어드바이저(TripAdvisor)라는 호텔 리뷰 사이트에 올라온 리뷰 중에서 5점 만점이면서, 적당히 길고, 무엇보다도 사용자가 처음으로 쓰지 않은 리뷰를 진실한 리뷰로 뽑았다.
이렇게 데이터를 구해놓고, 가짜를 식별하기 위한 여러 기계학습(Machine Learning) 알고리즘을 실험했다. 저자들에 따르면, 두 그룹은 품사(Part Of Speech; POS)의 분포에서부터 차이가 난다. 진짜 리뷰에는 명사/형용사/전치사/한정사(the, my)/등위접속사(and, but)가 상대적으로 많고, 가짜 리뷰에는 동사/부사/대명사/전치한정사가 많았다고 한다. 특히, 최상급 표현이 가짜 리뷰에 더 많은데, 홍보가 목적인 만큼 과장된 표현이 많을 테고 그에 따른 자연스러운 결과로 보인다. 또한, 주요하게 쓰인 단어에서도 차이가 드러났다. 진짜 리뷰에는 감각을 전달하는(sensorial) 단어가 빈번하고, 특히 장소와 관련되어 구체적인 표현이 많았다. 논문에서는 small, bathroom, on, location 등을 예로 들어놓았다.
재미난 건 이런 연구가 갑자기 툭 튀어나온 게 아니라 나름의 역사와 전통을 갖고 있다는 점이다. 맥락은 약간 다르지만, 사실 vs. 상상(Informative vs. Imaginary) 문서 비교나 장르 식별 등의 선행 연구가 있었고, 그 결과도 이 연구에서 찾아낸 패턴과 대체로 일치한다.
고무적인 결과이기는 하나, 그만큼 의구심도 남는다. 정말로 단어, 품사의 분포만 보고 자동으로 허위 리뷰를 찾을 수 있을까? 일회성 과제로 받아 특별한 목적 없이 상상력으로 쥐어짠 리뷰와 목적이 분명한 실제 세상의 스팸 리뷰는 차이가 나지 않을까? 이 의문을 부분적으로 해소해주는 연구가 ICWSM(International AAAI Conference on Weblog and Social Media) 2013에 발표되었다.
실제 세상의 스팸 리뷰
논문 등으로 발표하지 않아서 그렇지, 사실 허위 리뷰 탐지의 고수는 사용자 평가에 기반을 두고 실제로 서비스를 제공하는 업체이다. 이들 서비스의 생명인 신뢰를 갉아먹는 어뷰징을 방치했다가는 사용자가 모두 떠나버리고 말 것이기 때문이다. 이런 현실적인 필요성과 내부에서만 관찰할 수 있는 데이터가 모여 있는 기업은 관련 연구를 하기에 좋은 현장이다. 하지만 필터링 노하우나 기준을 외부에 잘 공개하지 않는데, 어뷰징 필터에 대한 어뷰징 우려가 큰 원인이다. 그런데 흥미롭게도 미국의 옐프(Yelp)라는 사이트는 내부적으로 허위라고 판단한 리뷰를 표시해놓고 있다. 상당한 자신감 없이는 하기 힘든 일이다.
발표된 논문의 제목은 옐프의 가짜 리뷰 필터는 어떻게 동작할까?(What Yelp Fake Review Filter Might Be Doing?)이다. 외부 연구자들이 이 사이트의 필터가 어떻게 동작하고 있을지를 “추측”해보았다는 얘기다.
저자들은 이전 연구에서 제안된 방법, 즉 단어/품사 기반 탐지기와 옐프의 로직을 비교해보았다. 옐프에서 필터링 된 리뷰는 진짜 가짜라고 치고, 단어 기반 탐지기로 얼마나 정확하게 분류할 수 있는지를 실험한 것이다. 결과는 참패. 단순 정확도 기준으로 60%대에 머무르고 말았다.
재미있는 건 여기부터인데, 왜 잘 안 되는지를 알기 위해 정상 리뷰와 스팸(이라고 옐프가 판단한) 리뷰의 차이를 분석했다. 두 그룹에서 단어의 빈도 분포를 뽑아서 어떤 차이가 있는지를 살폈다. 이를 통해 알아낸 것은, 기존 연구에서 아마존 메커니컬 터크를 이용해서 작성한 실험용 허위 리뷰는 실제 세상의 것만큼 정교하지 못하다는 점이다. 도메인 지식 없는 비전문가(?)가 상상력에 의존해서 쓰다 보니 단어의 등장 패턴이나 쓰임새가 아무래도 실제 리뷰와 차이가 나고, 또 정말 잘 써야 한다는 동기부여도 약했을 테니까 말이다. 반면, 옐프가 걸러낸 리뷰의 특징은 전체적인 단어 사용은 일반 리뷰와 비슷하지만 특정한 어휘군들의 빈도는 특히 더 높더라 하는 게 저자들의 발견이다.(주6)
내용 기반으로 필터링할 수도 있지만, 리뷰 작성자의 행태 및 작성자 그룹을 분석해서 스팸 리뷰를 찾는 방법도 앞서 소개한 바 있다. 저자들은 옐프 데이터에서 각각의 사용자가 1) 얼마나 몰아서 한꺼번에 리뷰를 쓰는지 2) 5점 만점에 4점 이상을 준 비율이 얼마나 되는지 3) 쓴 리뷰의 길이가 얼마인지 4) 다른 사람의 평가와 얼마나 유사한지 다른지 5) 작성한 리뷰들이 얼마나 비슷한지 등을 이용한 판별기도 만들었는데, 실험해보니 정확도에서 내용 기반 분류기를 압도했다고 한다. 상대적으로 구현하기도 쉬운데 성능까지 좋다니 교묘한 어뷰징 때문에 사이트 운영에 골머리를 썩이는 사람에게는 반가운 소식이다.
믿음이 가는 인터넷 세상을 위해
이 연구가 주는 정보는 무척 실용적이지만 동시에 한계도 뚜렷하다. 저자들의 발견에서 어떤 통찰을 얻을 수 있지만, 그게 일반화 가능한 사실인지 아니면 그 사이트는 그렇더라 정도에서 그쳐야 할지 알 수 없다. 특정 기업의 서비스 결과를 정답으로 두고 실험했기 때문이다. 읽는 사람이 현명하게 걸러서 받아들이는 수밖에 없다.
일련의 연구를 보면서 드는 생각을 적어보면,
첫째, 스팸 리뷰를 찾기 위해서 문서에서 사용자, 다시 집단으로 범위를 넓혀서 분석하는 흐름이 흥미롭고, 평가 데이터를 고도화해가는 과정도 재미있다. 한쪽에서 제안된 방법을 다른 연구진이 다른 데이터로 검증해보기도 하고 말이다. 어느 날 하늘에서 뚝 떨어지는 연구는 없다. 자세히 살펴보면, “소비자 리뷰에서 가짜 리뷰어 그룹 찾기(Spotting Fake Reviewer Groups in Consumer Reviews)”가 나오기 1년 전에 같은 컨퍼런스에 예비 연구 격인 포스터가 “집단 리뷰 탐지하기(Detecting Group Review Spam)”라는 제목으로 제출되었다. “의견 스팸과 분석(Opinion Spam and Analysis)”도 역시 1년 전 다른 컨퍼런스의 포스터 “리뷰 스팸 탐지(Review Spam Detection)”로 예고되었다. 기술은 이런 뚝심과 노력으로 축적되다가 어느 순간 갑자기 완성된 형태로 세상에 드러나는 게 아닐까?
둘째, 문서의 작성자/그룹 분석 방법은 꼭 리뷰 스패머 찾기가 아니더라도 여기저기 써먹을 데가 많아 보인다. 무엇이 되었건 특정한 아이템을 매개로 발견되는 사용자 그룹이 있다면 적용할 수 있다. 가령, 인터넷 커뮤니티의 글에 댓글을 쓰는 행위를 기준으로 그룹을 만들 수도 있고, 트위터에서 리트윗하는 행위를 기준으로 그룹을 만들 수도 있을 것이다. 그 결과는 비슷한 사용자/아이템 추천에 응용할 수도 있고, 스팸/어뷰징 탐지에 활용할 수도 있다. 모쪼록 이런 기술이 더 깨끗하고 믿음이 가는 인터넷 세상을 만드는 데 도움이 되면 좋겠다.
주석
- 위즈덤(wisdom)으로 발음한다. (원문으로)
- 광고가 목적이라면, 다른 평가가 올라오기 전에 첫 리뷰로 올리는 게 효과적이기 때문이다. (원문으로)
- 연구를 발표하고, 발전시키면서 후속 논문을 이어가는 건 무척 흔하고 당연한 일이다. (원문으로)
- 이 값이 크다는 것은, 그룹 구성원들의 취향이 비슷해서일 수도 있지만 리뷰 조작 사주를 받았기 때문일 수도 있다. (원문으로)
- 실제로 이런 홍보 리뷰를 써주는 업체에 의뢰했다면 더 흥미로웠겠지만 쉽지 않을 것이다. (원문으로)
- 이쯤에서 다시 강조하지만, 이건 허위 리뷰의 특징일 수도 있고, 옐프가 유독 그런 리뷰를 스팸으로 걸러낸 것일 수도 있다. (원문으로)
내용중 오타가 하나 있네요. (‘boardline’.)
borderline 으로 수정했습니다. 알려주셔서 감사드립니다.