Обновить
15
0
Артем@eocron

.NET/C++ Developer

Отправить сообщение
Вот, отрефакторил код. Стало понятнее, правда, еще не тестировал. Автор может прицепить к посту — www.dropbox.com/sh/ejohmuzkwi71j8d/lSlnSrMjK6
Статья великолепно описывает суть, но… я бы не советовал пользоваться «шустрой» реализацией приведенной по ссылке и вообще ее использовать. Код в стиле спагетти и шустростью там не пахнет… тонны ненужных циклов, которые можно свернуть добавлением пары строк без if в предыдущий цикл, либо в которых известно количество шагов, но используется do-while; неоправданное вычисление каждый раз arccos от двух мульти-пространственных векторов (норму векторов уж можно и сохранять, зачем лишний раз делать n*m операций когда можно просто n); читабельность в познавательных целях отсутствует напрочь.
Да, эти результаты будут хорошими если данные кучкуются. Но когда появляется шум (ни то ни се, в текстах это вообще постоянно), то центры выбираются ну совсем плохо… и шум попадает в кластера в больших количествах.
Да, тексты на естественных языках действительно очень плохо поддаются сравнению. Это целые категории разнообразнейших анализов смысла этого текста и отдельных слов, групп слов. В итоге можно получать очень забавные результаты на уровне детской логики, а если сохраняется в статистику — не очень хорошо =) В Яндексе и Гуглах до сих пор в запросах можно ересь найти типа «как заточить карандаш салом».
На самом деле все, что можно придумали еще раньше. А если кто-то что-то открывает — все стараются держать в узком кругу. Сейчас все алгоритмы такого плана имеют больше теоретическую важность, чем практическую. Хорошие или понятные алгоритмы редко выдерживают большие объемы данных, а если существуют, то скорее всего там целая куча ускоряющих модулей по навешано, предобработок, проверок и тому подобного.
Хорошо, сейчас же исправлю =)… исправил. Что-то не подумал, что картинка будет на пол экрана )

Информация

В рейтинге
Не участвует
Откуда
Москва, Москва и Московская обл., Россия
Зарегистрирован
Активность