Ответы пользователя по тегу Sphinx
  • Отсев похожих записей?

    Сделать для каждого материала сайт, отправить их на индексацию в Яндекс, если оба будут в индексе, то сможно считать их различным :)

    А если серьезно, то есть сервисы и программы, позволяющие оценивать схожесть текстов (распростаненны у сеошников и их помощников-рерайтеров). С открытыми исходниками не встречал таких, но можно попробовать с авторами договоритться или использовать сервис/программу как внешний сервис/модуль.

    Сам с ходу бы решал бы задачу так:
    — составляем список слов в материале (можно с количеством встречающихся слов)
    — выбрасываем «мусор» (предлоги, союзы, «спасибы» и «пожалуйсты»)
    — получаем список «тегов»
    — ищем материал(ы), список которого наиболее полно совпадает с текущим списком (например, в цикле по текущему списку получаем N первых материалов с этим тегом и берём самый(е) часто встретившийся)
    — смотрим как похож текущий на найденный(е) (критерий задаётся в настройках, например, если больше 80% совпадает, то считаем похожим)
    — если не похож (совпадений меньше 80%), то публикуем
    — если похож, то отправляем пользователю эти сообщения с вопросом «Вы это же имели в виду?», если пользователь говорит «нет», то публикуем, если «да», то ничего не делаем

    После первоначального запуска следим за качеством фильтра (сначала можно следить прозрачно для пользователей, отмечая схожие материалы только в БД/админке) и по необходимости изменяем порог похожести, словарь незначащих слов, может быть вводим понятия синонимов и/или обрезаем слова до основы (открытые продукты кажется даже описывались на хабре недавно), учитываем словосочетания, позицию слов в материале/предложении… В общем постепенно превосходим алгоритмы автоматического опредления дублирующегося контента в гугле/яндексе, продаём им их и забываем про пользователей, которым лень поискать самим перед публикацией :)

    Ещё один подход — сделать нейронную сеть, обучить её на имеющейся базе и подучивать в процессе, но тут я затрудняюсь оценить даже приблизетельно ресурсоемкость и разработки, и собственно анализа. Ну или семантический анализатор разработать :)
    Ответ написан
    Комментировать