운동하는 공대생

[NLP] 워드 임베딩(Word Embedding 1/2) - TF-IDF(Term Frequency - Inverse Document Frequency) 본문

Deep Learning/NLP

[NLP] 워드 임베딩(Word Embedding 1/2) - TF-IDF(Term Frequency - Inverse Document Frequency)

운동하는 공대생 2022. 12. 1. 09:27
728x90
반응형

What is TF-IDF

 TF-IDF는 NLP 분야에 거 가장 흔하게 사용하는 방식으로 텍스트들이 나열되어있는 데이터에서 단어의 빈도수를 기준으로 하여서 한 단어가 그 문장에서 얼마나 수학적으로 중요한지 가중치를 나타내는 방식이다. 한 문장에서 한 단어의 빈도가 높으면 높을수록 이 TF 값은 커지고 여러 문장에서 한 단어의 빈도수가 높아면 IDF 값이 줄어드는 형식으로 이 두 값 TF, IDF를 곱한 것을 결과로 도출한다. 즉 한 문장에서 자주 사용되는 단어는 중요하다 판단하지만 다른 문장에서도 흔하게 사용하면 중요하지 않다고 단어를 판단하는 알고리즘이다.

 

Mathematical Formula of TF-IDF

 

단어의 빈도를 나타내는 이 알고리즘은 결과값을 여러 가지 방식으로 산출한다. 먼저 총빈도수를  문서 d 내에서 단어 t의 총빈도를 f(t, d)라 할 경우,  가장 단순한 tf 산출 방식은 tf(t, d) = f(t, d)로 표현된다. 그 밖에 TF값을 산출하는 방식에는 다음과 같은 것들이 있다.

 

  • TF 
  1. binary(이진 표현) :  tf(t,d) =t 가 d에 한 번이라도 나타나면 1, 아니면 0
  2. logarithmically scaled : tf(t,d)=log(f(t,d)+1)
  3. 증가 빈도: 최빈 단어(w)를 분모로 빈도를 구하고자 하는 단어(t)의 TF를 나눈 값으로, 일반적으로는 문서의 길이가 상대적으로 길 경우, 단어 빈도 값을 조절하기 위해 사용한다.

  • IDF

역면서 빈도는 한 단어가 문서 집합 전체에서 얼마나 공통적으로 나타나는지를 나타내는 값이다. 전체 문서의 수를 해당 단어를 포함한 문서의 수로 나눈 뒤 로그를 취하여 얻을 수 있다.

  • |D|: 문서 집합 D의 크기, 또는 전체 문서의 수
  • 분모 : 단어 t가 포함된 문서의 수.(즉, tf(t, d)!=0).

단어가 전체 문단 안에 존재하지 않을 경우 이는 분모가 0이 되는 결과를 가져온다. 이를 방지하기 위해 분모 값에서 1을 더하여 쓰는 것이 일반적이다.

이렇게 빈도수를 구하고자 하는 단어가 한 문장에서 빈도수가 많아지면 전체적으로 값이 높아지지만 그 단어가 다른 문장에서도 빈번하게 나오는 단어니면 값이 줄어드는 형식이다. IDF의 로그 함수 안의 값은 항상 1 이상이므로 IDF값과 TF-IDF값은 항상 0 이상이 된다. 특정 단어를 포함하는 문서들이 많을수록 로그 함수 안의 값이 1에 가까워지게 되고, 이 경우 IDF값과 TF-IDF 값은 0에 가까워지게 된다.

728x90
반응형
Comments