가장 많이 나온 단어가 가장 중요한 단어일까. 빈도만 세면 하다·있다·되다가 1등이 된다.

무엇이 문제인가

텍스트마이닝 결과로 빈도 상위 단어 목록만 제시하는 경우가 많다. 그런데 어떤 텍스트를 분석하든 하다·있다·되다 같은 어휘는 거의 항상 상위권에 오른다. 이런 어휘는 문서 전체에 고르게 나타나기 때문에 특정 문서나 주제를 구별하는 데는 정보량이 거의 없다. 빈도표만 제시하고 이를 걸러내는 절차 없이 "핵심어"라고 부르면, 그 목록이 실제로 무엇을 특징짓는지 설명하기 어려워진다.

어떻게 하는가

이 문제를 다루는 표준적인 방법이 TF-IDF다. TF는 1 + log(빈도)로 계산해 한 문서 안에서 얼마나 자주 나오는지를 보고, IDF는 log(전체 문서 수 / 해당 단어가 등장한 문서 수)로 계산해 얼마나 여러 문서에 공통으로 나오는지를 본다. 두 값을 곱한 TF-IDF 점수는 한 문서에는 자주 나오지만 다른 문서에는 잘 나오지 않는 단어에 높은 값을 준다. 즉 어디에나 나오는 흔한 어휘의 가중치는 낮추고, 그 문서·주제를 특징짓는 어휘를 드러내는 방식이다.

실무에서는 sklearn의 TfidfVectorizer를 주로 쓴다. 이때 sublinear_tf=True로 설정해 TF에 로그 스케일을 적용하고, min_df=2로 너무 드물게 등장하는 단어(오탈자·노이즈일 가능성이 큰)를 제외하며, max_df=0.95로 문서 대부분에 등장하는 단어(불용어에 가까운)를 제외한다. 세 파라미터를 함께 명시해야 어떤 기준으로 어휘를 걸렀는지가 재현 가능해진다.

심사위원이라면 여기를 본다

빈도표만 제시하고 TF-IDF 대조가 없으면 핵심어 선별 근거가 부족하다는 지적을 받기 쉽다. "왜 이 단어들을 핵심어로 골랐는가"라는 질문에 "단순 빈도가 아니라 TF-IDF 점수 기준으로 상위 어휘를 선별했다"고 답할 수 있어야 하고, 두 방식으로 뽑은 상위 어휘 목록을 나란히 대조해 제시하면 흔한 어휘가 걸러지는 과정을 시각적으로 보여줄 수 있어 방어에 유리하다. min_df·max_df 같은 필터링 기준을 밝히지 않은 채 결과만 제시하는 것도 같은 맥락에서 지적받기 쉬우므로, 어떤 기준으로 어휘를 제외했는지 본문에 함께 남겨두는 편이 안전하다.

마치며

빈도 1등이 항상 핵심어는 아니다. TF-IDF로 흔한 어휘의 가중치를 낮추고, min_df·max_df 같은 필터링 기준을 본문에 남겨야 선별 근거를 방어할 수 있다.

이 방식의 이론적 배경은 Salton & Buckley(1988)의 연구에서 확인할 수 있다. 텍스트마이닝 분석 설계가 필요하다면 텍스트마이닝 분석 페이지에서 진행 방식을 확인할 수 있다. 방법론 노하우는 뉴스레터 「강의실의 AI」 구독 시 받아볼 수 있다.