2010-08-31 2 views
14

Я делаю небольшое исследование о том, как кластеризовать статьи в «новостях» в новостях Google.Инкрементный алгоритм кластеризации для группировки новостных статей?

Если вы посмотрите на предыдущие вопросы по этому вопросу, я часто вижу, что рекомендуется просто вытаскивать вектор слов из статьи, весить некоторые слова больше, если они находятся в определенных частях статьи (например, заголовок), а затем использовать что-то вроде k-мерного алгоритма для кластеризации статей.

Но это приводит к паре вопросов:

  • С к-средств, как вы знаете заранее, сколько к должно быть? В динамичной среде новостей у вас может быть очень много разных историй, и вы не будете знать заранее, сколько историй представляет коллекция статей.

  • С иерархическими алгоритмами кластеризации, как вы решаете, какие кластеры использовать в качестве ваших историй? У вас есть кластеры в нижней части дерева, которые представляют собой только отдельные статьи, которые вы, очевидно, не захотите использовать, и кластер в корне дерева, в котором есть все статьи, которые вам опять не нужны ... но как вы знаете, какие кластеры между ними следует использовать для представления историй?

  • Наконец, с использованием либо k-средств, либо иерархических алгоритмов большинство литературы, которую я прочитал, похоже, предполагают, что у вас есть предустановленный набор документов, которые вы хотите сгруппировать, и он объединяет их все сразу. Но что такое ситуация, когда у вас появляются новые статьи, которые так часто появляются. Что происходит? Нужно ли кластеризовать все статьи с нуля, теперь есть еще один? Вот почему мне интересно, есть ли подходы, которые позволяют вам добавлять статьи, когда вы идете без повторной кластеризации с нуля. Я не могу представить, что это очень эффективно.

ответ

2

Я бы сделал поиск адаптивных алгоритмов кластеризации K-средних. Существует хороший раздел исследований, посвященных описанным проблемам. Вот один такой paper (pdf)

+0

Спасибо Эрик! Это полезная статья :) В ней рассматривается вопрос о предварительном определении количества кластеров, и я предполагаю, что выбор порога довольно важен с точки зрения качества кластеров ... но это то, что можно экспериментировать с. Мне интересно, знаете ли вы, знаете ли, будет ли этот алгоритм работать в инкрементальном контексте? Я имею в виду, что если появится новая статья, и я назначу ее кластеру на основе наименьшего расстояния до существующих кластеров, это приведет к тому же результату, что и перерасчет кластеров с нуля, или результат, который для всех целей и задач " настолько хорошо'? – Peter

+0

Основываясь на своем заключении, я считаю, что ответ будет «таким же хорошим», как если бы вы пересчитали кластеры с нуля, считая, что расчет расстояний выполняется правильно. Я не думаю, что вам потребуется слишком много времени, чтобы реализовать прототип на языке сценариев (легко разбирать многие форматы данных быстро и предоставлять хорошие библиотеки для кластерной визуализации). Тогда у вас может быть шаблон стратегии, одна стратегия с использованием адаптивных k-средств и одной стратегии с использованием нормального k-средства, которое перекомпонует каждый раз. –

+0

k-ближайшее-соседи могут помочь с онлайн-кластеризацией новых статей. – crizCraig

3

Я работал над запуском, который построил именно это: инкрементный механизм кластеризации для новостных статей. Мы основывали наш алгоритм на этом документе: кластеризация веб-документов с использованием индекса индекса документа (http://ieeexplore.ieee.org/xpl/articleDetails.jsp?reload=true&arnumber=4289851). Работала хорошо для нас за 10 тыс. Статей в день.

Он имеет два основных преимущества: 1) Это инкрементный, который решает проблему вы имеете с того, чтобы справиться с потоком поступающих статей (а не кластеризацию все сразу) 2) Он использует фразы на основе моделирования, а не просто «мешок слов», что приводит к гораздо большей точности.

В результате поиска в Google http://www.similetrix.com у них может быть то, что вы ищете.