Я делаю небольшое исследование о том, как кластеризовать статьи в «новостях» в новостях Google.Инкрементный алгоритм кластеризации для группировки новостных статей?
Если вы посмотрите на предыдущие вопросы по этому вопросу, я часто вижу, что рекомендуется просто вытаскивать вектор слов из статьи, весить некоторые слова больше, если они находятся в определенных частях статьи (например, заголовок), а затем использовать что-то вроде k-мерного алгоритма для кластеризации статей.
Но это приводит к паре вопросов:
С к-средств, как вы знаете заранее, сколько к должно быть? В динамичной среде новостей у вас может быть очень много разных историй, и вы не будете знать заранее, сколько историй представляет коллекция статей.
С иерархическими алгоритмами кластеризации, как вы решаете, какие кластеры использовать в качестве ваших историй? У вас есть кластеры в нижней части дерева, которые представляют собой только отдельные статьи, которые вы, очевидно, не захотите использовать, и кластер в корне дерева, в котором есть все статьи, которые вам опять не нужны ... но как вы знаете, какие кластеры между ними следует использовать для представления историй?
Наконец, с использованием либо k-средств, либо иерархических алгоритмов большинство литературы, которую я прочитал, похоже, предполагают, что у вас есть предустановленный набор документов, которые вы хотите сгруппировать, и он объединяет их все сразу. Но что такое ситуация, когда у вас появляются новые статьи, которые так часто появляются. Что происходит? Нужно ли кластеризовать все статьи с нуля, теперь есть еще один? Вот почему мне интересно, есть ли подходы, которые позволяют вам добавлять статьи, когда вы идете без повторной кластеризации с нуля. Я не могу представить, что это очень эффективно.
Спасибо Эрик! Это полезная статья :) В ней рассматривается вопрос о предварительном определении количества кластеров, и я предполагаю, что выбор порога довольно важен с точки зрения качества кластеров ... но это то, что можно экспериментировать с. Мне интересно, знаете ли вы, знаете ли, будет ли этот алгоритм работать в инкрементальном контексте? Я имею в виду, что если появится новая статья, и я назначу ее кластеру на основе наименьшего расстояния до существующих кластеров, это приведет к тому же результату, что и перерасчет кластеров с нуля, или результат, который для всех целей и задач " настолько хорошо'? – Peter
Основываясь на своем заключении, я считаю, что ответ будет «таким же хорошим», как если бы вы пересчитали кластеры с нуля, считая, что расчет расстояний выполняется правильно. Я не думаю, что вам потребуется слишком много времени, чтобы реализовать прототип на языке сценариев (легко разбирать многие форматы данных быстро и предоставлять хорошие библиотеки для кластерной визуализации). Тогда у вас может быть шаблон стратегии, одна стратегия с использованием адаптивных k-средств и одной стратегии с использованием нормального k-средства, которое перекомпонует каждый раз. –
k-ближайшее-соседи могут помочь с онлайн-кластеризацией новых статей. – crizCraig