@Dahock

Как найти дубликаты новостей, полученных из разных источников?

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

Например, источник А опубликовал новость.
Необходимо её сравнить по контексту (смыслу) с новостями из БД/кэша (предполагаем, что надо сравнивать не со всеми новостями, а с публикациями за последние несколько суток).
Как это сделать?
  • Вопрос задан
  • 161 просмотр
Пригласить эксперта
Ответы на вопрос 2
mayton2019
@mayton2019
Bigdata Engineer
Так-же как и в индексировании документов. Строится некое векторное представление документа.
И потом похожие векторы - указывают на одинаковые (99.9%) документы. Методик векторизации
много. В основном это токенизация слов и свертывание их к хешу.
Ответ написан
@bituke
в таких ситуациях разумно использовать метод косинусного сходства
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.metrics.pairwise import cosine_similarity

# Пример вычисления косинусного сходства для двух текстов
text1 = "какая-то новость и ее описание"
text2 = "какая-то новость и ее описание (дубль)"

# Создаем объект CountVectorizer для преобразования текстов в векторы
vectorizer = CountVectorizer().fit([text1, text2])
vectorized_text = vectorizer.transform([text1, text2])

# Вычисляем косинусное сходство между векторами
cosine_sim = cosine_similarity(vectorized_text)

после просто ставишь if cosine_sim > 95(%) и удаляешь дубликат
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы