for textmining

Word Weighting(1)

|

이번 포스팅에선 단어 가중치 할당 방법론인 TF-IDF에 대해 살펴보도록 하겠습니다. 이번 글 역시 고려대 강필성 교수님 강의를 참고했음을 먼저 밝힙니다. 그럼 시작하겠습니다.

TF, IDF

TF(Term Frequency)는 어떤 단어가 특정 문서에 얼마나 많이 쓰였는지 빈도를 나타냅니다. 많이 쓰인 단어가 중요하다는 가정을 전제로 한 수치입니다. 예컨대 A라는 단어가 doc1에서 10번, doc3에서 5번 쓰였다면 doc1-단어A의 TF는 10, doc3-단어A의 TF는 5가 됩니다. DF(Document Frequency)란 특정 단어가 문서에 등장한 횟수를 뜻하는데요, 만약 A라는 단어가 doc1, doc3에 등장했다면 DF는 2가 됩니다. DF가 클수록 다수 문서에 쓰이는 범용적인 단어라고 볼 수 있겠네요. 이미 눈치채셨겠지만 TF는 같은 단어라도 문서마다 다른 값을 갖고요, DF는 문서가 달라지더라도 동일한 값을 지니게 됩니다.

IDF(Inverse Document Frequency)는 전체 단어수를 해당 단어의 DF로 나눈 뒤 로그를 취한 값입니다. 그 값이 클수록 특이한 단어라는 뜻이 됩니다. 예컨대 아래 표를 보시죠. 전체 문서 수(N)는 100만개입니다.

term df idf
calpurnia 1 6
animal 100 5
sunday 1000 4
fly 10000 3
under 100000 2
the 1000000 1

calpurnia는 줄리어스 시저의 세번째 아내(B.C. 59~44)의 이름이라고 합니다. 그만큼 희귀한 단어겠죠. 위 예시 기준으로 보시면 100만개 전체 문서 가운데 단 하나의 문서에만 등장했군요. 역시 idf값도 높습니다. 반대로 정관사 ‘the’를 볼까요? 100만개 모든 문서에 모두 등장한 흔한 단어이군요. 이를 idf 식에 넣어서 계산해봤더니 가장 낮은 1이 됩니다. 다시 한번 말씀드리면 idf는 클 수록 특이한 단어라는 뜻입니다.

TF-IDF

TF-IDF는 TF와 IDF를 곱해 두 지표를 동시에 고려하는 가중치 산출 방법입니다. 다시 말해 어떤 단어가 얼마나 많이 쓰였는지, 그 단어가 얼마나 특이한지를 모두 반영한 수치란 뜻입니다. 그 식은 아래와 같이 정의됩니다.

\[TF-IDF(w)=tf(w)\times \log { (\frac { N }{ df(w) } ) }\]

문서가 3개, 단어가 5개 있는 학습말뭉치를 예로 들어보겠습니다. 문서1의 TF, IDF, TF-IDF는 각각 아래와 같이 계산됩니다.

위 표를 기준으로 할때 doc1을 가려내는 데 가장 중요한 역할을 하는 단어는 무엇일까요? 그 후보는 term1과 term2가 될 겁니다. 둘 모두 doc1에만 쓰였기 때문입니다. 그런데 이 중에서도 term1이 term2보다 많이 쓰였기 때문에 term1이 가장 중요한 단어가 될 겁니다. doc1의 term1에 대응하는 TF-IDF가 가장 높음을 역시 확인할 수 있습니다. 그렇다면 반대로 모든 문서에 비슷하게 많이 쓰인 term3, term4는 어떨까요? 이들에 대응하는 TF-IDF 값은 0입니다. 바꿔 말하면 term3과 term4는 모두 doc1이라는 문서를 특징짓는 데 아무런 정보를 가지고 있지 않다는 이야기입니다.

TF-IDF 변형들

오래 전 제안돼 그 성능 또한 검증된 방식인 만큼 여러 변형들이 존재합니다. 대표적으로 아래와 같은 방식들이 있는데요, 붉은색 표시가 된 방식이 가장 많이 쓰인다고 합니다.



Comments