Система поиска плагиата

Если у Вас есть сайт с уникальным контентом, вполне логично было бы позаботиться о том, чтобы эту интеллектуальную собственность не своровали. Поисковые боты хоть и стараются индексировать сайты как можно быстрее, но они все еще далеки от идеала. А учитывая тот факт, что Яндекс накладывает санкции за использование не уникального контента, становится даже страшно что-либо публиковать, и уж тем более делать RSS-ленту, по которой в ту же минуту спарсить Ваш уникальный текст не составит никакого труда. А если у Вас целый штат редакторов и статьи выходят в день по десять штук? Конечно, статьи крали и будут красть. Далеко не всегда для наживы на Sape или с другими корыстными целями, иногда и просто так возникает желание поделиться интересным материалом. Но ставить ссылку на оригинал же так лениво! Тем не менее, естественный рост ссылок, пусть даже со скопированного текста, весьма улучшает позиции в выдаче, да и в целом очень положительно влияет на траст. Так что мешает нам отслеживать копипастеров и как минимум просить их поставить на нас ссылочку? Ради этой цели и было задумано построить систему автоматического поиска плагиата. Сначала это казалось чем-то нереальным, трудоемким и мучительным, но, как оказалось, все намного проще. Итак, систему можно разбить на три части:
  • базу ваших уникальных текстов с URL-ами страниц, где они находятся;
  • модуль поиска копированных статей и проверки обратных ссылок;
  • модуль рассылки просьб и угроз копипастерам.
Сделать первый пункт не составит труда любому программисту. Третий чуть сложнее, но тоже довольно прост. Самая интересная начинка этой системы как раз и находится во втором модуле – собственно поиска плагиата. Его то мы и рассмотрим подробнее. Алгоритм поиска похожего текста чаще всего основан на шинглах. Шингл – небольшой кусок текста без знаков препинаний, чаще всего состоит из 3-7 слов. Например, это может быть предложение или его часть. Чем больше совпадений таких шинглов в двух текстах, тем меньше уникальность и больше сходство. Подходим к первой процедуре – разбиваем текст на шинглы, а точнее выделяем из текста шинглы.

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

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

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

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

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

Ссылка может быть активной и неактивной. “Да какая же это ссылка, когда она неактивная?” – спросите вы. Но так бывает, и эту ситуацию нам нужно учитывать. В принципе, упоминание нашего сайта в таком виде тоже дает свои плюсы (цитирование), но ссылочка все-таки нам больше по душе. С помощью регулярных выражений мы сначала находим упоминание нашего сайта, а потом проверяем ссылка ли это. Сохраняем результат в базе Окончательный этап – рассылка угроз-просьб-уведомлений. У нас должно быть два шаблона письма – для тех, где стоит упоминание и тех, у кого вообще ничего нет. Рассылка должна быть планируемой, т.е. не единоразовой. Очередь писем должна обрабатываться постепенно и вызываться, например, кроном (планировщиком) через какие-нибудь промежутки времени. Да, чуть не забыл, кому же рассылать письма? Ну, можно парсить главную на предмет емэйлов техподдержки или страниц обратной связи и попытаться парсить емэйлы уже с них, но… это все не стабильно. Самый простой вариант – отсылать письма на адрес владельца домена, который можно получить из whois. Вот, пожалуй, и все. Стратегию рассылок выбирать Вам – кстати, можно организовать повторные письма с изменением интонации и увеличением наездов. Эта система в данный момент работает у нас стабильно. Каждый день приходит 10-30 ответов от извиняющихся владельцев сайтов, которые исправились и поставили ссылки. Есть, конечно, и наглецы, вступающие в перепалку, но ими можно пренебречь. Если у Вас есть сайт с уникальным контентом, вполне логично было бы позаботиться о том, чтобы эту интеллектуальную собственность не своровали. Поисковые боты хоть и стараются индексировать сайты как можно быстрее, но они все еще далеки от идеала. А учитывая тот факт, что Яндекс накладывает санкции за использование не уникального контента, становится даже страшно что-либо публиковать, и уж тем более делать RSS-ленту, по которой в ту же минуту спарсить Ваш уникальный текст не составит никакого труда. А если у Вас целый штат редакторов и статьи выходят в день по десять штук? Конечно, статьи крали и будут красть. Далеко не всегда для наживы на Sape или с другими корыстными целями, иногда и просто так возникает желание поделиться интересным материалом. Но ставить ссылку на оригинал же так лениво! Тем не менее, естественный рост ссылок, пусть даже со скопированного текста, весьма улучшает позиции в выдаче, да и в целом очень положительно влияет на траст. Так что мешает нам отслеживать копипастеров и как минимум просить их поставить на нас ссылочку? Ради этой цели и было задумано построить систему автоматического поиска плагиата. Сначала это казалось чем-то нереальным, трудоемким и мучительным, но, как оказалось, все намного проще. Итак, систему можно разбить на три части:
  • базу ваших уникальных текстов с URL-ами страниц, где они находятся;
  • модуль поиска копированных статей и проверки обратных ссылок;
  • модуль рассылки просьб и угроз копипастерам.
Сделать первый пункт не составит труда любому программисту. Третий чуть сложнее, но тоже довольно прост. Самая интересная начинка этой системы как раз и находится во втором модуле – собственно поиска плагиата. Его то мы и рассмотрим подробнее. Алгоритм поиска похожего текста чаще всего основан на шинглах. Шингл – небольшой кусок текста без знаков препинаний, чаще всего состоит из 3-7 слов. Например, это может быть предложение или его часть. Чем больше совпадений таких шинглов в двух текстах, тем меньше уникальность и больше сходство. Подходим к первой процедуре – разбиваем текст на шинглы, а точнее выделяем из текста шинглы.

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

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

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

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

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

Ссылка может быть активной и неактивной. “Да какая же это ссылка, когда она неактивная?” – спросите вы. Но так бывает, и эту ситуацию нам нужно учитывать. В принципе, упоминание нашего сайта в таком виде тоже дает свои плюсы (цитирование), но ссылочка все-таки нам больше по душе. С помощью регулярных выражений мы сначала находим упоминание нашего сайта, а потом проверяем ссылка ли это. Сохраняем результат в базе Окончательный этап – рассылка угроз-просьб-уведомлений. У нас должно быть два шаблона письма – для тех, где стоит упоминание и тех, у кого вообще ничего нет. Рассылка должна быть планируемой, т.е. не единоразовой. Очередь писем должна обрабатываться постепенно и вызываться, например, кроном (планировщиком) через какие-нибудь промежутки времени. Да, чуть не забыл, кому же рассылать письма? Ну, можно парсить главную на предмет емэйлов техподдержки или страниц обратной связи и попытаться парсить емэйлы уже с них, но… это все не стабильно. Самый простой вариант – отсылать письма на адрес владельца домена, который можно получить из whois. Вот, пожалуй, и все. Стратегию рассылок выбирать Вам – кстати, можно организовать повторные письма с изменением интонации и увеличением наездов. Эта система в данный момент работает у нас стабильно. Каждый день приходит 10-30 ответов от извиняющихся владельцев сайтов, которые исправились и поставили ссылки. Есть, конечно, и наглецы, вступающие в перепалку, но ими можно пренебречь. Автор: нештатный корреспондент Источник: http://proluboff.ru/2010/07/sistema-poiska-plagiata/
Google Buzz Vkontakte Facebook Twitter Google Bookmarks Digg Закладки Yandex Zakladok.net Reddit delicious БобрДобр.ru Memori.ru МоёМесто.ru

Добавить комментарий