Для кластеризации документов. Наилучший подход - использовать алгоритм k-средних. Если вы знаете, сколько типов документов у вас есть, вы знаете, что такое k.
Чтобы заставить его работать с документами:
а) скажем, выбрать исходные k документов в случайном порядке.
b) Назначьте каждый документ cluser, используя минимальное расстояние для документа с кластером.
c) После того, как документы назначены на кластер, создайте K новых документов как кластер, взяв центр тяжести каждого кластера.
Теперь вопрос
a) Как рассчитать расстояние между двумя документами: Ничто, кроме косинусного сходства терминов документов с исходным кластером. Термины здесь - не что иное, как TF-IDF (рассчитывается ранее для каждого документа)
b) Центр тяжести должен быть : сумма TF-IDF данного термина / нет. документов. Делайте это для всех возможных терминов в кластере. это даст вам еще n-мерные документы.
Надеюсь, это поможет!