Возникла задача проверить большой массив статей на уникальность между собой. Не долго думая решил написать скрипт для анализа текстов на уникальность по методу шинглов (shingles). Подобные алгоритмы используются поисковыми системами для выявления дублей. Входные данные запрашиваются у пользователя или берутся из MySQL базы данных. На выходе получается отчёт с процентов совпадения текста в статьях. Плюс к этому создаётся таблица с результатами анализа, для последющей обработки другими скриптами. Например, их можно удалить или сгруппировать.

Скрипт имеет 3 режима работы:
# Анализ двух текстов, введёных вручную. Вариант для
# Анализ введёного текста со всеми текстами из базы данных. Этот способ отличино подойдёт для сравнивания ориганала статьи с её синонимизированными копиями, для выявления неудачных вариантов.
# Анализ всех уникальных пар текстов из базы данных. Такой анализ подойдёт для уже готовых баз статей, например, сграббленных.

На выходе получается новая таблица scanning, содержащая процент схожести (поле similarity) между двумя текстами (поля original и copy содержат идентификаторы статей входной таблицы). Значение варьируется от 0 до 100%, чем оно больше – тем меньше уникальность текстов. Был проведён тестовый прогон по базе 66 560 уникальных пар текстов с длиной шингла 3. Максимальное сходство составляло 1,39%. Операция занира в районе 4-х часов.

Настройка:
# Откройте файл со скриптом и отредактируйте данные для подключения к базе данных $host, $user, $pass и $dbname.
# Далее нужно отредактировать переменные $table, $idcol, $namecol и $textcol. Они содержат данные о структуре таблицы с текстами. По умолчанию настроен на WordPress.
# Переменная $shinglelen определяет длину шингла. Чем меньше длина текста – тем меньше должен быть шингл. Чем меньше шингл – тем меньше точность. Если средний размер текста менее 500 символов, то размер шингла стоит установить не более 3. Для текстов от 4 000 символов можно рассматривать варианты от 5. Ставить длину шигла в 1 не рекомендуется, так как будет слишком большое сходство для текстов одной тематики.
# Установите правильную кодировку базы данных. Например mysql_query(‘SET NAMES utf8′); или mysql_query(‘SET NAMES cp1251′);.
# В скрипте присутствует функция очисти текста от стоп-слов, чтобы её отключить закомментируйте $elements = clean_word($elements);

Скачать скрипт сравнения статей на уникальность методом шинглов.

Все вопросы и предложения, а так же замечания по работе скрипта  пишите в комментарии.

Опубликовано 13.02.2009в 00:12. В рубриках: PHP, SEO. Вы можете следить за ответами к этой записи через RSS 2.0. Вы можете оставить свой отзыв или трекбек со своего сайта.

Отзывов (3) на «Скрипт проверки уникальнсти текста по методу шинглов»

  1. сергей on 22.12.2009 в 21:14

    Было бы лучше, если бы это все происходило в браузере, по нажатию кнопки. Как есть скрипт подсветки ссылок. Настроил длину шингла, нажал кнопочку, и увидел подсвеченные не уникалы, или проценты в окошке.Вот это было бы, ДА!!!

  2. seoplayer on 02.07.2010 в 20:45

    итак скрипт отличный!
    подобные вещи не стареют, а я за 5 минут добавил ещё и добавление статей в базу и удаление при определенном проценте схожести из базы =)

  3. Vera on 26.09.2010 в 12:20

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

Оставьте отзыв

Это не спам.
сделано dimoning.ru