Комментарии: Часть 1. Алгоритм шинглов для веб-документов http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/ Статьи по SEO, дизайну и программированию. Переводы на веб-тематику. Исследования и наработки в области интернет-технологий. Tue, 19 Sep 2017 15:34:18 +0000 hourly 1 http://wordpress.org/?v=3.9.2 Автор: Игорь http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-115149 Thu, 13 Oct 2011 19:52:10 +0000 http://www.codeisart.ru/?p=1585#comment-115149 Поддерживаю вопрос о выборе функций — всегда ли они должны быть типичными хешевыми?

]]>
Автор: Алексей http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-71750 Sun, 30 Jan 2011 12:23:44 +0000 http://www.codeisart.ru/?p=1585#comment-71750 Добрый день. А Вы не могли бы рассказать про то, какие 84 функции можно использовать в качестве хешей или отослать туда где об этом рассказывается? спасибо.

]]>
Автор: Skaizer http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-18841 Thu, 08 Apr 2010 18:58:58 +0000 http://www.codeisart.ru/?p=1585#comment-18841 Нет, это не я писал шингл эксперт :)
Реализацию врядли буду заниматься, т.к. к сожалению времени катастрофически не хватает, что пришлось на N-ое количество времени забросить блог.
Сам я пользуюсь упрощенной версией данного алгоритма, которая так же есть у меня в блоге.

]]>
Автор: Аватар http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-18238 Mon, 15 Mar 2010 00:41:37 +0000 http://www.codeisart.ru/?p=1585#comment-18238 Хочу задать вопрос автору, Это не вы случайно написали программу шингл эксперт?
Если нет, то хочется знать, вы реализуете вышеописанный алгоритм в виде программы?

]]>
Автор: Ukrbox http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-17687 Sat, 20 Feb 2010 07:31:06 +0000 http://www.codeisart.ru/?p=1585#comment-17687 Как по мне, так основная проблема это канонизация текста. Это требует понимания лингвистических особенностей рассматриваемого текста и такое каноническое преобразование может быть неоднозначным. Имхо кончено.

]]>
Автор: Виктор http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-16215 Sun, 27 Dec 2009 20:41:23 +0000 http://www.codeisart.ru/?p=1585#comment-16215 С наступающим Новым годом! Процветания и творческих успехов. Отличная компания, отличные люди! Так держать!

]]>
Автор: TepKuH http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-14960 Tue, 24 Nov 2009 13:08:25 +0000 http://www.codeisart.ru/?p=1585#comment-14960 >в принципе изменение любой последовательности слов путем добавления нового слова ее разрушит
Это я согласен. Но добавление какого либо слова-фразы к тексту это довольно таки не простая задача(если слово-фраза в тему, а не с балды). Речь то как раз именно о перестановке слов. Вы просто выше сказали что определить перестановку можно на этапе канонизации. Вот я не очень понимаю по какому алгоритму.
Есть еще одна слабость алгоритма, но она на конечной фазе(вычисление процента схожести) и правда относится к Вашей тема про «…поиск нечетких дубликатов текста»
Она(слабость) заключается в том что процент вычисляется как мне кажется не правильно. Объясню на примере: есть у нас контент 10кбайт. Мы берем от туда скажем первый абзац объемом ~1кбайт. Т.е. ничего не меняли, ничего не правили, берем просто какой то небольшой(по сравнению с общим объемом) кусок и в данном случаи процент похожести документов будет крайне низкий. Хотя маленький кусок взят из большого.

]]>
Автор: Skaizer http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-14940 Mon, 23 Nov 2009 19:14:58 +0000 http://www.codeisart.ru/?p=1585#comment-14940 TepKuH , в принципе изменение любой последовательности слов путем добавления нового слова ее разрушит, точнее разрушит столько последовательностей, какова длина шингла. ущерб качеству, который это может нанести будет различен на различных объемах текста.

]]>
Автор: TepKuH http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-14849 Fri, 20 Nov 2009 21:45:33 +0000 http://www.codeisart.ru/?p=1585#comment-14849 >»Но определить последовательности слов можно на этапе канонизации, тогда слова для двух текстов будут выстроены порядок по одинаковому алгоритму»
Не понятно что имелось ввиду. По какому алгоритму Вы предлагаете выстраивать слова? по алфавиту? Но тогда добавление в текст хотя бы 1 слова уже сломает все построение.
PS. Спасибо за алгоритм. Очень интересный.

]]>
Автор: Skaizer http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-13633 Wed, 21 Oct 2009 19:48:15 +0000 http://www.codeisart.ru/?p=1585#comment-13633 Если поменять соседние слова местами, то алгоритм определит текст уникальным. Но определить последовательности слов можно на этапе канонизации, тогда слова для двух текстов будут выстроены порядок по одинаковому алгоритму.

]]>
Автор: булат http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-13342 Sun, 11 Oct 2009 19:25:48 +0000 http://www.codeisart.ru/?p=1585#comment-13342 А если в тексте поменять местами соседние слова то какой результат даст этот алгоритм при сравнение получившегося текста и исходного?

]]>
Автор: Skaizer http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-12034 Sun, 06 Sep 2009 19:48:12 +0000 http://www.codeisart.ru/?p=1585#comment-12034 Извиняюсь, что так не сразу отвечаю, был в другом городе на конференции, времени почитать комменты в блоге не было. Итак:

  1. Размножать тексты смысл имеет. Я в практике активно использую размноженные статьи, хотя для жирных площадок статьи использую уникальные. Для площадок < =8$ - размноженные. Generating The Web можно использовать, но из обще распространенного софта я предпочитаю Allsubmitter.
  2. Длина шингла полностью зависит от длины текста. И не всегда чем меньше длина, тем лучше отбор, порой короткий шингл может отбросить большое количество уникальных статей. На практике для текстов в 2000-3500 символов я использую длину шингла в 8 слов, и отбираю статьи с уникальностью от 96%. Для большего текста можно использовать длину шингла в 9 или 10 слов.

См. статью размножение статей в Allsubmitter. В статье я как раз описал отличие принципа размножения Allsubmitter-ом от Generating The Web (в статье, где упоминается другой софт). Generating The Web уж слишком долго генерирует достаточное количество статей, ввиду заложенного алгоритма перебора синонимов.

]]>
Автор: Алексей http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-11765 Tue, 01 Sep 2009 11:07:30 +0000 http://www.codeisart.ru/?p=1585#comment-11765 Огромное спасибо за доходчивое объяснение!
Тогда у меня к вам вопросы несколько практического плана :)
1. Есть ли смысл размножать тексты на автомате? Скажем, Generating The Web, например. Тем более, если предположить, что ПС использует семантику (обычная замена слов на синонимы в этом случае не должна сработать)
2. Второй вопрос, вытекает из первого :) Какую, по мнению автора, длину шингла использовать при проверке на уникальность (понимаю, что чем длина шингла меньше — тем выше вероятность получить уникальный контент, но все же интересно послушать Ваше мнение)

]]>
Автор: Skaizer http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-11761 Tue, 01 Sep 2009 07:47:26 +0000 http://www.codeisart.ru/?p=1585#comment-11761 Здравствуйте, Алексей.

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

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

Далее 84 элемента массива случайных значений для первого текста ставятся в соответствие 84м элементам массива случайных значений второго текста. То есть сравниваем следующим образом (пример на яыке Python):

# A => список из 84 элементов случайной выборки из матрицы контрольных сумм для ТЕКСТА_1 (содержит минимальные значения каждой из строк)
# B => список из 84 элементов случайной выборки из матрицы контрольных сумм для ТЕКСТА_2 (содержит минимальные значения каждой из строк)
for i in range(84):
    if A[i] == B[i]:
        #Прибавляем +1 к количеству совпавших шинглов

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

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

Надеюсь, смог доступно объяснить :)

]]>
Автор: Алексей http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-11753 Mon, 31 Aug 2009 20:59:19 +0000 http://www.codeisart.ru/?p=1585#comment-11753 Во-первых, огромное спасибо за проделанный труд автору!
Тема щекотливая, интересная и в тоже время сложная. Есть пару вопросов.
(1 вопрос) Почему используют РАЗНЫЕ статические функции?

Насколько я понял, двумерный массив состоит: 84 строки (стат. функции) и N’го числа столбцов (зависит от численного количества шинглов).
(2 вопрос) Если одномерный массив формируется случайным образом для каждого текста, то в чем смысл проверки? Поясню. Скажем для первого текста случайно выбрались только такие то функции, а для второго текста — другие, т.е. их контрольные суммы не сравнить. Или я не правильно понял?

]]>
Автор: Александр http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-11600 Mon, 24 Aug 2009 19:07:10 +0000 http://www.codeisart.ru/?p=1585#comment-11600 Серьезная и понятная статья (правда, в области с хэшами не совсем понятно, но это МНЕ и, видимо, потому, что я не программист). Нечасто хочется сказать «браво» блоггеру, но в данный момент хочется. Приятно видеть «Ученого о СЕО», который зрит в корень ПС. Еще раз «браво» — настоящий «хакерский подход» (я сейчас совсем не про киберпреступников говорю, а именно про подход к решению задач).

]]>
Автор: Skaizer http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-11107 Thu, 06 Aug 2009 08:21:46 +0000 http://www.codeisart.ru/?p=1585#comment-11107 Jack, правильнее было бы сказать, что оптимальный способ чистки зависит от типа сравниваемых документов, если сравниваются статьи, то выкидывать предлоги, союзы, знаки препинания например, если это HTML документы, то чистить текст от тегов. Использовать морфологический анализ — по желанию, как вы правильно выразились — это не слишком простая задача, но существуют готовые библиотеки, которые можно использовать.
Реализовывать я врядли буду данный алгоритм, времени нет абсолютно, к сожалению, да и смысла пока нету, т.к. обрабатывать миллионы страниц мне не надо. А для фильтрации уникальных статей, предназначенных для продвижения сайтов мне хватает своей реализации.

]]>
Автор: Jack http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-11037 Tue, 04 Aug 2009 09:58:50 +0000 http://www.codeisart.ru/?p=1585#comment-11037 Отличная и понятная статья.
Правильно ли я понял, что на этапе канонизации — множество вариантов, и оптимальный способ «чистки» зависит от набора сравниваемых документов? Если да, то есть ли какие-нибудь рекомендации по выбору варианта канонизации. Использование морфологического и лексического анализа — это не слишком простая задача..

P.S. Ожидается ли реализация на том же Python?

]]>
Автор: CakePHP. Как создать модуль без привязки к таблице в базе данных http://www.codeisart.ru/blog/part-1-shingles-algorithm-for-web-documents/comment-page-1/#comment-11002 Sun, 02 Aug 2009 10:26:47 +0000 http://www.codeisart.ru/?p=1585#comment-11002 [...] Алгоритм шинглов для веб-документов New [...]

]]>