BoW와 TF-IDF란 무엇일까?

생성형 AI의 발전과정에 대해 알아보자.
생성형AI
avatar
4 months ago
·
5 min read

Bag of Words(BoW)

초기에는 Bag of Words(BoW) 방식이 사용되었습니다. BoW는 텍스트 문서를 컴퓨터가 처리할 수 있도록 숫자로 변환하는 자연어 처리 방법 중 하나로, 문장을 구성하는 단어들의 출현 빈도를 기반으로 문서를 표현합니다.

예를 들어, 다음과 같은 문장이 있다고 가정해 보겠습니다.

  • small dog, small small cat, small cute dog

이를 BoW 방식으로 처리하면 small, cute, dog, cat과 같이 단어별로 구분한 후, 각 문장에서 등장한 횟수를 기반으로 문서를 숫자로 표현합니다.

그러나 BoW는 모든 단어를 단순히 카운팅하기 때문에, 중요한 단어와 비중요한 단어를 구별하지 못하는 한계가 있습니다. 예를 들어, the, is, and"같은 자주 등장하는 단어도 중요 단어로 간주될 수 있어 정확한 의미를 파악하는 데 어려움이 있습니다.

3707

TF-IDF(Term Frequency - Inverse Document Frequency)

BoW의 한계를 극복하기 위해 등장한 방법이 TF-IDF입니다. TF-IDF는 특정 문서에서의 단어 빈도(Term Frequency, TF)와 해당 단어가 여러 문서에서 등장하는 빈도(Inverse Document Frequency, IDF)를 결합하여 단어의 중요도를 측정하는 방식입니다.

  • tf(t, d): 특정 문서 d에서 특정 단어 t가 등장한 횟수

  • df(t): 특정 단어 t가 등장한 문서의 수

  • idf(t): df의 역수에 로그를 씌운 값

  • n : 총 문서의 수

  • tf-idf = tf와 idf를 곱한 값

3705

IDF 계산식에서 로그를 사용하는 이유는 희귀한 단어가 지나치게 높은 가중치를 갖는 문제를 완화하기 위해서입니다. 특정 단어가 거의 등장하지 않을 경우, IDF 값이 지나치게 커질 수 있습니다. 이는 모델이 해당 단어에 과도하게 민감하게 반응하는 문제를 초래할 수 있기 때문에, 로그를 적용하여 가중치의 증가 속도를 조절하는 것입니다. 로그함수는 입력 값이 커질수록 증가율이 줄어들어 가중치의 성장 속도를 완화할 수 있습니다. 또한, 로그 안의 식에서 분모에 1을 더해주는 이유는 특정 단어가 전체 문서에서 등장하지 않을 경우에 분모가 0이 되는 상황을 방지하기 위해서입니다.

TF-IDF는 모든 문서에서 자주 등장하는 단어의 중요도를 낮추고, 특정 문서에서만 자주 등장하는 단어의 중요도를 높이는 역할을 합니다. 이러한 특성을 활용하여 문서의 유사도를 구하는 작업, 검색 시스템에서 검색 결과의 중요도를 정하는 작업, 문서 내 특정 단어의 중요도를 계산하는 작업 등에 쓰입니다.

3708

Bow와 TF-IDF 둘다 sklearn 패키지에 있지만, 직접 구현해보는 것을 추천합니다.







- 컬렉션 아티클