안전과 안전 관리는 다른 이야기다. 그런데 단어만 세는 분석에서는 둘이 같은 "안전"으로 합쳐진다.
무엇이 문제인가
텍스트마이닝에서 가장 기본이 되는 단위는 토큰, 즉 단어 하나다. 형태소 분석을 거쳐 명사나 동사를 추출하고 그 빈도를 세는 방식은 직관적이고 구현도 쉽다. 문제는 실제 텍스트에서 의미를 운반하는 단위가 단어 하나로 끝나지 않는다는 점이다. "안전 관리", "고객 만족도", "서비스 품질"처럼 여러 단어가 붙어야 비로소 하나의 개념이 되는 표현이 데이터 곳곳에 있다. 이런 표현을 단어 단위로 쪼개면 "안전"과 "관리"가 각각 따로 집계되고, 둘이 묶여서 가리키던 복합 개념 자체는 어디에도 남지 않는다. 결과적으로 빈도표나 동시출현 네트워크에 올라오는 단어는 원래 텍스트가 말하려던 단위보다 훨씬 작고 흐릿한 조각이 되어버린다. 응답자나 작성자가 실제로 쓴 표현의 결을 분석 결과가 따라가지 못하는 셈이다.
어떻게 하는가
이 문제를 보완하는 방법이 N-gram이다. N-gram은 연속한 단어를 N개씩 묶어서 하나의 단위로 취급하는 방식으로, 2개씩 묶으면 2-gram(바이그램), 3개씩 묶으면 3-gram(트라이그램)이라고 부른다. "안전"과 "관리"가 따로 토큰화되는 대신 "안전 관리"라는 2-gram 하나로 묶여 집계되면, 두 단어가 연속해서 쓰인 맥락, 즉 복합 개념이 토큰 분리 과정에서 사라지는 것을 막을 수 있다. 실제 적용에서는 전체 텍스트에서 자주 등장하는 N-gram을 먼저 뽑아보고, 그중 의미 단위로 묶일 만한 조합을 복합명사 사전에 반영해 형태소 분석 단계부터 하나의 토큰으로 처리하도록 만드는 흐름을 많이 쓴다. 이렇게 하면 이후의 빈도 분석이나 동시출현 네트워크, 토픽모델링 전부가 단어가 아니라 구 단위로 작동하게 되고, 분석 결과가 가리키는 단위도 원래 텍스트의 표현 단위에 더 가까워진다.
심사위원이라면 여기를 본다
심사위원이 결과표에 올라온 핵심어 목록을 볼 때 짚는 것 중 하나가, 그 단어들이 실제로 데이터 안에서 하나의 개념으로 쓰였는지 아니면 분석 과정에서 인위적으로 쪼개진 조각인지다. 단일 토큰만 추출해서 빈도를 집계했다면, 원래 구 단위로 표현되던 개념이 분석 단계에서 놓쳤다는 지적이 나올 수 있다. 예를 들어 "안전"이라는 단어가 상위 빈도어로 올라왔는데, 그것이 "안전 관리"를 가리키는 것인지 "안전 교육"을 가리키는 것인지 구분되지 않는다면 해석의 설득력이 떨어진다. 반대로 N-gram을 통해 빈출 복합 표현을 미리 확인하고 이를 토큰화 단계에 반영했다는 절차를 밝히면, 분석 단위가 텍스트의 실제 의미 단위를 쪼개지 않았다는 근거가 된다.
마치며
단어만 세는 분석은 복합 개념을 쪼개어 의미를 흐리므로, N-gram으로 빈출 구를 먼저 확인하고 이를 복합명사 사전에 반영해 하나의 토큰으로 다루는 절차가 분석 단위의 타당성을 지키는 길이다.
텍스트마이닝 분석 설계가 필요하다면 텍스트마이닝 분석 페이지에서 진행 방식을 확인할 수 있다. 방법론 노하우는 뉴스레터 「강의실의 AI」 구독 시 받아볼 수 있다.