У меня есть программа-краулер, которая ежедневно хранит спортивные данные от 7 информационных агентств. Ежедневно здесь хранится около 1200 спортивных новостей. Я хочу разделить новости за последние два дня на подкатегории. Итак, каждые два дня у меня появляется около 2400 новостей именно за эти дни, и многие из их тем говорят об одном и том же событии. Например:
70 новостей говорят о гонке Брэда Кеселовски на 500 миль.
120 новостей говорят об американском пловце Няде, который начинает плавать.
28 новых участников говорят о матче между «Манчестер Юнайтед» и «Ман Сити».
. . .
Другими словами, я хочу создать что-то вроде Google News.
Проблема в том, что эта ситуация не является проблемой классификации, потому что у меня нет специальных классов. Например, мои занятия не связаны с плаванием, гольфом, футболом и т. д. Мои занятия - это особые события в каждой области, которые произошли за эти два года. Поэтому я не могу использовать алгоритмы классификации, такие как Наивный Байес.
С другой стороны, моя проблема тоже не решается с помощью алгоритмов кластеризации. Потому что я не хочу заставлять их объединять в n кластеров. Может быть, в одной из новостей нет похожих новостей или, может быть, в одном пакете из двух дней есть 12 разных историй, но в другие два дня есть 30 разных выпусков. Поэтому я не могу использовать алгоритмы кластеризации, такие как «Одно звено (максимальное сходство)», «Полная ссылка (минимальное сходство)», «Максимально взвешенное соответствие» или «Среднее по группе (среднее внутреннее сходство)».
У меня есть несколько идей, как это сделать, например, каждые две новости, в которых есть 10 общих слов, должны быть в одном классе. Но если не учитывать некоторые параметры, такие как длина документов, влияние употребляемых и редких слов и некоторые другие вещи, это не сработает.
Я прочитал эту статью, но это был не мой ответ.
Есть ли какой-нибудь известный алгоритм решения этой проблемы?