운동하는 공대생
[NLP] 워드 임베딩(Word Embedding 1/2) - TF-IDF(Term Frequency - Inverse Document Frequency) 본문
[NLP] 워드 임베딩(Word Embedding 1/2) - TF-IDF(Term Frequency - Inverse Document Frequency)
운동하는 공대생 2022. 12. 1. 09:27What 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
- binary(이진 표현) : tf(t,d) =t 가 d에 한 번이라도 나타나면 1, 아니면 0
- logarithmically scaled : tf(t,d)=log(f(t,d)+1)
- 증가 빈도: 최빈 단어(w)를 분모로 빈도를 구하고자 하는 단어(t)의 TF를 나눈 값으로, 일반적으로는 문서의 길이가 상대적으로 길 경우, 단어 빈도 값을 조절하기 위해 사용한다.

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

- |D|: 문서 집합 D의 크기, 또는 전체 문서의 수
- 분모 : 단어 t가 포함된 문서의 수.(즉, tf(t, d)!=0).
단어가 전체 문단 안에 존재하지 않을 경우 이는 분모가 0이 되는 결과를 가져온다. 이를 방지하기 위해 분모 값에서 1을 더하여 쓰는 것이 일반적이다.

이렇게 빈도수를 구하고자 하는 단어가 한 문장에서 빈도수가 많아지면 전체적으로 값이 높아지지만 그 단어가 다른 문장에서도 빈번하게 나오는 단어니면 값이 줄어드는 형식이다. IDF의 로그 함수 안의 값은 항상 1 이상이므로 IDF값과 TF-IDF값은 항상 0 이상이 된다. 특정 단어를 포함하는 문서들이 많을수록 로그 함수 안의 값이 1에 가까워지게 되고, 이 경우 IDF값과 TF-IDF 값은 0에 가까워지게 된다.
'Deep Learning > NLP' 카테고리의 다른 글
[Deep Learning] GNN - Graph Neural Networks(미완) (0) | 2023.07.01 |
---|---|
[NLP] 워드 임베딩(Word Embedding 2/2)- 예측 기반 벡터(Word Embedding, Word2Vec) (0) | 2022.12.28 |
[NLP] 워드 임베딩(Word Embedding 1/2)-BOW,Count Vector (0) | 2022.12.28 |
[NLP] 레벤슈타인 거리(Levenshtein Distance) (0) | 2022.11.17 |
[NLP] 텍스트 분석이란? (0) | 2022.11.16 |