TF-IDF(term frequency - inverse document frequency) 기본 맛보기

1. introduction

 

특정한 term의 등장빈도를 보면서 그 term이 제공하는 정보량까지 고려하겠다는 방법

 

단어가 제공하는 정보량은 사건이 희귀하게 발생하면 그 사건에 담긴 정보량은 많다는 것을 상기해보면

 

문서에서 덜 등장할수록 해당 단어가 주는 정보량이 많다는 것

 

 

2. term frequency

 

특정 단어가 해당 문서에 몇번 나오는지 빈도수를 계산하는 것

 

bag of words는 해당 문서에 몇번 나오든 관계없이 나오기만 하면 1, 없으면 0을 부여함

 

반면 term frequency관점에서는 여러번 등장하면 등장하는 만큼의 빈도수를 부여함

 

보통은 문서 내 총 단어수로 나눈 normalize 빈도수를 사용하여 0과 1사이의 값으로 나타내며 총 합은 1 이하가 되도록 만든다

 

raw count와 normalize한 term frequency 예시

 

3. Inverse document frequency

 

 

N이 document의 총 수이고 DF(t)가 특정한 term t가 등장한 document의 수이면 N/DF(t)에 로그를 취한 값으로 정의

 

예를 들어 N=100인 경우 ‘the’같은 관사는 사실상 모든 문서에 등장한다고 봐도 무방하므로 DF(the)=100으로 IDF(the)=0

 

모든 문서에 등장하는 단어는 0점을 부여

 

단 하나의 문서에만 등장하는 특별한 단어는 N/DF(t)=100이므로 IDF(t)=log100

 

여기서 2진법, 10진법 이야기 한거 보면 밑은 상황에 따라 다른가봐

 

참고로 IDF는 각 문서에 몇번 등장했는지는 무시하고 여러번 등장했더라도 DF(t)에는 1을 더해줌

 

 

4. TF-IDF 계산

 

최종적으로 해당 단어의 TF-IDF score란 TF와 IDF값의 곱으로 정의됨

 

a,the같은 관사는 사실상 모든 문서에 등장한다고 봐도 무방하므로 TF가 매우 높지만 IDF가 매우 낮아 거의 0점에 가까움

 

반면 자주 등장하지 않는 고유명사는 TF가 작더라도 IDF가 매우 높아 전체적으로 커짐

 

 

5. 예시로 이해하는 TF-IDF

 

주어진 예시 데이터

 

예시 데이터를 tokenizing하여 vocab으로 구성하고 각 문서 제목에서 각 단어들의 term frequency를 계산하면

 

term frequency를 계산한 그림

 

각 문서 내 존재하는 단어들의 IDF를 계산해보면

 

IDF를 계산한 그림

위 그림을 보면 ‘주연은’은 매번 등장했으므로 0이고 1번 등장한 BTS 같은 경우는 가장 높음

 

또한 IDF는 문서들에 무관하게 같은 값을 가짐, term에만 종속되는 값

 

위에서 계산한 TF와 IDF를 곱하여 TF-IDF를 계산해보면..

 

TF-IDF를 계산한 그림

 

자주 등장하지 않은 단어일수록 높은 값을 가지고 자주 등장하는 단어는 적은 값을 가짐

 

위에서 계산한 표를 이용해서 sparse embedding이 가능한데 예를 들어 음식 문서를 embedding해보면 [0,1.39,0.29,0,0,0,0,0,0,0,0]

 

이제 질문이 들어오면 질문 자체를 하나의 문서라고 생각하고 tokenizing한다

 

기존 vocab에 없는 token은 제외하고 TF-IDF를 계산함

 

근데 이러면 문서의 TF-IDF도 변해야하는거 아니야??? 이거 좀 주의깊게 찾아봐야겠는데

 

질의와 가장 가까운 문서 찾는 알고리즘

 

이렇게 질의의 TF-IDF 벡터를 구했다면 각 문서들의 TF-IDF 벡터와의 유사도를 계산하여 가장 높은 점수를 가진 문서를 가져오는데

 

유사도의 경우 cosine distance를 계산할 수 있고 inner product를 계산할 수 있고.. 아니 생각해보니까 inner product가 cosine distance인데?

 

TF-IDF로 가장 비슷한 문서를 계산한 예시

 

6. BM25

 

TF-IDF를 바탕으로 문서의 길이까지 고려한 score algorithm

 

TF에는 한계치를 두어 일정한 범위에서 계산하게 만들고

 

평균적인 문서의 길이보다 적은 문서에 높은 가중치를 부여하여 계산

 

최근까지도 가장 자주쓰이는 알고리즘

 

 

TAGS.

Comments