Группировка похожих новостей вместе, как в GOOGLE NEWS.

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

было бы проще, если бы я мог группировать похожие новости вместе, как в GOOGLE NEWS / StackOverflow, и представлять их пользователям.


person Gourav    schedule 18.10.2010    source источник
comment
Являются ли тематические категории (спорт, мир, развлечения, здоровье...) заранее заданными? Другими словами, вы уже знаете, как группировать новости? (Если да, то это проблема контролируемого обучения) Или пользователь(и) может указать, сколько и какие тематические категории существуют? (=› без присмотра =› сложнее)   -  person knb    schedule 05.05.2015


Ответы (6)


Это определенно не так просто решить проблему, которая может быть решена с помощью:

  • интеллектуальные функции анализа текста
  • грубая аппаратная мощность
  • оба из них
  • тестирование, тестирование, тестирование
  • доработка в конце

Прежде всего, я бы сгруппировал различные источники новостей в какую-то относительно широкую категорию. Вы можете легко определить, что источник технических новостей не будет публиковать новости в экономической категории. (Или будет, вот в чем проблема.)

В большинстве случаев название новости не будет изменено, максимум останется в исходном виде. Таким образом, Категория, Заголовок и Дата публикации являются хорошей отправной точкой для группировки новостей в одну.

Если вы обнаружите проблемы с помощью описанных выше методов, вам потребуется некоторая тонкая настройка «под капотом».

Возможно, вам нужно прочитать всю статью и сравнить две (тысячи) статей слово в слово.

  • Есть много стоп-слов, которые могут исказить сравнение, поэтому их нужно игнорировать.
  • Вы можете определить синонимы (J Lo = Jennifer Lopez)

Если необработанные тексты новостей похожи (вы можете определить пороговое значение), вы можете снова сравнить другие факторы (описано выше).

Некоторые источники новостей обеспечивают хорошие теги в источнике RSS, возможно, вы тоже можете использовать это, но не полагаться на это.

И помните, вам понадобится много тонкой настройки в начале (около 1 года), тогда все будет в порядке.

person fabrik    schedule 18.10.2010
comment
Уважаемый Fabrik, спасибо за ваш ответ... есть ли какой-либо алгоритм или код для этого. - person Gourav; 18.10.2010
comment
Плохая новость: вы должны написать свой собственный. Хороший? Дал много полезной информации ;) - person fabrik; 18.10.2010

Я где-то читал, но у меня нет ссылки, что Google News использует вариант MinHash для обнаружения почти дублирующихся сообщений новостей. И многие из них почти идентичны, исходят от агентства печати с небольшими изменениями, внесенными газетами.

http://en.wikipedia.org/wiki/MinHash

есть ссылка и заявление о том, что Новости Google использовали вариант LSH и MinHash:

Дас, Абхинандан С. и соавт. (2007 г.), «Персонализация новостей Google: масштабируемая совместная онлайн-фильтрация», Материалы 16-й международной конференции по всемирной паутине. АКМ

person Has QUIT--Anony-Mousse    schedule 01.05.2015

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

Если вам нужно вдохновение, ознакомьтесь с исходным кодом Google Living Stories: http://code.google.com/p/living-stories/

person Emil Vikström    schedule 18.10.2010

Я думаю, вам следует попробовать коэффициент Жаккара или сходство Жаккара.

Индекс Жаккара, также известный как коэффициент сходства Жаккара (первоначально придуманный Полом Жаккаром коэффициент общности), представляет собой статистику, используемую для сравнения сходства и разнообразия наборов выборок. Коэффициент Жаккара измеряет сходство между конечными выборочными наборами и определяется как размер пересечения, деленный на размер объединения выборочных наборов. Коэффициент Жаккарда.

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

person OmniPotens    schedule 05.05.2015

Вам нужно будет сделать некоторую форму кластеризации документов. Это включает в себя:

  • Разбивка статей на «функции» (например, вектор ключевых слов TF-IDF)
  • Наличие метрики подобия (например, косинусное сходство, которое может взять две статьи и решить, насколько они похожи)
  • Алгоритм кластеризации, использующий показатель сходства для разбиения статей на кластеры.

Поскольку это новости, и у вас появляются новые статьи, вам, вероятно, понадобится «онлайн» алгоритм, а не пакетный. Найдите инкрементный DBSCAN в качестве примера.

person Octodone    schedule 15.12.2015

Мне удалось это сделать, загрузив все статьи в Elsasticsearch и выполнив more_like_this. Это работает на удивление хорошо. Просто потребовалась некоторая тонкая настройка, чтобы правильно настроить некоторые параметры. Вы также можете использовать бесплатный экземпляр Elasticsearch, размещенный на bonsai.io.

person Moshe G    schedule 29.03.2020