요즘 인공지능은 너무나 똑똑해서 내일 날씨도 알려주고, 재밌는 농담도 하고, 소설도 쓴다. 이러한 인공지능에게 어떤 글의 키워드를 뽑아보라고 하면 엄청나게 잘할 거라는 예감이 든다. 그런데 인공지능이 이렇게 성장하기 한참 전, 무려 1972년에 아주 간단한 방식으로 글의 키워드를 추출하는 방법이 제안되었다. 아직도 다양한 분야에 활용되는 그 엄청난 방법의 이름은 바로 TF-IDF (Term Frequency – Inverse Document Frequency)이다.
글에서 여러 번 반복되는 단어가 있다면 그 단어가 키워드일 확률이 높을 것이다. 여기까지가 TF (Term Frequency)에 해당하는 부분이다. 하지만 단순히 등장 빈도로 센다면 ‘이’, ‘그’, ‘저’ 등 큰 의미 없는 단어만 뽑힐 것이다. 글의 키워드를 찾으려면 모든 글에 많이 등장하는 단어가 아니라 그 글에만 많이 등장하는 단어를 찾아야 한다. 이를 위해 IDF (Inverse Document Frequency)가 사용된다.
TF-IDF는 각 글의 단어마다 “그 단어가 그 글에서 등장한 빈도인 TF”와 “(전체 글의 개수)를 (그 단어가 등장한 글의 개수)로 나눈 것의 로그 값인 IDF”를 곱하여 점수를 매기고, 이 값이 가장 큰 단어를 뽑아 키워드로 삼는다. 아래 수식에서 w는 i번째 단어의 j번째 글에서의 TF-IDF 점수를, tf는 i번째 단어가 j번째 글에서 등장한 빈도, N은 전체 글의 개수, df는 i번째 단어가 등장한 글의 개수를 의미한다.
이렇게 하면 ‘이’, ‘그’, ‘저’ 같은 단어는 많은 글에서 TF 값은 크게 나오겠지만, IDF 값은 0에 가까울 것이기 때문에 TF-IDF 점수 자체는 매우 낮아 키워드로 뽑히지 않을 것이다. 대신 해당 글에 여러 번 등장하고, 다른 글에선 많이 등장하지 않는 단어라면, TF 값과 IDF 값 모두 커서 키워드로 뽑히게 될 것이다.
TF-IDF에서 알 수 있다시피, 단순히 숫자가 크다고 그 데이터가 중요한 것은 아니다. 예를 들어 제주도에서 카페를 창업하기 위해 시장 조사를 할 때, 전국의 모든 카페에서 가장 많이 사용되는 영업 전략, 가장 많이 파는 메뉴 등에만 집중할 필요는 없다. 이렇게 하면 ‘이’, ‘그’, ‘저’와 같이 의미 없는 단어를 키워드로 뽑는 거나 마찬가지다. 다른 지역에서는 큰 인기가 없지만 제주도에서는 인기 있는 요인을 찾는 것이 더 효과적일 것이다.
데이터를 보다 보면 숫자에 매몰되어 무조건 큰 수치만 쫓게 될 때가 있다. 하지만 숫자의 크기보다 숫자의 의미에 더 주목해야 한다. 숫자의 의미를 잘 따져보지 않고 무조건 큰 수치만 쫓으면, 단순히 TF 값만 큰 단어를 키워드로 뽑는 것처럼 아무 의미 없는 데이터를 만나게 된다.
Thumbnail Image by Mauro Lima on Unsplash