TF-IDF(단어 빈도-역 문서 빈도, Term Frequency-Inverse Document Frequency)
일반적으로 일부 단어가 더 자주 나타난다는 사실을 조정하여,
문서 콜렉션이나 코퍼스에서 단어의 중요도를 측정한 것.
= 문서 단어 행렬 (DTM) 내의 각 단어들마다 중요한 정도를 가중치로 주는 방법입니다.
이를 위해, 우선 DTM(Document-Term Matrix)을 만든 후, TF-IDF 가중치를 부여합니다.
TF-IDF는 주로 문서의 유사도를 구하는 작업,
검색 시스템에서 검색 결과의 중요도를 정하는 작업,
문서 내에서 특정 단어의 중요도를 구하는 작업 등에 사용될 수 있습니다.
TF-IDF는 TF와 IDF를 곱한 값을 의미합니다.
문서를 d,
단어를 t,
문서의 총 갯수를 n,
이라고 표현할 때
(1) tf ( d, t ) : 특정 문서 d에서의 특정 단어 t의 등장 횟수
TF는 DTM에서 각 단어들이 가진 값들입니다.
DTM이 각 문서에서의 각 단어의 등장 빈도를 나타내는 값입니다.
(2) df ( t ) : 특정 문서 d에서의 특정 단어 t의 등장 횟수
특정 단어 t가 등장한 문서의 수
여기서 특정 단어가 각 문서, 또는 문서들에서 몇 번 등장했는지는 관심 가지지 않으며
오직 특정 단어 t가 등장한 문서의 수에만 관심을 가집니다.
예를 들어,
바나나는 문서2와 문서3에서 등장했습니다. 이 경우, 바나나의 df는 2입니다.
문서3에서 바나나가 두 번 등장했지만, 그것은 중요한 게 아닙니다.
심지어 바나나란 단어가 문서2에서 100번 등장했고,
문서3에서 200번 등장했다고 하더라도 바나나의 df는 2가 됩니다.
(3) idf ( t ) : 특정 문서 d에서의 특정 단어 t의 등장 횟수
IDF라는 이름을 보고 DF의 역수가 아닐까 생각했다면, IDF는 DF의 역수를 취하고 싶은 것이 맞습니다.
log를 사용하지 않았을 때, 총 문서의 수 n이 커질 수록, IDF의 값은 기하급수적으로 커지게 됩니다.
log 안의 식에서 분모에 1을 더해주는 이유는 특정 단어가 전체 문서에서 등장하지 않을 경우에 분모가 0이 되는 상황을 방지하기 위함
TF-IDF는 모든 문서에서 자주 등장하는 단어는 중요도가 낮다고 판단하며, 특정 문서에서만 자주 등장하는 단어는 중요도가 높다고 판단합니다.
TF-IDF 값이 낮으면 중요도가 낮은 것이며, TF-IDF 값이 크면 중요도가 큰 것입니다.
우선 TF는 앞서 사용한 DTM을 그대로 사용하면, 그것이 각 문서에서의 각 단어의 TF가 됩니다. 이제 구해야할 것은 TF와 곱해야할 값인 IDF입니다.
로그는 자연 로그를 사용하도록 하겠습니다.
자연 로그는 로그의 밑을 자연 상수 e(e=2.718281...)를 사용하는 로그를 말합니다.
IDF 계산을 위해 사용하는 로그의 밑은 TF-IDF를 사용하는 사용자가 임의로 정할 수 있는데, 여기서 로그는 마치 기존의 값에 곱하여 값의 크기를 조절하는 상수의 역할을 합니다.
각종 프로그래밍 언어에서 패키지로 지원하는 TF-IDF의 로그는 대부분 자연 로그를 사용합니다.
여기서도 자연 로그를 사용하겠습니다.
자연 로그는 보통 log라고 표현하지 않고, ln이라고 표현합니다.
문서의 총 수는 4이기 때문에 ln 안에서 분자는 늘 4으로 동일합니다.
분모의 경우에는 각 단어가 등장한 문서의 수(DF)를 의미합니다.
출처 : https://wikidocs.net/31698
'딥러닝 > 자연어' 카테고리의 다른 글
문서 단어 행렬 (DTM, Document-Term Matrix, DTM) (0) | 2025.03.10 |
---|---|
RAG - Text Splitter (0) | 2024.07.31 |
RAG (Document Loader) (0) | 2024.07.30 |
RAG (개요) (0) | 2024.07.26 |