문서에서 사람들이 관심이 있을만한 키워드를 뽑아내는 시스템에 관한 논문.

http://portal.acm.org/citation.cfm?id=1547447


논문 pdf: http://cis.poly.edu/~uirmak/publications/csrank.pdf



Baseline은 Concept Vector를 사용하는 시스템이고, 제안하는 방법은 

1) concept의 문맥에 무관한 interestingness와 
2) concept의 문맥 의존적인 relevance
를 함께 이용하는 시스템.


Baseline 시스템


1) 문서가 주어지면 tf*idf점수를 가지는 텀벡터 생성. 

. 불용어는 제외

. 점수는 0~1 사이로 정규화


2) 문서의 모든 unit에 대해서 unit 벡터 생성 

   (unit은 검색로그에서 통계적으로 생성한 단일 개념의 단어들 ex: New York Times)

. Unit 점수도 0~1 사이로 정규화 (Unit점수란 unit을 구할 때 쓴 MI값?)


3) 텀 벡터를 Unit 벡터에 추가하여 concept 벡터 생성

. 텀이 텀벡터에는 있지만 Unit벡터에는 없을 때: 텀벡터 점수를 내려준 후 추가

. 텀이 텀벡터에는 없고 Unit벡터에만 있다: 텀벡터 점수 그대로 추가

. 텀이 텀벡터에도 Unit벡터에도 있다: 텀벡터점수 + 유닛벡터점수 해서 추가


4) Multi텀 concept에 대해서는 다음 작업을 해줌

. 멀티텀을 구성하는 텀의 텀벡터점수를 몽땅 합쳐서 unit 벡터점수에 더함

  (더 specific한 concept의 점수가 높아짐)


최종 concept 벡터 점수로 랭킹하여 키워드를 추천해줄 수 있겠지.

문제는 문서를 대표하는 일반적인 키워드를 뽑아준다는 것. 되도록 긴 걸 뽑아주긴 하겠지만.

예) "my favorite", "what is happening"

좀 더 specific한 키워드를 뽑아줘야 함.


제안 시스템


A. Concept의 Interestingness (문맥에 무관함)


1) Search log query log 정보

. concept과 정확히 일치하는 질의어의 수 [freq_exact 자질]

. concept을 구로서 포함한 질의어의 수 [freq_phrase_contained 자질]

. concept에 들어있는 텀들의 상호정보(MI) [unit_score 자질]


2) Search engine result page 정보

. concept으로 (phase query로) 검색엔진에서 검색된 문서의 수 [searchengine_phrase 자질]

   --> 검색된 문서가 적어야 더 specific


3) Text based 정보

. concept의 단어 개수 [concept_size 자질]

. concept의 글자 수 [number_of_chars 자질]

. concept에 포함된 sub-concept의 수. sub-concept는 두개 이상의 텀으로 돼 있어야 하고 0.25보다 높은 unit점수를 가져야 함 [subconcepts 자질]


4) Taxonomy based 정보

. 장소, 인명, 조직명 같은 정보 [high_level_type 자질]


5) 기타 정보

. concept에 해당하는 위키피디아 항목의 단어 수 [wiki_word_count 자질]

  --> 길이가 긴 문서일수록 퀄리티 좋은 항목이라는 가정.



B. concept의 문맥내 relevance


concept마다 '관련있는 문맥 키워드' 집합 할당

---> concept에 관련있는 문서에서 (예를 들어) 100개의 키워드를 추출

이 집합이랑 새로운 문서랑 비교해서 유사하면 해당 concept이 관련있는 것임.


관련키워드(와 점수) 마이닝 방법

(문맥 키워드는 stemmed)


1) 검색엔진 스니펫 정보

concept을 검색엔진에 던져 상위 100개의 snippet 추출

100개 snippet을 하나의 문서처럼 다룸 (bag of words)

이 문서의 각 텀 (a word in the bag of words)에 대해 tf*idf 점수 계산 (idf를 알려면 미리 유한개의 concept이 있어야겠네?)

점수 상위 100개 텀을 concept의 관련키워드로 지정.


2) Prisma 질의어 refinement툴

Prisma에 concept을 날리면 20개의 feedback concept을 돌려줌.

이 20개의 concept를 하나의 문서처럼 만들어 스니펫에 했던 것과 동일한 작업을 함

(tf는 다 1아닌가? 다른 feedback에 같은 텀들이 들어가 있으면 1보단 크겠지만...)


3) Related query suggestions

YDN의 이 서비스에 concept을 날리면 최대 300개까지의 추천후보(텀)와 빈도(query volume)를 리턴.

각 텀 가중치 = 모든 concept에 대해 {텀빈도*idf(텀) }    (대략의 개념. 자세한 건 논문에.)

각 텀들이 관련키워드가 되는거지.



SVM이용. 그런데 관련키워드와 가중치는 어떻게 이용했지?

- 입력이 벡터?