인공지능/nlp

[자연어 처리] TF-IDF

100050 2024. 4. 10. 19:17

유사도를 먼저 보고 오면 좋다.

1 TF

TF는 특정 문서(d)에서의 단어(t)의 빈도이다. 한 문서에서 단어의 중요도를 나타낸다고 보면 된다.

 

$$TF(d, t) = d에서의 t의 갯수$$

2 IDF

IDF는 총 문서의 수를 특정 단어(t)가 등장한 문서의 수(n)로 나눈 값이다. 실제로 사용할 때는 총 문서의 수가 많기 때문에 분모에 1을 더하고 식 전체에 log를 사용하여 값의 크기를 줄인다. 분모에 1을 더하는 이유는 분모가 0이 되는 경우를 방지하기 위해서이다. 그리고 보통 log의 밑으로는 e를 사용한다. IDF는 너무 많이 등장하는 단어의 중요도를 낮추기 위해서 사용된다.

 

$$IDF(n, t) = \frac{n}{t가 등장한 문서의 수}$$

$$IDF(n, t) = \log\frac{n}{1 + t가 등장한 문서의 수} $$

3 TF-IDF

 TF-IDF는 TF와 IDF를 곱한 값으로 이 값을 이용해 문서에서 각 값들의 중요도를 계산한다. 이렇게 계산한 값들은 코사인 유사도 같은 유사도를 측정할 수 있는 방법을 통해서 가장 비슷한 문서를 찾는다. 주로 검색엔진에 많이 사용된다.

 

4 예시

 아래의 4개의 문장의 TF-IDF를 계산해보고 코사인 유사도도 구해 보겠다.

  • 바나나 먹고 싶다.
  • 사과 먹고 싶다.
  • 사과는 맛있다.
  • 바나나를 보면 바나나 먹고 싶다.
TF*IDF 사과 먹고 싶다 맛있다 보면 바나나
문서1 0 1*0 1*0 0 0 1*0.287682
문서2 1*0.287682 1*0 1*0 0 0 0
문서3 1*0.287682 0 0 1*0.693147 0 0
문서4 0 1*0 1*0 0 1*0.693147 2*0.287682
  1. 문서1과 문서2의 유사도: 0.0
  2. 문서2와 문서3의 유사도: 0.3833328918157491
  3. 문서1과 문서4의 유사도: 0.6387035948303373

 문서1과 문서4의 유사도가 가장 큼을 알 수 있다. 물론 어떤 유사도를 사용하냐에 따라 어떤 지표를 사용하냐에 따라 무엇이 가장 유사한지는 달라진다.


참고

https://wikidocs.net/31698 04-04 TF-IDF(Term Frequency-Inverse Document Frequency) / 딥 러닝을 이용한 자연어 처리 입문 / 유원준, 안상준

'인공지능 > nlp' 카테고리의 다른 글

[자연어 처리]유사도  (0) 2024.03.30