Как я могу кластеризировать короткие сообщения [твиты] на основе темы? Кластеризации [Темой ]
Я планирую приложение, которое сделает кластеры коротких сообщений/твитов на основе тем. Количество тем будет ограничено, как спорт [ НБА, НФЛ, крикет, футбол ], развлечения [ Фильмы, Музыка ] и так далее...
Я могу придумать два подхода к этому
- попросите пользователей помечать вопросы, как это делает Stackoverflow. Пользователи могут выбрать теги из списка тегов. Затем на стороне сервера я сгруппирую их на основе тегов. Плюсы: - Простой дизайн. Меньше сложности в коде. Минусы:- выбор для пользователей будет ограничиваться. Кластеры не будут динамичными. Если произойдет новое событие, предопределенные теги пропустят его.
- возьмите сообщение, удалите стоп-слова [ предопределенные в словаре], примените некоторый алгоритм кластеризации к stemmed сообщению, чтобы сделать кластер и в зависимости от его популярности отображать кластер. Кластер будет отображаться до тех пор, пока он не останется популярным [ много сообщений/минута].Новые сообщения будут просмотрены и назначается соответствующим кластерам. Плюсы: - динамическая кластеризация, основанная на популярности события/аварии. Минусы:- повышенная сложность. Требуется больше ресурсов сервера.
Я хотел бы знать, существуют ли другие подходы к этой проблеме. Или существуют ли какие-либо пути совершенствования вышеупомянутых методов?
также предлагают некоторые хорошие алгоритмы кластеризации.Я думаю, что алгоритм "k-ближайшая кластеризация" подходит для этой ситуации.
3 ответов
использовать Байесовской классификации. Обучите фильтр некоторым предопределенным корпусом и (необязательно) предоставьте пользователям возможность дополнительно уточнить его, пометив вещи, которые были неправильно классифицированы.
вот примеры использования байесовского классификатора в в nltk.
Я также делаю нечто подобное. Я думаю, что хэштеги-хороший способ, если вы говорите конкретно о twitter. Вы также можете выполнить некоторую классификацию, но она должна быть обогащена некоторой внешней базой знаний, такой как Википедия и т. д. В любом случае, если ваше решение лучше, пожалуйста, разместите его здесь