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

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

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

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

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

Также предложите несколько хороших алгоритмов кластеризации. Я думаю, что алгоритм «K-Nearest Clustering» подходит для этой ситуации.


person Jagira    schedule 28.05.2010    source источник


Ответы (3)


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

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

person Hank Gay    schedule 28.05.2010
comment
спасибо за ответ... На самом деле я хочу, чтобы это было максимально просто для пользователей. Я думаю, было бы неплохо, если бы пользователи могли просто вводить какие-то сообщения, а сервер выяснял бы, куда их поместить. Хотя разместить столько интеллекта на сервере будет сложно. - person Jagira; 28.05.2010
comment
Вам не нужно предоставлять способ постоянного обучения фильтра; это просто делает фильтр лучше. Если у вас хороший корпус, классификация должна быть приемлемой без постоянной настройки. - person Hank Gay; 28.05.2010

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

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

person MigDus    schedule 27.04.2011

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

person sammyiitkgp    schedule 02.10.2012