Вопрос

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

Как бы вы обработали и сравнили содержимое двух веб-сайтов на предмет плагиата?

Я думаю о чем-то вроде этого псевдокода:

// extract text
foreach website in websites
  crawl website - store structure so pages are only scanned once
  extract text blocks from all pages - store this is in list

// compare      
foreach text in website1.textlist
  compare with all text in website2.textlist

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

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

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

Я реализую это на C # (возможно, ASP.NET).

Мне очень интересен любой ваш вклад или совет, поэтому, пожалуйста, стреляйте!:)

Это было полезно?

Решение

Мой подход к этой проблеме заключался бы в поиске в Google конкретных, довольно уникальных блоков текста, авторские права на которые вы пытаетесь защитить.

Сказав это, если вы хотите создать свое собственное решение, вот несколько комментариев:

  • Уважение robots.txt .Если они пометили сайт как запрещенный для обхода, скорее всего, они в любом случае не пытаются извлечь выгоду из вашего контента.
  • Вам нужно будет время от времени обновлять сохраненную вами структуру сайта по мере изменения веб-сайтов.
  • Вам нужно будет правильно отделить текст от HTML-тегов и JavaScript.
  • По сути, вам нужно будет выполнить полнотекстовый поиск по всему тексту страницы (с удалением тегов / скрипта) для текста, который вы хотите защитить.Для этого существуют хорошие опубликованные алгоритмы.

Другие советы

Вероятно, вас больше заинтересует обнаружение фрагментов.например, на многих страницах будет написано слово "home", а вам все равно.Но маловероятно, что на многих страницах будут точно такие же слова на всей странице.Таким образом, вы, вероятно, захотите сравнить и сообщить о страницах, которые имеют исключительные совпадения длиной 4,5,6,7,8 и т.д. слов и подсчетов для каждой длины.Назначьте им оценку и взвесьте их, и если вы превысите свое "магическое число", сообщите о предполагаемых копировальщиках.

Для C # вы можете использовать WebBrowser(), чтобы получить страницу и довольно легко получить ее текст.Извините, нет примера кода, удобного для копирования / вставки, но в MSDN обычно есть довольно хорошие образцы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top