'이슈선정 알고리즘'에 해당되는 글 1건

  1. 2011.05.05 다음뷰 이슈 선정방법 Issues on Daum View
Share           Pin It
 작년 이맘 때, 검색품질팀에서 다시 데이터마이닝팀으로 팀을 옮기고 방황하고 있던 시절, 조잡하게 만들었던/분석했던 업무가 다음뷰의 이슈 및 이슈제목을 자동으로 선정하는 것이었다. 당시에 심리적으로 많이 쫓기던 상황에서 진행했던 업무라서 최종 품질에 아주 만족은 못하지만, 그래도 나름 의미있는 결과를 만들어냈다고 자부하고 있다. 이후에 시스템/프로그램을 더 업그레이드하고 싶은 욕구는 많았지만, 물밀듯이 밀려오는 다른 업무들 때문에 한번의 스팟성으로 작업을 해준 이후로 업그레이드를 못하고 있다. 그런데, 최근 블로그를 돌아다니다가 다음뷰의 이슈에 대한 의문을 제기하는 글 (어떤 글이었는지 잘 기억에 나지 않지만, 운영자 마음대로 이슈를 선정해서 뷰탑에 올린다는 식의 글이었던 것같다.)을 보고, 조금 러프하게라도 이슈선정방법에 대한 공유는 있어야할 것같아서 이 글을 적는다. 너무 자세한 설명은 나름 기업정보 누출에 해당될 뿐만 아니라, 의도치않은 어뷰징을 유도하는 등의 부작용이 우려되어 간단하게만 적을 예정이다. 

문화/연예 채널

 블로거들은 다음뷰에 대해서 많이 알고 있기 때문에 자세한 설명은 생략한다. 다음뷰에서 가장 특징적인 것은 베스트 글을 (거의) 자동으로 선정하는 오픈에디팅알고리즘 또는 오픈에디터다. ('편집/에디팅'이라고 표현되었지만, 실제는 단순히 노출순위를 높여주고, 서비스의 오른쪽 날개에 글을 피쳐링해주는 단순한 기능. 그렇지만, 여러 잡음이 끊이지 않는 기능이기도 함.) 오픈에디팅만큼은 주목을 못 받고 있지만, 다음뷰의 이슈를 선정하고 제목을 정하는 것도 나름 자동화되어있다. 다음뷰 이슈는 크게 두곳에 노출되고 있는데, 다음뷰/홈에 처음 접속했을 때 상단에 6개의 주제묶음이 한 곳이고, 개별 (대) 채널 (라이프, 문화/연예, 스포츠 등)에 들어갔을 때 상단에 노출되는 6개의 글묶음이 다음뷰 이슈다. 서비스/페이지의 레이아웃 상으로는 베스트글보다 더 큰 주목도를 받을텐데, '오픈에디팅만큼은 주목을 못 받고 있다'라고 표현한 이유는 이상의 이슈를 선정하는 작업이 다음뷰 운영자들에 의해서 이뤄지고 있다고 흔히 생각하고 있기 때문이다. 어차피 운영자가 수작업으로 이슈를 선정해서 관련 글을 보여주고 있으니, 이 이슈 편집에 운영자들의 입김이 지나치게 반영되어있다는 오해를 많이 하고 있다. 그렇지만, 이 이슈를 선정하는 작업은 거의 자동으로 이뤄지고 있다. 간혹, 이슈 제목을 정제하기 위해서 수작업 운영이 들어가기도 하고 (예, '나는가수다 임재범' 또는 '임재범 나는가수다'라는 제목을 '나가수 임재범'으로 변경), 자동으로 생성되기 어려운 이슈들에 대해서 과거의 운영을 바탕으로 글들을 묶어주는 작업 (예, '길고양이' '맛집' '여행'과 같이 특정 시점의 이슈는 아니지만 평소에 꾸준히 유입되는 글이거나, '어린이날'과 같이 '어린이날 행사' '어린이날 선물' '어린이날 여행' 등과 같이 같은 이슈에 대해서 여러 이슈묶음이 생성된 경우 대표로 '어린이날'로 이슈묶음을 재묶음시켜주는 경우 등)에도 수작업 운영이 들어가기도 한다. 그렇지만, 기본적으로 다음뷰탑과 채널탑에 노출되는 이슈들은 자동으로 선정되어서 피쳐링되고 있다. 물론, 다음뷰탑/홈의 경우 사용자의 유입이 채널탑보다 많기 때문에, 운영자들이 더 세심하게 관리/운영/모니터링을 하고 있지만, 이것들도 대부분 자동으로 뽑힌 추천 이슈들 중에서 선정하고 제목을 바꾸는 정도의 작업이 전부다.

 다시 본론으로 들어가서, 그러면 어떻게 다음뷰 이슈를 자동으로 선정하는가에 대해서 아주 간단한 설명을 더하겠다.
  1. 키워드 추출.
    다음 전사에서 그리고 다음뷰 팀 내에서 여러 서비스에서 중요하게 다뤄지는 키워드들을 관리하고 있다. 이를 '핵심키워드' 또는 '키워드 사전'이라고 통상 부르고 있다. 이런 키워드 사전을 바탕으로 해서 다음뷰에 유입되는 모든 글들에서 키워드를 추출하는 작업을 진행한다. 문서의 길이가 길고 키워드 사전이 크다면 추출되는 키워드의 수도 무시히 많아지기 때문에, 텍스트마이닝에서 사용하는 TF/IDF 등의 알고리즘이나 키워드의 노출위치 (제목 vs 본문)나 검색인기도 등의 휴리스틱을 사용해서 문서별로 상위/핵심 키워드들을 미리 선별/매핑해둔다.
  2. 이슈 키워드 선정.
    이슈 키워드 선정은 간단하다. 특정 키워드가 최근 몇시간/하루동안 평소보다 월등히 많이 유입되면 해당 키워드가 지금 이슈/회자중이라고 가정한다. 단순히 다음뷰에 유입되는 키워드의 수/비율의 증가 뿐만 아니라, 다음검색에서의 인기도/쿼리빈도, 글 제목에서의 사용빈도, 유명/주요 블로그에 언급된 정도 등의 여러 요소들을 고려해서, 평소에 비해서 급등해서 유입/추출되는 키워드들을 선정해서 이슈 시드 Issue Seed로 선정한다. 물론, 급등도나 인기도 등에 이슈 키워드의 랭킹도 함께 정해진다. 그리고 당연히 특정인이 편향된 주제의 글을 많이 적는 것보다 많은 사람들이 해당 이슈/키워드를 많이 사용하는 경우에 이슈키워드가 된다. 키워드별로 사용된 채널/카테고리도 이슈선정에 영향을 미친다.
  3. 이슈제목 선정.
    이상의 이슈키워드는 (복합단어가 아닌 이상) 1단어로 이뤄졌기 때문에, 사용자들이 해당 키워드만으로 이슈를 가늠할 수가 없다. 예를들어, (TV시청자가 아닌 이상은) '임재범'만으로는 왜 이슈가 되는지 알 수가 없기 때문에 '나가수 임재범'과 같이 이슈의 컨텍스트 Context가 되는 부가 키워드를 선정해서, 이슈키워드와 묶어줌으로써 이슈제목을 선정한다. 컨텍스트 키워드를 선정하는 것이 해당 프로젝트를 하면서 가장 까다로운 작업이었다. 가장 먼저 시도한 방법은 이슈키워드들 간의 co-occurrence를 분석해서 하위 이슈키워드를 컨텍스트 키워드로 간주하는 방법을 시도했다. 그런데, 이슈키워드 세트에 한계가 있기 때문에, 컨텍스트 키워드 (이들 키워드는 보통 일반 단어이기 때문에 이슈키워드 세트에 미포함될 가능성이 매우 높다)가 깔끔하게 뽑히지 않는 문제가 있었다. 그래서, 여기서 또 활용한 것이 다음검색을 사용하는 사용자들의 집단지성을 활용했다. 바로 이슈키워드를 포함하는 모든 검색어들을 가져와서 그 중에서 최근에 가장 인기가 있는 검색어 및 평소보다 급등한 검색어를 뽑아내서 '(인기/급등) 검색어 = 이슈키워드 + 컨텍스트키워드'라를 가정으로 이슈제목을 선정했다. 이상의 방법으로도 컨텍스트 키워드를 뽑을 수 없다면, 그냥 이슈키워드를 단독으로 이슈제목으로 정했다. 이슈+컨텍스트로 제목이 정해진 경우, 키워드 간의 순서를 정하는 작업도 필요한데, 검색어에서의 순서를 유지하거나 글/제목에서의 키워드 순서 등을 고려해서 제목을 선정한다.
  4. 이슈글 묶음.
    선정된 이슈와 이슈제목 목록을 뷰팀에 넘겨주면 채널별로 상위 이슈를 뽑아서, 해당 이슈와 매핑된 (검색된) 글들을 이슈패널에 열거해주고 있다. 글묶음을 보여주는 것은 나의 업무 외적인 부분이라, 자세한 것은 잘 모르겠으나 여기에 오픈에디팅점수와 추천회수를 기준으로 글들을 피쳐링해주고 있다.

이상의 작업이 실시간으로 이뤄지는 것은 아니고, 가능한 짧은 주기로 업데이트해주고 있다. 지금은 1시간 주기로 작업/업데이트하고 있지만, 대한민국에서 인터넷 이슈가 급변하지만 또 이슈의 다양성이 부족해서 실제 서비스 상에서 업데이트 주기 (사용자들이 느끼는 변화)는 더 적을 수 밖에 없다.

 아주 세부적인 내용은 생략했지만, 대략적인 이슈선정 방법/프로세스를 이해하는데는 충분하리라 생각한다. 이슈 및 이슈제목을 선정하는 알고리즘을 직접 만들어서 데이터를 제공해주는 사람의 입장에서, 앞으로 불필요한 이슈 선정의 중립성에 대한 잡음 및 오해가 없었으면 하는 바람에서 이 글을 적었다.

댓글을 달아 주세요