Information Retrieval 에서 각 문서의 적합성을 평가할 때, 질의로 던진 키워드가 있느냐 없느냐로 우선적으로 판별하게 된다. 가장 단순한 Boolean Retrieval에서는 해당 키워드가 있으면 적합한 문서로 판단하고, 그렇지 않을때는 적합하지 않은 문서로 판단하게 된다.
이 경우는 문서의 갯수가 많지 않고, 사용자가 정확한 키워드를 정확한 용법에 맞추어 사용한다면 유효할 수 있는 방법이다.
하지만 현대의 웹 환경에서 문서의 갯수는 그야말로 기하급수적으로 증가하고 있고, 더불어 사용자가 검색에 할해할 시간은 더더욱 줄어들고 있다. 사용자는 정확한 용법을 배우고, 정확한 키워드를 찾아내어 검색하길 원치 않는다. 때문에 대부분의 검색 질의어는 한개의 단어 혹은 모호한 단어의 결합으로 이루어지기 마련이다.
TF는 이러한 문서들의 적합성을 평가하여 순위를 매길때 사용하는 문서의 수치적 표현중 하나이다. 문서를 여러 단어들의 조합으로 생각해보자. 가령,
와 같은 일기예보 문서가 있다고 하자. 이 문서를 각각의 토큰으로 나누고, 조사와 같은 것들을 제거하면 이 문장은 단어의 집합일 될 것이다.
이러한 각각의 단어들을 term이라고 표기하며, 이 문서는 다시 각 term당 출현 갯수로 다시 나타낼 수 있다.
이 문서에서 가장 빈도수가 높은 term은 무엇일까? 세번정도 나타난 '폭우'라고 할 수 있겠다. 이때 문서상에서 '폭우'라는 term의 tf 값은 3이 된다. 다른 term들은 대부분 1을 tf 값으로 갖는 term이 된다. 더불어 이경우, term간의 순서나 상관관계는 실질적으로 의미가 없어지게 된다. 이러한 모델을 "bag of words" 모델이라고 부르며, 각 단어의 빈도수를 term frequency:tf라고 부른다.
이러한 term frequency는 문서들을 각 term의 가중치로 표현할 때 쓰인다. 이때 사용자가 free text query를 질의어로 사용한다고 가정하자. (free text query는 우리가 흔히 사용하는 '모호한 형태의 키워드 모음' 형식의 질의를 의미한다.) 사용자는 서울 나들이를 가기 위해 오늘 오후 수도권의 기상예보를 검색하고자 한다.
"오늘 오후 수도권 기상예보"
보통 위와 같은 형태로 검색을 수행할 것이다. 이때 질의어로부터 알 수 있는 것은, 질의어가 네 개의 term으로 나뉜다는 것이다. 위와 같은 term에 대응하여 각 문서의 term 집합과 비교를 수행한다. 이때, 검색 결과에 순위를 적용하기 위해서 점수를 계산한다고 하자. 점수는 위에서 표현한 tf 값을 더하는 것으로 계산할 수 있을 것이다. 그러면 위에서 예시로 든 문서의 점수는
"tf(오늘) + tf(오후) + tf(수도권) + tf(기상예보) = 1 + 0 + 2 + 1 = 4"
가 될 것이다. 만일 이 점수가 검색을 수행한 문서 컬렉션에서 가장 높은 점수라면, 이 문서는 검색결과의 최 상위에 랭크되어 나타날 것이다.
이 경우는 문서의 갯수가 많지 않고, 사용자가 정확한 키워드를 정확한 용법에 맞추어 사용한다면 유효할 수 있는 방법이다.
하지만 현대의 웹 환경에서 문서의 갯수는 그야말로 기하급수적으로 증가하고 있고, 더불어 사용자가 검색에 할해할 시간은 더더욱 줄어들고 있다. 사용자는 정확한 용법을 배우고, 정확한 키워드를 찾아내어 검색하길 원치 않는다. 때문에 대부분의 검색 질의어는 한개의 단어 혹은 모호한 단어의 결합으로 이루어지기 마련이다.
TF는 이러한 문서들의 적합성을 평가하여 순위를 매길때 사용하는 문서의 수치적 표현중 하나이다. 문서를 여러 단어들의 조합으로 생각해보자. 가령,
"기상예보입니다. 오늘도 수도권에서는 어김없이 폭우가 쏟아질 예정입니다. 벌써 며칠째 계속된 폭우로 인해 곳곳에서 재산피해, 인명피해가 발생하고 있습니다. 수도권에 거주하시는 시민들께서는 각별히 폭우에 주의하시어 예방할 수 있는 사고에 피해입지 않도록 주의하시기 바랍니다."
와 같은 일기예보 문서가 있다고 하자. 이 문서를 각각의 토큰으로 나누고, 조사와 같은 것들을 제거하면 이 문장은 단어의 집합일 될 것이다.
"기상예보 오늘 수도권 어김없이 폭우 예정 며칠째 계속 폭우 곳곳 재산피해 인명피해 발생 수도권 거주 시민 폭우 주의 예방 사고 피해 주의"
이러한 각각의 단어들을 term이라고 표기하며, 이 문서는 다시 각 term당 출현 갯수로 다시 나타낼 수 있다.
"기상예보:1 오늘:1 수도권:2 어김없이:1 폭우:3 예정:1 ......."
이 문서에서 가장 빈도수가 높은 term은 무엇일까? 세번정도 나타난 '폭우'라고 할 수 있겠다. 이때 문서상에서 '폭우'라는 term의 tf 값은 3이 된다. 다른 term들은 대부분 1을 tf 값으로 갖는 term이 된다. 더불어 이경우, term간의 순서나 상관관계는 실질적으로 의미가 없어지게 된다. 이러한 모델을 "bag of words" 모델이라고 부르며, 각 단어의 빈도수를 term frequency:tf라고 부른다.
이러한 term frequency는 문서들을 각 term의 가중치로 표현할 때 쓰인다. 이때 사용자가 free text query를 질의어로 사용한다고 가정하자. (free text query는 우리가 흔히 사용하는 '모호한 형태의 키워드 모음' 형식의 질의를 의미한다.) 사용자는 서울 나들이를 가기 위해 오늘 오후 수도권의 기상예보를 검색하고자 한다.
"오늘 오후 수도권 기상예보"
보통 위와 같은 형태로 검색을 수행할 것이다. 이때 질의어로부터 알 수 있는 것은, 질의어가 네 개의 term으로 나뉜다는 것이다. 위와 같은 term에 대응하여 각 문서의 term 집합과 비교를 수행한다. 이때, 검색 결과에 순위를 적용하기 위해서 점수를 계산한다고 하자. 점수는 위에서 표현한 tf 값을 더하는 것으로 계산할 수 있을 것이다. 그러면 위에서 예시로 든 문서의 점수는
"tf(오늘) + tf(오후) + tf(수도권) + tf(기상예보) = 1 + 0 + 2 + 1 = 4"
가 될 것이다. 만일 이 점수가 검색을 수행한 문서 컬렉션에서 가장 높은 점수라면, 이 문서는 검색결과의 최 상위에 랭크되어 나타날 것이다.
'Writings' 카테고리의 다른 글
Cosine Similarity (0) | 2011.07.27 |
---|---|
IDF:Inverse Document Frequency (0) | 2011.07.27 |