본문 바로가기

Tech Story

소셜검색 My Drawing of Social Search... (3)

 제가 처음 '소셜검색 My Drawing of Social Search'라는 글을 적은지도 벌써 3개월이 지났습니다. 1편에서는 현재 여러 분야에서 말하는 소셜검색의 정의를 다루었고, 2편에서는 블로고스피어와 다음뷰를 중심으로 소셜그래프의 관계에 대한 제 생각을 정리했습니다. 2편에서 첨부한 그림을 통해서 모든 것을 파악할 수가 있지만, 제가 생각하기에 소셜 블로고스피어는 블로깅을 하는 글작성자, 작성된 글을 읽고 평가를 하는 글추천자, 그리고 양질의 글들을 소비하는 글소비자로 구성됩니다. 작성자, 추천자, 소비자를 별도의 객체로 볼 이유도 없고, 또 굳이 이들 사이의 (일반) 소셜릴레이션이 존재한다고 말할 이유도 없습니다. 지난 2편의 그림을 바탕으로, 제가 생각하는 소셜검색에서의 소셜랭킹모델에 대해서 이번 포스팅에서 다루도록 하겠습니다. 제가 말하는 것이 완벽한 소셜검색/랭킹모델은 아니고, 원시적인 형태임을 밝힙니다. 지난 3개월동안 부지런히 노력을 해서, 해당 모델을 구현하고 시연해봤더라면 지금쯤 새로운 서비스를 오픈했거나 재미있는 논문을 출판했을텐데, 저의 게으름이 아직 아이디어를 아이디어 수준에 머물도록 내버려두었습니다.

 검색에서 (검색)랭킹이 사용자가 입력한 키워드/검색어와 해당 키워드를 포함한 문서와의 연관성으로 측정되듯이, 기본적으로 소셜검색랭킹도 검색어와 문서와의 연관성으로 표현될 수 있습니다. 다만, 아무게의 글을 찾는 것이 아니라, 내가 알고 있는 친구나 전문가의 글을 찾는다는 점에서 일반 검색랭킹과는 차이점을 줍니다. 그리고, 일반 소셜그래프에서의 소셜검색이 아니라, 다음뷰/메타블로그를 중심으로한 블로고스피어에서의 소셜검색랭킹을 다룬다는 점에서도 (일반)소셜검색랭킹과도 차별점을 둡니다. 제가 구상하는 구체적인 소셜검색랭킹모델을 설명하기에 앞서, 간단한 노테이션 notation을 먼저 정리하겠습니다.

 객체 Object
  • q: 사용자가 입력한 검색어 query (또는 keyword)
  • d: 주어진 검색어 q를 포함한 문서 document (본 포스팅에는 나오지 않을 것이지만, D는 이런 d들의 합을 뜻하겠죠.)
  • w: 2편의 그림에서 글작성자 writer
  • c: 2편의 그림에서 글소비자 consumer
  • r: 2편의 그림에서 글추천자 recommender
 함수 Method/Function
  • Rnk(d, q): 랭킹함수 - 사용자가 입력한 검색어 q와 검색엔진이 찾은 문서 d와의 최종 랭킹점수
  • M(d, q): 매칭점수 - 사용자가 입력한 검색어 q와 문서 d 사이의 매칭정도, 보통 relevance라고 말함
  • R(d): 검색된 문서 d의 최신점수, recency
  • E(w, q): 사용자가 입력한 검색어 q에 대한 글작성자 w의 전문성, expertise
  • I(w, c): 사용자/글소비자 s와 글작성자 w와의 친밀도, intimacy
  • P(d | r): 글추천자 r의 authority에 바탕을 둔 글의 인기도, popularity (e.g., 추천회수)
  • A(w): 글작성자 w의 인기도/권위도, authority
 이상의 노테이션만을도 제가 구상했던 원시적인 소셜검색랭킹모델이 완성이 됩니다. 최종적으로 소셜랭킹은
입니다. 소셜랭킹모델에 사용된 함수 f는 경우에 따라서 곱하기 (*)가 될 수도 있고, 더하기 (+)가 될 수도 있고, 아니면 더 복합한 수식/로직으로 중무장할 수도 있습니다.

 개별 함수를 다시 설명하면, 매칭점수 M(d, q)는 Information Retrieval에서 사용하던 단순 블리언 boolean 매칭을 사용하거나, 조금더 복잡한 Okapi BM25 (BM의 경우, 파라메터설정에 따라서 BM27, .. 등의 다양한 이름을 가지지만, BM25가 가장 일반적인 모델임)을 그대로 사용하면 됩니다. 최신점수 R(d)의 경우, 특수한 경우가 아니면, 가장 최근에 업데이트된 최신문서가 높은 랭킹점수를 갖도록 하는 것입니다. 함수정의에 따라서 연속함수나 계단식함수를 정의할 수 있고, 최신성의 기준도 많은 실험을 통해서 얻어야 합니다. 매칭점수와 최신점수는 일반 검색랭킹의 그것들과 동일합니다. 현재 구상중인 소셜랭킹의 차별점은 이후에 나오는 전문성, 친밀도, 인기도, 및 권위도에 있습니다. 간단히 설명하자면, 글쓴이의 전문성은 특정 검색어 q에 반응하는 문서들 D 중에서, 검색어 q에 전문성을 가진 글쓴이에 의해서 작성된 문서 d가 가장 높은 랭킹을 받도록 하는 것입니다. 글쓴이의 전문성은 이제까지 블로깅한 모든 내용을 바탕으로 평소에 자주 사용하던 단어/주제 등을 미리 학습시켜둬야 합니다. 글쓴이와 검색자의 친밀도가 소셜검색의 가장 차별점입니다. 단순히 친구 (또는 검색자가 지정한 전문가)가 작성한 글중에서 q에 반응하는 문서 d만을 보여주는 것입니다. 단순히 검색범위를 제한한다는 의미로 보시면 됩니다. 그렇지만, 소셜그래프상에서 친구의 숫자가 적은 경우, '친구의 친구'와 같이 확장된 소셜그래프에서 문서를 검색해주게 됩니다. 개념적으로 검색범위를 축소시키기 때문에 일반 검색보다 더 쉽게 느껴질 수 있지만, 역으로 검색범위가 좁아지기 때문에 기술적으로 더 많은 어려움을 가지게 됩니다. 친밀도에 대한 부분은 대부분의 소셜검색/서비스와 관련된 문서들이 다루고 있는 부분이니 자세한 내용은 생략하겠습니다. 다섯번째로, 글의 인기도의 경우는 보통 다음뷰나 디그에서 보여주는 추천회수로 보시면 됩니다. 그런데, 모든 추천이 동일한 가중치를 받는 것이 아닙니다. 지금 다음뷰에서 오픈에디터라는 제도를 활용하듯이, 평소에 양질의 추천을 하는 이들의 추천에 더 높은 점수를 부여하고, 또는 스팸/어뷰징 추천자의 추천은 점수를 제하거나 감산하는 것도 방법에 포함될 수 있습니다. 그리고, 소셜의 개념을 더 확장해서 '친구/지인'이 추천한 글에 대해서는 더 높은 인기도를 받도록 조정을 할 수도 있습니다. 마지막으로, 글작성자의 권위도의 경우는 전문성과 개념상 중복되는 부분도 있지만, 전문성의 경우 검색어에 종속 (query-dependent)된 개념이지만, 권위도의 경우 검색어 비종속 개념입니다. 예를 들어, 트위터에서 이찬진님, 이외수님, 박경철님 등과 같이 이미 특정 분야에 권위를 가진 분들이 작성한 글을, 일반인들이 작성한 것보다 먼저 보여준다는 개념입니다. 이런 글쓴이의 권위는 쉽게는 소셜그래프의 인링크 개수로 점수화할 수도 있고, 아니면 다음뷰/디그에서 글을 발행했을 때 얻을 수 있는 예상추천수 등으로 권위도를 측정할 수가 있습니다.

 제가 원시적인 소셜검색랭킹모델을 장황하게 설명했지만, 이런 수식적 모델보다 더 중요한 것이 있습니다. 바로 Query Intent 또는 User Intent라고 불리는 사용자/검색어 의도입니다. 현재 소셜검색이 주목을 받고 있는 것이, 단순히 친구의 글을 보여주겠다는 것이 아니라 사용자의 의도에 더 부합한 글을 보여주겠다는 것입니다. 그렇기에, 아무리 좋은 소셜검색모델을 가진다고 하더라도 검색어/사용자의도를 제대로 파악을 하지 못한다면 제대로된 소셜검색결과를 제공해줄 수가 없습니다. 그리고, 검색어의 의도에 맞도록 위에서 제시된 여러 점수체계들이 유기적이고 동적으로 설정되어야 합니다. ... (오늘은 여기까지)

반응형