Система поиска плагиата (пособие по созданию)

genixxx
На сайте с 19.05.2009
Offline
57
908

Этот пост - это не реклама какого-нибудь сервиса, которым могут воспользоваться все. Это больше похоже на техническое задание сервиса по поиску плагиата для программистов. Например, у нас небольшое информ-агентство и пользоваться услугами сервисов поиска плагиата слишком затратно, поэтому разработали свое. И мы не жадные, делимся идеями по созданию ;-). Этот пост я уже публиковал на хабре в песочнице, но инвайт так и не обломился, а пост со временем удалился. Так что пишу сюда.

Отвечу на все вопросы, если кто заинтересуется.

_________________________________________________

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

Конечно, статьи крали и будут красть. Далеко не всегда для наживы на Sape или с другими корыстными целями, иногда и просто так возникает желание поделиться интересным материалом. Но ставить ссылку на оригинал же так лениво! Тем не менее, естественный рост ссылок, пусть даже со скопированного текста, весьма улучшает позиции в выдаче, да и в целом очень положительно влияет на траст. Так что мешает нам отслеживать копипастеров и как минимум просить их поставить на нас ссылочку?

Ради этой цели и было задумано построить систему автоматического поиска плагиата. Сначала это казалось чем-то нереальным, трудоемким и мучительным, но, как оказалось, все намного проще. Итак, систему можно разбить на три части:

* базу ваших уникальных текстов с URL-ами страниц, где они находятся;

* модуль поиска копированных статей и проверки обратных ссылок;

* модуль рассылки просьб и угроз копипастерам.

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

Алгоритм поиска похожего текста чаще всего основан на шинглах. Шингл – небольшой кусок текста без знаков препинаний, чаще всего состоит из 3-7 слов. Например, это может быть предложение или его часть. Чем больше совпадений таких шинглов в двух текстах, тем меньше уникальность и больше сходство. Подходим к первой процедуре – разбиваем текст на шинглы, а точнее выделяем из текста шинглы.

Выделяем шинглы

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


Организуем поиск

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

Здесь нужно учесть, что в результате выдачи могут быть три разных адреса для одного и того же сайта. Один, к примеру, на главную страницу, где мелькнул кусочек статьи, вторая ссылка на страницу раздела статей, к которой отнесли нашу статью, а третья – это она самая статья, сворованная у нас. Выделить среди этих трех страниц одну быстрее всего можно так – взять ту страницу, у которой адрес самый длинный.


Определяем обратную ссылку

Ссылка может быть активной и неактивной. “Да какая же это ссылка, когда она неактивная?” – спросите вы. Но так бывает, и эту ситуацию нам нужно учитывать. В принципе, упоминание нашего сайта в таком виде тоже дает свои плюсы (цитирование), но ссылочка все-таки нам больше по душе. С помощью регулярных выражений мы сначала находим упоминание нашего сайта, а потом проверяем ссылка ли это. Сохраняем результат в базе

Окончательный этап – рассылка угроз-просьб-уведомлений. У нас должно быть два шаблона письма – для тех, где стоит упоминание и тех, у кого вообще ничего нет. Рассылка должна быть планируемой, т.е. не единоразовой. Очередь писем должна обрабатываться постепенно и вызываться, например, кроном (планировщиком) через какие-нибудь промежутки времени.

Да, чуть не забыл, кому же рассылать письма? Ну, можно парсить главную на предмет емэйлов техподдержки или страниц обратной связи и попытаться парсить емэйлы уже с них, но… это все не стабильно. Самый простой вариант – отсылать письма на адрес владельца домена, который можно получить из whois.

Вот, пожалуй, и все. Стратегию рассылок выбирать Вам – кстати, можно организовать повторные письма с изменением интонации и увеличением наездов. Эта система в данный момент работает у нас стабильно. Каждый день приходит 10-30 ответов от извиняющихся владельцев сайтов, которые исправились и поставили ссылки. Есть, конечно, и наглецы, вступающие в перепалку, но ими можно пренебречь.

Система тематического комментирования блогов (http://www.plati.ru/asp/pay.asp?idd=1044022)
genixxx
На сайте с 19.05.2009
Offline
57
#1

Когда lulleo забанят уже? Уже 20 постов намусорил

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий