DTM 내에 있는 각 단어에 대한 중요도를 계산할 수 있는 TF-IDF 가중치
TF-IDF를 사용하면, 기존의 DTM을 사용하는 것보다 보다 많은 정보, 성능을 얻을 수 있습니다.
1. TF-IDF(단어 빈도-역 문서 빈도, Term Frequency-Inverse Document Frequency)
단어의 빈도와 역 문서 빈도(문서의 빈도에 특정 식을 취함)를 사용하여 DTM 내의 각 단어들마다 중요한 정도를 가중치로 주는 방법
주로 문서의 유사도를 구하는 작업
검색 시스템에서 검색 결과의 중요도를 정하는 작업
문서 내에서 특정 단어의 중요도를 구하는 작업
TF-IDF는 TF와 IDF를 곱한 값
문서를 d, 단어를 t, 문서의 총 개수를 n이라고 표현할 때
(1) tf(d,t) : 특정 문서 d에서의 특정 단어 t의 등장 횟수.
각 단어들이 가진 값
DTM이 각 문서에서의 각 단어의 등장 빈도를 나타내는 값
(2) df(t) : 특정 단어 t가 등장한 문서의 수.
특정 단어 t가 등장한 문서의 수
(3) idf(d, t) : df(t)에 반비례하는 수.
idf(d,t)=log(n1+df(t))
log를 사용하지 않았을 때, IDF를 DF의 역수(ndf(t)라는 식)로 사용한다면 총 문서의 수 n이 커질 수록, IDF의 값은 기하급수적으로 커지게 됩니다. 그렇기 때문에 log를 사용합니다.
log를 씌워주지 않으면, 희귀 단어들에 엄청난 가중치가 부여될 수 있습니다.
log 안의 식에서 분모에 1을 더해주는 이유는 첫번째 이유로는 특정 단어가 전체 문서에서 등장하지 않을 경우에 분모가 0이 되는 상황을 방지하기 위함입니다.
TF-IDF는 모든 문서에서 자주 등장하는 단어는 중요도가 낮다고 판단하며, 특정 문서에서만 자주 등장하는 단어는 중요도가 높다고 판단합니다.
IDF 계산을 위해 사용하는 로그의 밑은 TF-IDF를 사용하는 사용자가 임의로 정할 수 있는데, 여기서 로그는 마치 기존의 값에 곱하여 값의 크기를 조절하는 상수의 역할을 합니다.
각종 프로그래밍 언어에서 패키지로 지원하는 TF-IDF의 로그는 대부분 자연 로그를 사용합니다.
자연 로그는 로그의 밑을 자연 상수 e(e=2.718281...)를 사용하는 로그를 말합니다.
자연 로그는 보통 log라고 표현하지 않고, ln이라고 표현합니다.
분모의 경우에는 각 단어가 등장한 문서의 수(DF)를 의미
IDF는 여러 문서에서 등장한 단어의 가중치를 낮추는 역할을 하기 때문입니다.
2. 파이썬으로 TF-IDF 직접 구현하기
IDF의 값이 0이 되어 더 이상 가중치의 역활을 수행하지 못하는 경우를 막기 위해 조정식 사용.
3. 사이킷런을 이용한 DTM과 TF-IDF 실습
CountVectorizer를 사용하면 DTM을 만들 수 있습니다.
사이킷런은 TF-IDF를 자동 계산해주는 TfidfVectorizer를 제공합니다.
'딥러닝 > [딥 러닝을 이용한 자연어 처리 입문]딥러닝' 카테고리의 다른 글
여러가지 유사도 기법 (0) | 2023.03.15 |
---|---|
코사인 유사도(Cosine Similarity) (2) | 2023.03.14 |
문서 단어 행렬(Document-Term Matrix, DTM) (0) | 2023.03.14 |
Bag of Words(BoW) (0) | 2023.03.14 |
다양한 단어의 표현 방법 (0) | 2023.03.14 |