스팸 댓글과 홍보성 가짜 리뷰 판별
이곳은 댓글이 거의 달지지 않는 블로그지만 스팸마저 외면하는 곳은 아니다. 매일 아침 워드프레스의 Akismet 플러그인이 격리해놓은 스팸들을 지우며 정갈한 마음으로 하루를 시작한다. 그러다 우연히 어느 블로그의 글을 읽고 생각했다. 엘리자(Eliza)에서 썼던 것과 비슷한 방법으로 본문과 관련된 척하는 글, 거기다가 각종 자연어처리 기술을 적용해서 그럴 듯하게 꾸며낸 글을 필터링할 수 있을까? 엘리자는 고전적인 대화형 프로그램으로서, 상대방이 한 말에서 패턴을 찾아 질문을 던지도록 고안되었다. 대충 이런 식이다.
- 환 자 : 저는 항상 기분이 침울해요.
- 컴퓨터 : 당신이 침울하다니 참 안됐군요.
- 환 자 : 제 남자 친구가 저를 이곳에 오게 만들었어요.
- 컴퓨터 : 당신의 남자 친구가 당신을 이곳에 오게 만들었다구요?
- 환 자 : 그래요. 전 도움이 필요해요.
- 컴퓨터 : 어떤 도움이 필요하지요?
- 환 자 : 어머니와 사이 좋게 지내질 못하거든요.
- 컴퓨터 : 당신 가족에 대해 이야기 좀 해 주겠어요?
대부분의 스팸은 그 목적상 링크를 걸 수밖에 없고, 그 링크를 잘 분석하면 내용과 상관없이 불순한 의도의 댓글을 골라낼 수 있다. 하지만 스팸 방지 기술이 발전할수록 스패머들도 머리를 쓴다. 정말 말도 안 되는, 효과가 있기나 할까 싶은 스팸도 많지만 요즘은 교묘하게 광고를 하는 댓글이 더러 눈에 띈다. 이사가 힘들다고 푸념하는 글에다가 “저도 얼마 전에 이사했는데 짐이 많아서 힘들더라고요, 여기저기 업체 알아보다가 ooo에서 했는데 꽤 괜찮았어요” 이런 식으로 댓글을 다는 것이다. 업자가 직접 썼는지 기계적인 알고리즘이 자동으로 썼는지는 모르겠으나 (적어도 아직까지는 전자일 가능성이 크겠지?) 요런 타입은 본문과 관련있는 내용에 링크도 긴가민가 하므로 구분하기가 쉽지 않다. 결국은 작성자 정보(IP 등)에 의존해서 스팸 여부를 판별하는 게 가장 현실적이지 않나 싶다.
사실 이런 건 애교에 불과하다. 정말로 짜증을 유발하고 멀쩡한 글에 대한 신뢰도까지 떨어뜨리는 녀석은 따로 있다. 바로 홍보 목적으로 작성된 가짜 리뷰들이다. 요즘 음식점이나 상품에 대한 리뷰, 영화 평점이나 기타 후기들을 그대로 믿는 사람이 얼마나 될까? 그런 문제는 미국도 마찬가지였는지 가짜 리뷰를 판별하는 방법에 대한 코넬대의 연구가 2011년 ACL(Association for Computational Linguistics)에 실렸다. 믿을 만한 실제 리뷰와 홍보 목적으로 꾸며쓴 가상의 리뷰를 구분하는 알고리즘을 만들겠다는 것인데, 간단히 살펴보자.
저자들은 먼저 호텔 리뷰를 대상으로 잡았다. 그리고 사람을 써서 호텔에 실제로 투숙한 고객인 양 위장해서 리뷰를 쓰도록 했다. 이 작업에는 Amazon Mechanical Turk(AMT)를 이용했다고 한다. (실제로 이런 홍보 리뷰를 써주는 업체에 의뢰했다면 더 흥미로웠을 텐데… 쉽진 않겠지) 비교 대상으로 삼을 진짜 리뷰를 고르는 것도 쉽지는 않다. 연구진은 TripAdvisor라는 호텔 리뷰 사이트에 실제로 올라온 리뷰 중에서 5점 만점이면서, 적당히 길고, 무엇보다도 사용자가 처음으로 쓰지 않은 리뷰를 진실한 리뷰로 뽑았다. 마지막 조건이 중요한데, 가입하고 처음으로 쓴 리뷰가 5점이라면, 그리고 그후로 다른 리뷰가 없다면, 그 사람의 진정성에 의구심이 생기는 게 당연하다. 선거철마다 반복되는 인터넷 커뮤니티 ‘알바’ 논란도 보통 최근에 가입하고 논란의 여지가 있는 글만 반복해서 올리는 사람 중심으로 벌어지지 않던가.
아무튼 이렇게 데이터를 구해놓고, 가짜를 식별하기 위한 여러 기계학습 알고리즘을 연구해서 실험했다. 당연히 분류가 잘 됐으니까 논문으로 출판되었을 테고.. 분류 성능보다는 이들이 보고한 두 문서 그룹 간의 차이에 더 관심이 간다.
먼저 품사(Part Of Speech; POS)의 분포다. 진짜 리뷰에는 명사, 형용사, 전치사, 한정사(the, my), 등위접속사(and, but)가 상대적으로 많고, 가짜 리뷰에는 동사, 부사, 대명사, 전치한정사(all the students의 all, twice the price의 twice처럼 한정사 앞에 쓰이는 말)가 많았다고 한다. 특히 최상급 표현이 가짜 리뷰에 더 많았다고 하는데, 홍보가 목적이라는 점을 생각하면 과장 표현이 많을 수밖에 없고 그에 따른 자연스러운 결과로 보인다.
두 그룹 사이에는 품사 뿐만 아니라 중요한 단어에서도 차이가 나타났다. 진짜 리뷰에는 감각을 전달하는(sensorial) 단어가 빈번하고, 특히 장소와 관련되어 구체적인 표현이 많았다. 논문에서는 small, bathroom, on, location 등을 예로 들고 있다.
재미난 건 이런 연구가 갑자기 툭 튀어나온 게 아니라 이미 유구한 역사와 전통을 갖고 있다는 점이다. 맥락은 약간 다르지만, 사실 vs 상상(Informative vs Imaginary) 문서 비교나 장르 식별 등의 선행 연구가 있었고, 결과도 이 연구에서 찾아낸 패턴과 대체로 일치한다. 리뷰 사이트에 전문적으로 글을 올리는 사람과 AMT에서 일회성 과제로 받아 상상력으로 글을 쓰는 사람 사이의 근본적인 차이(e.g. 글솜씨나 관련지식) 등 지적하고픈 게 있지만 비슷한 연구들에서 일관되게 그런 경향이 나타났다니까 좀더 믿음이 간다.
문제는 이런 게 공개될수록 가짜 리뷰어들 또한 진화한다는 점이다. 그럼 가짜를 걸러내기가 더 어려워질 테고 (알고리즘 뿐만 아니라 사람이 봐도 구분하기 힘든) 가짜가 판을 치면 전반적인 신뢰도가 떨어지고.. 결국 완전무결한 답은 내가 아는 사람의 글이 있는 소셜 네트워크일까?