TF-IDF
TF-IDF란
- 단어의 빈도와 역 문서 빈도를 사용
- DTM내의 각 단어들에 중요한 정도를 가중치로 줌
- 문서의 유사도, 검색 결과 중요도를 구하는 작업에서 쓰임
TF-IDF 의미
- TF X IDF
- 문서를 d, 단어를 t, 문서의 총 개수를 n
1. tf(d, t) : 특정 문서 d에서 특정 단어 t의 등장 횟수
- DTM에서 각 단어들이 가진 값
2. df(t) : 특정 단어 t가 등장한 문서의 수
- 특정 단어 t가 등장한 문서의 수(그 외에는 고려사항 아님)
3. idf(t) : df(t)에 반비례하는 수
\(idf(t) \;=\; log(\frac{n}{1 + df(t)})\)
- log를 사용하지 않으면 idf의 값이 지나치게 커짐
- 분모에 1을 더함 : 분모가 0이 되는 것을 방지
TF-IDF 특장
- 모든 문서에서 자주 등장하는 단어는 안중요하다고 판단
- 모든 문서에서 자주 등장하면 tf가 높아지지만 idf는 더 작아짐
- 결국엔 TF-IDF의 값이 작아짐
- 불용어는 자연스럽게 중요도가 낮아진다
- 거의 대부분의 문서에서 자주 등장하기 때문
TF-IDF 예시
- DTM 예시 활용
- 문서1 : 먹고 싶은 사과
- 문서2 : 먹고 싶은 바나나
- 문서3 : 길고 노란 바나나 바나나
- 문서4 : 저는 과일이 좋아요
구분 | 과일이 | 길고 | 노란 | 먹고 | 바나나 | 사과 | 싶은 | 저는 | 좋아요 |
---|---|---|---|---|---|---|---|---|---|
문서1 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 0 |
문서2 | 0 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 |
문서3 | 0 | 1 | 1 | 0 | 2 | 0 | 0 | 0 | 0 |
문서4 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 1 |
- IDF 계산
단어 | IDF |
---|---|
과일이 | ln(4/(1+1)) = 0.693147 |
길고 | ln(4/(1+1)) = 0.693147 |
노란 | ln(4/(1+1)) = 0.693147 |
먹고 | ln(4/(1+2)) = 0.287682 |
바나나 | ln(4/(1+2)) = 0.287682 |
사과 | ln(4/(1+1)) = 0.693147 |
싶은 | ln(4/(1+2)) = 0.287682 |
저는 | ln(4/(1+1)) = 0.693147 |
좋아요 | ln(4/(1+1)) = 0.693147 |
- TF-IDF 적용
구분 | 과일이 | 길고 | 노란 | 먹고 | 바나나 | 사과 | 싶은 | 저는 | 좋아요 |
---|---|---|---|---|---|---|---|---|---|
문서1 | 0 | 0 | 0 | 0.287682 | 0 | 0.693147 | 0.287682 | 0 | 0 |
문서2 | 0 | 0 | 0 | 0.287682 | 0.287682 | 0 | 0.287682 | 0 | 0 |
문서3 | 0 | 0.693147 | 0.693147 | 0 | 0.575364 | 0 | 0 | 0 | 0 |
문서4 | 0.693147 | 0 | 0 | 0 | 0 | 0 | 0 | 0.693147 | 0.693147 |