Группировка похожих новостей вместе, как в новостях GOOGLE
Я не могу легко управлять лентами RSS из-за огромного количества новых историй/похожих новостей, размещенных на различных новостных сайтах. Для таких предметов, как мировые новости и деловые новости, многие из историй излишни, что добавляет бремя для читателей, чтобы разобраться, какие истории они уже прочитали. Чтобы справиться с двумя проблемами затопления и избыточности, мне нужно разработать код, который уменьшает количество элементов для чтения и использует перекрывающуюся информацию для божественных интересных тем.
было бы проще, если бы я мог группировать похожие новостные материалы вместе, как в GOOGLE NEWS/StackOverflow, и представлять их пользователям.
Ответы
Ответ 1
Это определенно непростая задача, которая может быть решена с помощью:
- функции интеллектуального текстового разбора
- необработанная аппаратная мощность
- оба из них
- тестирование, тестирование, тестирование
- тонкая настройка в конце
Прежде всего, я бы группировал различные источники новостей в какую-то относительно широкую категорию. Вы можете легко определить, что источник новостей Tech не будет публиковать новости в экономической категории. (Или будет, что проблема.)
В большинстве случаев название новости не будет затронуто, оно остается в оригинальной форме максимум. Таким образом, категория, название и дата публикации являются хорошей отправной точкой для группировки новостей в один.
Если вы обнаруживаете проблемы с вышеописанными методами, вам нужна тонкая настройка под капотом.
Возможно, вам нужно прочитать всю статью и сравнить две (тысячи) статей по слову.
- Существует много стоп-слов, которые могут исказить сравнение, поэтому вам нужно проигнорировать их.
- Вы можете определить синонимы (J Lo = Jennifer Lopez)
Если исходные тексты новостей похожи (вы можете определить пороговое значение), вы можете снова сравнить другие факторы (описанные выше).
Некоторые источники новостей, обеспечивающие хорошую маркировку в источнике RSS, возможно, вы также можете использовать это, но не полагаться на него.
И помните, что вам нужно много тонких настроек в начале (около 1 года), тогда все будет в порядке.
Ответ 2
Я не вижу здесь никакого вопроса, но я бы начал с разработки своего рода алгоритма отпечатка пальца со словами, именами, названиями, датами и т.д. из статей. Затем я проверил бы сходство отпечатков пальцев, чтобы найти одинаковые статьи, возможно, с помощью какого-то задания MapReduce, чтобы легко распространить работу на разные серверы в кластере.
Если вам нужно вдохновение, ознакомьтесь с исходным кодом для Google Living Stories:
http://code.google.com/p/living-stories/
Ответ 3
Я где-то читал, но у меня нет ссылки, что Google News использует вариант MinHash для обнаружения почти дублированных сообщений новостей. И многие из них почти идентичны, поступая из пресс-агентства только с небольшими изменениями в газетах.
http://en.wikipedia.org/wiki/MinHash
имеет ссылку и утверждение, что в Новостях Google использовался вариант LSH и MinHash:
Das, Abhinandan S. et al. (2007), "Персонализация новостей Google: масштабируемая онлайн-совместная фильтрация", Материалы 16-й международной конференции по Всемирной паутине. ACM
Ответ 4
Я думаю, вам следует попробовать Jaccard Coefficient или Jaccard сходство
Индекс Жакарда, также известный как коэффициент подобия Жаккар (первоначально введенный коэффициент de communauté Пола Жаккарда), является статистикой, используемой для сравнения подобия и разнообразия наборов образцов. Коэффициент Жакара измеряет сходство между конечными наборами образцов и определяется как размер пересечения, деленный на размер объединения наборов выборок.
Коэффициент Jaccarrd.
Я думаю, что Facebook использует это, а также некоторые магазины электронной коммерции для группировки своих связанных продуктов, сообщений и т.д. Вы можете посмотреть на эти другие ссылки здесь, на Stackoverflow для руководства.
Ответ 5
Вам нужно будет сделать некоторую форму кластеризации документов. Это включает в себя:
- Разбивка статей на "функции" (например, вектор TF-IDF
ключевых слов).
- Имея метрику сходства (например, сходство с косинусом, которое может принимать две статьи и решать, насколько они похожи)
- Алгоритм кластеризации, который использует метрику подобия для разбивки статей на кластеры.
Поскольку это новость, и у вас появились новые статьи, вам, вероятно, понадобится "онлайн-алгоритм", а не пакетный. В качестве примера можно найти инкрементный DBSCAN.