observe_db

[정보 검색] 6. Scoring, Term Weighting, The Vector Space Model 본문

학교 공부/정보검색(4-2)

[정보 검색] 6. Scoring, Term Weighting, The Vector Space Model

쩡윤 2024. 11. 1. 15:12

10/29

 

주요 용어

Term frequency: 용어의 빈도(instance의 수). ranking의 핵심

tf-idf ranking: term frequency와 id frequency(Document frequency의 inverse). 

Vector space model: 벡터 공간에 넣어서 용어간의 유사도를 알아낼 수 있음.

 

Ranked retrieval

지금까지의 Boolean 방식은 용어의 유무만 알려준다.

숙련자는 and/or의 조합으로 원하는 정보를 쉽게 찾지만, 일반인이 이런 테크닉을 하는 것은 어렵다.

rank를 매겨서 상위 10개 정도만 보여준다면 쉬워진다.

<전제> 관련된 것들을 먼저(상위에) 나오게 한다.

relevance ranking을 위해서 query-document 짝에 대해 0~1의 값으로 점수를 매긴다.

 

간단한 예시

  • query term이 없다면 0점
  • query term의 빈도가 높으면 점수도 높아짐
  • 여러 query term 중 다수가 발생할 수록 점수도 높아짐.

 

방식 1: Jaccard coefficiend

두개의 집합(set)의 overlab을 측정

A, B라는 두 집합에 대해 JACCARD(A,B) = |A AND B| / |A OR B|

<전제> A와 B는 공집합이 아님.

JACCARD(A,A) = 1, JACCARD(A,B) = 0 (A AND B가 공집합)

문제점

  • 단어의 빈도를 고려하지 않음
  • 단어의 중요도를 고려하지 않음

 

3. Term frequency

Binary incidence matrix

: 빈도는 없이 유무만 따져서 1/0으로 나타냈다

=> {0, 1}로 이루어진 |V|차원 (V는 term 집)

Count matrix

: 유무가 아니라 빈도를 따짐.

=> N으로 이루어진 |V|차원의 자연수 집합

 

Bag of words model

- 순서 고려 안함.

ex) <John is quicker than Mary>와 <Mary is quicker than John>은 같은 취급.

postional index를 이용하면 구분이 가능하긴 함.

 

Term frequency(tf)

tf_t,d는 term t가 document d에서 몇번 등장했는지 나타낸다.

그러나 이 비율이 10:1이라고 해서 확률을 10:1 비 라고 보기는 어려움.

그래서 log 스케일 이용.

w_t,d = 1+log_10(tf_t,d) (tf!=0) 또는 0 (tf=0)

 

4. tf-idf weighting

Rare term이 frequent term보다 imformative하다.(정보가 많다.)

ex. <알츠하이머 병> 이라고 하면 '병'이란 단어가 더 frequency하겠지만, '알츠하이머'가 더욱 유효한 단어 일 것이다.

=>Frequent term이 rare term보다 덜 informative하다

 

df(document frequency): 용어 t가 발생한 document의 수.(중복X)

idf: df의 inverse. informativeness를 측정하는데에 사용.

idf 수식.

(N은 전체 document의 수)

 

cf(collection frequency)도 사용하긴 한다.(collection 내에 용어 t가 등장하는 token의 수)

 

tf-idf weighting

w_t,d = (1+log(tf_t,d)) * log(N/df_t)

 

5. The vector space model

이전의 incidence matrix는 => {0, 1}로 이루어진 |V|차원 (V는 term 집)

Count matrix에서는 => N(자연수)으로 이루어진 |V|차원의 집합

weight matrix에서는 => R(실수)로 이루어진 |V|차원 집합

 

term은 하나의 축이 된다.

ex. 그러므로 영어의 경우 약 50만 차원을 가진다.

document는 하나의 점 또는 벡터가 된다.(원점이 정해지면 하나의 점은 벡터로 표현 가능하니, 같은 이야기다.)

 

Query as vector

1. 고차원 공간에서 쿼리를 벡터로 나타낸다

2. 쿼리에 대해 그들의 유사도(proximity = similarity)를 랭킹한다.

 

유사도 측정은?

유클리드 거리(Euclidean distance)

-> 서로간의 거리가 벡터 크기에 영향을 받음.

ex) query A에 대해 2A라는 내용을 담은 문서는 |A|라는 거리를 가지게 되는데, 둘의 내용은 동일하다.

 

각도 이용-> cosine similarity

cosine은 0에서 1, pi/2에서 0의 값을 가진다.

벡터의 전체 크기 = 각 성분의 제곱합.이다.(L2 norm)

(피타고라스 정리 응용)

(링크)(위키)

   

단 여기서 사용할 때에는 length-normalize를 해야한다.(크기를 1로 맞추어서, 위와 같은 문제가 발생하지 않게)

 

 

 
Comments