[Text Mining] 8. 텍스트 클러스터(Text Cluster)
안녕하세요 오늘은 텍스트 마이닝 여덟 번째 시간입니다.
오늘은 지난 시간에 살펴보았던 텍스트 토픽에 이어 텍스트 클러스터에 대하여 알아보는 시간을 갖도록 하겠습니다.
얼핏 말씀드렸다시피 텍스트 토픽과 텍스트 클러스터의 가장 큰 차이점은 바로 상호 배타적이냐 그렇지 않느냐인데요,
텍스트 토픽의 경우 문서에 따라 어느 토픽에도 속하지 않는 것도 존재하고 여러 가지의 토픽에 동시에 속해있는 문서
또한 존재합니다. 반면 텍스트 클러스터는 모든 문서들이 하나의 클러스터에 속하게 되어 상호 배타적인 성격을 갖게 됩니다.
그럼 본격적으로 텍스트 클러스터에 대하여 알아보도록 하겠습니다.
우선 클러스터의 메뉴부터 살펴보도록 합시다.

텍스트 클러스터는 텍스트 필터나 파싱처럼 메뉴가 많지 않습니다. 굉장히 간단한데요,
메뉴 중앙에 위치한 SVD분해수준을 먼저 보겠습니다.
SVD는 Singular Value Decomposition의 약자로, 우리말로 번역하면 “특이값 분해” 라고 합니다.
선형대수학에서 나오는 개념인데요, 제 나름대로 이해한 바를 간단하게 설명드리자면,
각 용어(m개)가 각 문서(n개)에서 나온 횟수를 행렬로 만들면 m x n 행렬이 되죠?
이 행렬을 m x 1 행렬로 간단히 만드는 것을 의미한다고 보시면 됩니다.
보다 자세한 내용은 선형대수학 책을 참고하시기 바랍니다;;;
다만 우리가 여기서 기억해야 할 것은, SVD분해 수준이 낮을수록 정보의 손실이 적다는 것입니다.
반면 분해수준이 높을수록 행렬이 더 간략화된다고 보시면 되겠습니다.
저는 SVD분해수준을 “낮게”로 SVD차원은 “100”으로 진행하겠습니다. 디폴트 만세
다음 메뉴는 “일치 또는 최대” 인데요,
“일치”로 설정하면 아래 행에 입력해둔 클러스터 개수대로 클러스터링을 수행합니다.
“최대”로 설정하면 클러스터링 개수 내에서 타당하다고 계산되는 클러스터개수대로 분류하게 됩니다.
저는 “일치”로 설정하였습니다. “최대”로 설정하면 가끔 클러스터를 2개 쓸 때가 있더라구요.
다음 메뉴인 클러스터 알고리즘에는 Expectation-Maximization과 Hierarchical 두 가지가 있습니다.
후자는 말 그대로 계층별 클러스터링입니다. 클러스터 1차 분류 후 2차 분류 이런 식으로
점차 Top-Down형식으로 클러스터링을 진행하는 개념입니다.
전자는 Default 로써 흔히 알려진 K-means 클러스터링과 유사한 방식을 뜻하는 것 같습니다.
이 부분은 저도 좀더 공부해보도록 하겠습니다.
마지막 메뉴인 기술 용어는 특정 클러스터를 표현할 용어의 숫자를 설정하는 메뉴입니다.
높을수록 분류의 유연성은 늘지만 그룹의 특수성이 줄어들게 됩니다.
클러스터는 토픽과는 달리 모든 문서가 상호 배타적인 클러스터에 포함되므로
이번에는 여러 가지 옵션을 적용하여 결과를 한꺼번에 살펴보도록 하겠습니다.
우선 노드는 아래와 같이 설정하였구요,

돌려보았습니다.
실행이 완료되면 결과화면을 확인해봅시다.
클러스터 빈도만 확인해보면 한쪽으로 크게 치우치지 않게 잘 나뉜 것을 볼 수 있는데요, 과연 실제로도 그럴까요?
각 문서별로 할당된 클러스터 번호를 알기 위해서는 클러스터 메뉴 상단의 내보낸 데이터를 클릭합니다.
쩜쩜쩜 버튼을 누르면 아래와 같은 화면이 표출됩니다.
TRAIN을 클릭하고 “탐색(X)”버튼을 클릭합니다.
아래쪽 화면을 보시면 문서(영화)별 클러스터 번호를 확인할 수 있습니다.
노드 5개를 실행 후에 결과치를 엑셀로 모아보았습니다.
똑 같은 노드를 5개, 설정을 다르게 하여 실행시켜 본 결과 제 마음에 쏙 드는 클러스터링은 사실 없었습니다.
클러스터 개수를 늘리거나 기술용어를 줄어거나, SVD분해수준을 변경하는 방법을 고려해봐야겠군요.
다양한 옵션을 고려하여 클러스터를 실행하다 보면 아마 좋은 결과가 나오지 않을까 생각됩니다.
이상으로 오늘 준비한 내용을 모두 마치도록 하겠습니다.
텍스트 클러스터링은 분석작업이기 때문에 분석자가 어떻게 해석하느냐에 따라
결과가 다를 수 있다는 점 유념하시기 바라며 저는 이제 다음 시간을 준비하도록 하겠습니다.
다음 시간에는 텍스트 규칙 빌더 노드를 실행해보고 그 결과를 해석해보도록 하겠습니다.
부족한 점이나 보완해야 할 점이 있으시면 언제든지 댓글 남겨주시기 바랍니다.
오늘도 좋은 하루 되세요.
감사합니다!