2011/07/26 - [Literal] - TF:Term Frequency
앞서의 TF에 이어서 IDF를 소개해보겠다.
TF기반의 Scoring 산정은 몇 가지 문제를 포함하고 있다. 일단 질의어에 포함된 모든 term에 대해서 동일한 비중을 둔다는 것이다. 예를 들어, 기상예보를 검색하기 위해서 기상예보를 제공하는 웹 사이트를 검색한다고 가정 하자. 이곳에서 오늘의 기상예보를 찾기 위해 다음과 같은 질의어를 입력한다.
이 질의어에서 가장 중요한 단어가 무엇인지 분별할 수 있겠는가? 주어진 질의에 대해 다음과 같은 문서들이 검색될 수 있을 것이다.
TF의 방식으로 각 문서의 점수를 계산해보면 1번 문서는 1 + 0 + 3 = 4가 될 것이고, 2번 문서는 1 + 1 = 1 = 3이 될 것이다. 따라서 1번 문서가 2번 문서보다 더 상위에 랭크될 것이다. 하지만 두 문서 중 질의 결과로 더 적합한 문서는 2번 문서이다.
이러한 일이 생기는 원인은 검색을 수행한 문서 컬렉션이 특정 주제(여기서는 기상예보)에 대해 모인 문서들이기 때문이다. 즉 이 컬렉션에 속하는 문서는 모두 기상예보에 대한 문서들이며, 직관적으로 '날씨'와 같은 단어가 모든 문서에 포함되어 있으리라고 예측할 수 있을 것이다.
이와 같이 모든 문서에 고루 분포된 term들은 문서의 순위를 매기는데 도움이 되지 않는다. 그보다는 해당 컬렉션 내에서 특정 문서를 특징짓는 term이 검색에는 더 도움이 된다. 예시에서는 '수도권'과 같은 term이 그런 역할을 수행하고 있다. 이러한 term의 특징은 전체 컬렉션에 대해 그 term이 포함된 문서의 수가 적다는 것이다.
특정 term을 가진 문서에 대한 빈도수를 df:document frequency라고 하자. 전체 문서의 수가 N이라고 할때, 특정 term을 가진 문서의 수가 적을 수록 좋으므로, N을 df(t)(t는 특정 term)로 나눈다. 이렇게 되면 df에 대해 반비례한 관계식이 되므로, df의 값이 작을수록 결과 값은 커지게 될 것이다. 이에대해 밑을 10으로 하는 로그 스케일로 변경시킨 값을 idf value라고 하며 다음과 같이 표현한다.
그리고 tf-idf라는 score로 기존의 tf score를 대신한다.
결과적으로 tf-idf score는 term 빈도수가 높을 수록, 그리고 해당 term을 가진 문서가 적을 수록 높은 값을 가지게 된다. 이 tf-idf를 문서내의 모든 term에 대해 작성하여, term에 대한 vector로 표현한다.
이 벡터 값에 대하여, 질의문의 term-vector와 내적을 구하면(간단히 말하면, 문서의 term들 중에 질의어의 term과 같은 것들을 따로 골라 위의 tf-idf 값을 더하는 것을 의미한다.) 질의문에 대한 해당 문서의 score가 구해지게 된다. 이 score를 기준으로 정렬을 하면 ranked-retrieval이 가능해질 것이다.
[footnote][/footnote]수식 출처 "An Introduction to Information Retrieval : Christopher D. Manning : Cambridge Press"
앞서의 TF에 이어서 IDF를 소개해보겠다.
TF기반의 Scoring 산정은 몇 가지 문제를 포함하고 있다. 일단 질의어에 포함된 모든 term에 대해서 동일한 비중을 둔다는 것이다. 예를 들어, 기상예보를 검색하기 위해서 기상예보를 제공하는 웹 사이트를 검색한다고 가정 하자. 이곳에서 오늘의 기상예보를 찾기 위해 다음과 같은 질의어를 입력한다.
"오늘 수도권 날씨"
이 질의어에서 가장 중요한 단어가 무엇인지 분별할 수 있겠는가? 주어진 질의에 대해 다음과 같은 문서들이 검색될 수 있을 것이다.
1. "... 오늘 호남지방의 날씨는 어제 날씨와 마찬가지로 폭우가 이어질 것으로 전망됩니다. 이어서 내일의 날씨는 ..."
2. "... 오늘의 날씨입니다. 장마가 계속 이어지고 있는 가운데, 수도권의 강우량은 어제와 마찬가지로 150mm이상의 많은 강우량이 예상됩니다..."
2. "... 오늘의 날씨입니다. 장마가 계속 이어지고 있는 가운데, 수도권의 강우량은 어제와 마찬가지로 150mm이상의 많은 강우량이 예상됩니다..."
TF의 방식으로 각 문서의 점수를 계산해보면 1번 문서는 1 + 0 + 3 = 4가 될 것이고, 2번 문서는 1 + 1 = 1 = 3이 될 것이다. 따라서 1번 문서가 2번 문서보다 더 상위에 랭크될 것이다. 하지만 두 문서 중 질의 결과로 더 적합한 문서는 2번 문서이다.
이러한 일이 생기는 원인은 검색을 수행한 문서 컬렉션이 특정 주제(여기서는 기상예보)에 대해 모인 문서들이기 때문이다. 즉 이 컬렉션에 속하는 문서는 모두 기상예보에 대한 문서들이며, 직관적으로 '날씨'와 같은 단어가 모든 문서에 포함되어 있으리라고 예측할 수 있을 것이다.
이와 같이 모든 문서에 고루 분포된 term들은 문서의 순위를 매기는데 도움이 되지 않는다. 그보다는 해당 컬렉션 내에서 특정 문서를 특징짓는 term이 검색에는 더 도움이 된다. 예시에서는 '수도권'과 같은 term이 그런 역할을 수행하고 있다. 이러한 term의 특징은 전체 컬렉션에 대해 그 term이 포함된 문서의 수가 적다는 것이다.
특정 term을 가진 문서에 대한 빈도수를 df:document frequency라고 하자. 전체 문서의 수가 N이라고 할때, 특정 term을 가진 문서의 수가 적을 수록 좋으므로, N을 df(t)(t는 특정 term)로 나눈다. 이렇게 되면 df에 대해 반비례한 관계식이 되므로, df의 값이 작을수록 결과 값은 커지게 될 것이다. 이에대해 밑을 10으로 하는 로그 스케일로 변경시킨 값을 idf value라고 하며 다음과 같이 표현한다.
그리고 tf-idf라는 score로 기존의 tf score를 대신한다.
결과적으로 tf-idf score는 term 빈도수가 높을 수록, 그리고 해당 term을 가진 문서가 적을 수록 높은 값을 가지게 된다. 이 tf-idf를 문서내의 모든 term에 대해 작성하여, term에 대한 vector로 표현한다.
<score(t_1,d), score(t_2,d), score(t_3, d), ... >
이 벡터 값에 대하여, 질의문의 term-vector와 내적을 구하면(간단히 말하면, 문서의 term들 중에 질의어의 term과 같은 것들을 따로 골라 위의 tf-idf 값을 더하는 것을 의미한다.) 질의문에 대한 해당 문서의 score가 구해지게 된다. 이 score를 기준으로 정렬을 하면 ranked-retrieval이 가능해질 것이다.
[footnote][/footnote]수식 출처 "An Introduction to Information Retrieval : Christopher D. Manning : Cambridge Press"
'Writings' 카테고리의 다른 글
Cosine Similarity (0) | 2011.07.27 |
---|---|
TF:Term Frequency (0) | 2011.07.26 |