Яндекс и парсеры. Методы обхода фильтров

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

Причем предлагаемые на рынке решения не выдерживают критики. Любой спарсенный контент рано или поздно окажется в том самом месте, то есть в месте, хорошо рифмуемом со словом «в топе» с его обратным значением.

Позволю процитировать пару очень интересных документов:
http://download.yandex.ru/company/spamooborona-latest.pdf
http://download.yandex.ru/company/iworld-3.pdf
c некоторыми своими комментариями.

Не столь важно что речь идет об алгоритмах фильтрации почтового спама, описанного в файле spamooborona-latest.pdf , важен сам принцип применяемый для нахождения Яшкой страниц с дабл контент.

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

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

Как вариант использование для части текста <оbject>. Тоесть часть текста перевести в svf или другой объект. Это существенно затруднит подсчет.

Но это уже другая тема, собсно нужна аналитика по вопросу индексации flash которая до сих пор за 7-ю печатаями. Ясно одно – Яшка декомпилирует флеш, но делает это с серьезными ошибками. Таким образом напарсив контент во флеш можно прекрасно наебать обмануть поисковик.

Происхождение копий документов в Интернете может быть различным. Один и тот же документ на одном и том же сервере может отличаться по техническим причинам: быть представлен в разных кодировках и форматах; может содержать переменные вставки – рекламу или текущую дату.

Широкий класс документов в вебе активно копируется и редактируется – ленты новостных агентств, документация и юридические документы, прейскуранты магазинов, ответы на часто задаваемые вопросы и т.д.

Популярные типы изменений: корректура, реорганизация, ревизия, реферирование, раскрытие темы и т.д. Наконец, публикации могут быть скопированы с нарушением авторских прав и изменены злонамеренно с целью затруднить их обнаружение.

Хе хе, старая идея – сделай 1000 копий сайта конкурента и конкурент в дауне. Ну а разбавив демарш против конкурирующего сайта прогоном его контента с его же ссылками по форумам мы получим вполне достойный результат.

Кроме того, индексация поисковыми машинами страниц, генерируемых из баз данных, порождает еще один распространенных класс внешне мало отличающихся документов: анкеты, форумы, страницы товаров в электронных магазинах

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

Однако этот метод не работает для выявления хотя бы чуть-чуть измененных документов. Для решения этой задачи Udi Manber (Уди Манбер) (автор известной программы приближенного прямого поиска agrep) в 1994 году предложил идею [manber1994], а Andrei Broder (Андрей Бродер) в 1997 [broder] придумал название и довел до ума алгоритм «шинглов» (от слова shingles, «черепички, чешуйки»).

Вот его примерное описание:

Для каждого десятисловия текста рассчитывается контрольная сумма (шингл). Десятисловия идут внахлест, с перекрытием, так, чтобы ни одно не пропало. А затем из всего множества контрольных сумм (очевидно, что их столько же, сколько слов в документе минус 9) отбираются только те, которые делятся на, скажем, 25.

А нет ли здеь сермяжной правды? Не “ну скажем”, а так и есть. Еще в http://download.yandex.ru/company/spamooborona-latest.pdf назывались цифры в 10, 30 и 85 для составления шингла.

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

При составлении сингулярной матрицы для учета ключевиков Яшка использует (упрощенно) квадратный корень из суммы слов в тексте. Однако эта величина может отличаться. Оптимально для Яшки NN% а не 10. Причем выявлено это опытным путем.

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

Ведь один совпавший шингл в выборке соответствует примерно 25 совпавшим десятисловиям в полном тексте! Очевидно, что так можно определять процент перекрытия текстов, выявлять все его источники и т.п.

Вот здесь непонятка. А как определить источник? Имхо, только по дате индексации. И здесь опять всплывает высокая скорость индексации блогов. В итоге сплог можно посчитать источником, а великих монстров новостей грязными плагиатчиками.

Этот изящный алгоритм воплотил давнюю мечту доцентов: отныне мучительный вопрос «у кого студент списывал этот курсовик» можно считать решенным! Легко оценить долю плагиата в любой статье!

Вывод 2

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

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

Задача 2

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

Причем стоп-слова и слова не имеющие смысла игнорируются Яшкой для подсчета шингла (см spamooborona-latest.pdf). Точнее они считаются пробелом.

Тупая перестановка предложений и абзацев тоже не катит поскольку шинглы имеют зацикленную структуру.

На примере:

Однажды в студеную зимнюю пору я из лесу вышел. (исходник)
Я из лесу вышел в студеную зимнюю пору однажды. (резульат)

Полное совпадение – плагиат. То есть поскольку пример короткий берем шингл 3, зацикливаем и привет. Нас просчитали.

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

Отлично. При зацикленном шингле 3 повторений не найдено

То есть даже применив цепь Маркова мы получаем дубликат.

Однако проблема в читаемости текстов налицо. Решение задачи видится в добавлении деепричастий с одновременной синонимизацией и добавлением кодов кириллицы вида &1234567; и подстановки вместо назначенных букв.

Простор для экспериментов =))

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

1. Схожую структуру
2. Похожий объем
3. Ту же тематику текстов

С уверенностью на 100% заявлю что к странице со вставками посредством клоакинга не применяется никаких санкций в течении нескольких лет! Мало того, клоачные сайты благополучно висят в топе 5 по своим запросам.

Однако слабо себе представляю связку вордпресс-клоакинг. Брать контент из разных табличек чтоли?

Ну и под занавес данного опуса алгоритм работы плагина:

1. Идем по урл (рсс, фид, хтмл) полный текст
2. Вынимаем контент, парсим в базу.
3. Синонимизируем, добавляем слова, выносим Яшке моск с шингалми
4. Выдаем к себе, кросспостим в ЖЖ и тп
5. Само собой картинки

Вариации:
тексты из одного поста, картинки из другого
заголовок одного поста, текст из другого

Думаем дальше сами, это предварительный набросок

пс
самом собой кодировочку фиксим

ппс
Пара отжигов Сегаловича:

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

Тоесть когда имбицилы с серченжайн заходятся в пароксизме о начале апа, это не ап совсем а “иллюзия свежести”

Основная причины: «редкие» запросы, то есть те, по которым находится менее 100 документов, составляют в
сумме около 30% от всей массы поисков – весьма значительную часть.

Если продавать запрос “лежалое гавно на лопате” его купят полюбому, работаем с низкочастотниками и не паримся ваще.

Доброй охоты всем нам!