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