Как я могу кластеризировать короткие сообщения [твиты] на основе темы? Кластеризации [Темой ]

Я планирую приложение, которое сделает кластеры коротких сообщений/твитов на основе тем. Количество тем будет ограничено, как спорт [ НБА, НФЛ, крикет, футбол ], развлечения [ Фильмы, Музыка ] и так далее...

Я могу придумать два подхода к этому

  • попросите пользователей помечать вопросы, как это делает Stackoverflow. Пользователи могут выбрать теги из списка тегов. Затем на стороне сервера я сгруппирую их на основе тегов. Плюсы: - Простой дизайн. Меньше сложности в коде. Минусы:- выбор для пользователей будет ограничиваться. Кластеры не будут динамичными. Если произойдет новое событие, предопределенные теги пропустят его.
  • возьмите сообщение, удалите стоп-слова [ предопределенные в словаре], примените некоторый алгоритм кластеризации к stemmed сообщению, чтобы сделать кластер и в зависимости от его популярности отображать кластер. Кластер будет отображаться до тех пор, пока он не останется популярным [ много сообщений/минута].Новые сообщения будут просмотрены и назначается соответствующим кластерам. Плюсы: - динамическая кластеризация, основанная на популярности события/аварии. Минусы:- повышенная сложность. Требуется больше ресурсов сервера.

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

также предлагают некоторые хорошие алгоритмы кластеризации.Я думаю, что алгоритм "k-ближайшая кластеризация" подходит для этой ситуации.

3 ответов


использовать Байесовской классификации. Обучите фильтр некоторым предопределенным корпусом и (необязательно) предоставьте пользователям возможность дополнительно уточнить его, пометив вещи, которые были неправильно классифицированы.

вот примеры использования байесовского классификатора в в nltk.


Проверьте Carrot2, этот инструмент извлекает теги из текста и кластеров. Вы можете скачать его с здесь и проверьте реализованные алгоритмы (в основном на жаргоне) здесь.

надеюсь, это поможет вам.


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