<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Комментарии: Python: Алгоритм Шинглов — поиск нечетких дубликатов текста</title>
	<atom:link href="http://www.codeisart.ru/python-shingles-algorithm/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.codeisart.ru/python-shingles-algorithm/</link>
	<description>Статьи по SEO, дизайну и программированию. Переводы на веб-тематику. Исследования и наработки в области интернет-технологий.</description>
	<lastBuildDate>Fri, 03 Feb 2012 14:59:03 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Автор: Антон</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-21208</link>
		<dc:creator>Антон</dc:creator>
		<pubDate>Sat, 17 Jul 2010 21:57:11 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-21208</guid>
		<description>Такой момент.. если имеем два совершенно непохожих текста (или запускаем алгоритм с большой длиной шинглов/малыми текстами), то получаем ексепшн ZeroDivisionError.
Собственно неплохо было бы его ловить.
Ну и еще момент производительности.. мне кажется выражения-генераторы будут предпочтительнее генераторов списков.</description>
		<content:encoded><![CDATA[<p>Такой момент.. если имеем два совершенно непохожих текста (или запускаем алгоритм с большой длиной шинглов/малыми текстами), то получаем ексепшн ZeroDivisionError.<br />
Собственно неплохо было бы его ловить.<br />
Ну и еще момент производительности.. мне кажется выражения-генераторы будут предпочтительнее генераторов списков.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Skaizer</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-18840</link>
		<dc:creator>Skaizer</dc:creator>
		<pubDate>Thu, 08 Apr 2010 18:56:18 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-18840</guid>
		<description>Запускайте в ветке 2.* : 2.5 или 2.6. ну и на ранних тоже должна работать. В ветке 3.* не будет, под нее нужно специально переписывать.</description>
		<content:encoded><![CDATA[<p>Запускайте в ветке 2.* : 2.5 или 2.6. ну и на ранних тоже должна работать. В ветке 3.* не будет, под нее нужно специально переписывать.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Дмитрий</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-18836</link>
		<dc:creator>Дмитрий</dc:creator>
		<pubDate>Thu, 08 Apr 2010 15:01:42 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-18836</guid>
		<description>А какой версией Python можно запустить эту программку? у меня на данный момент последняя и выдаёт синтаксические ошибки.</description>
		<content:encoded><![CDATA[<p>А какой версией Python можно запустить эту программку? у меня на данный момент последняя и выдаёт синтаксические ошибки.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: dron</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-17892</link>
		<dc:creator>dron</dc:creator>
		<pubDate>Sun, 28 Feb 2010 10:18:23 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-17892</guid>
		<description>Клиника! Зачем так сильно уникалить? Смысл? 80 процентов отличается от возможных дубликатов, уже нормально! Никто ничего не склит из ПС.</description>
		<content:encoded><![CDATA[<p>Клиника! Зачем так сильно уникалить? Смысл? 80 процентов отличается от возможных дубликатов, уже нормально! Никто ничего не склит из ПС.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Евгений</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-16174</link>
		<dc:creator>Евгений</dc:creator>
		<pubDate>Sat, 26 Dec 2009 11:05:53 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-16174</guid>
		<description>Цитата 1:
Обратите внимание, задачей не стоит определить абсолютное значение схожести объектов, а так же выделения в каждом из объектов схожих частей. Нам необходимо только предположить, являются ли объекты почти дубликатами или нет.

Цитата 2:
Вот и все, функция нам вернет процент схожести двух текстов.

Вопрос: а как ответить на вопрос являются ли объекты почти дубликатами или нет? Если % схожести больше некоторого заданного m, то тексты считать почти одинаковыми, иначе - разными? Или есть более изощренные методы?)</description>
		<content:encoded><![CDATA[<p>Цитата 1:<br />
Обратите внимание, задачей не стоит определить абсолютное значение схожести объектов, а так же выделения в каждом из объектов схожих частей. Нам необходимо только предположить, являются ли объекты почти дубликатами или нет.</p>
<p>Цитата 2:<br />
Вот и все, функция нам вернет процент схожести двух текстов.</p>
<p>Вопрос: а как ответить на вопрос являются ли объекты почти дубликатами или нет? Если % схожести больше некоторого заданного m, то тексты считать почти одинаковыми, иначе &#8212; разными? Или есть более изощренные методы?)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Проект 110 кв</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-15620</link>
		<dc:creator>Проект 110 кв</dc:creator>
		<pubDate>Mon, 07 Dec 2009 21:54:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-15620</guid>
		<description>Это что получается, что теперь не возможно написать уникальную статью и попробовать размножить её?</description>
		<content:encoded><![CDATA[<p>Это что получается, что теперь не возможно написать уникальную статью и попробовать размножить её?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Skaizer</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-11108</link>
		<dc:creator>Skaizer</dc:creator>
		<pubDate>Thu, 06 Aug 2009 08:38:57 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-11108</guid>
		<description>Да, в данном варианте семантика не применяется.</description>
		<content:encoded><![CDATA[<p>Да, в данном варианте семантика не применяется.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Dennis</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-11001</link>
		<dc:creator>Dennis</dc:creator>
		<pubDate>Sun, 02 Aug 2009 10:04:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-11001</guid>
		<description>Т.е. как я понял здесь не применяется семантика. Думаю посиковики должны стремиться к оценке дубликатов в которых была сделана подмена слов синонимами.</description>
		<content:encoded><![CDATA[<p>Т.е. как я понял здесь не применяется семантика. Думаю посиковики должны стремиться к оценке дубликатов в которых была сделана подмена слов синонимами.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Дмитрий</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-7892</link>
		<dc:creator>Дмитрий</dc:creator>
		<pubDate>Sat, 16 May 2009 07:12:08 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-7892</guid>
		<description>Очень интересуют возможные алгоритмы цитирования заимствованных участков текста. К сожалению не нашел ни одного примера реализации.</description>
		<content:encoded><![CDATA[<p>Очень интересуют возможные алгоритмы цитирования заимствованных участков текста. К сожалению не нашел ни одного примера реализации.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Skaizer</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-5715</link>
		<dc:creator>Skaizer</dc:creator>
		<pubDate>Tue, 31 Mar 2009 08:18:07 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-5715</guid>
		<description>Да, к сожалению времени сейчас нет абсолютно, посты в блог пишу реже. Как загружен буду поменьше, обязательно напишу про него. А пока почитать про него можно по ссылкам: http://www.spamtest.ru/document.html?context=15932&amp;pubid=32 и http://rcdl2007.pereslavl.ru/papers/paper_65_v1.pdf . 
В статье постараюсь поподробнее расписать метод реализации этого алгоритма.</description>
		<content:encoded><![CDATA[<p>Да, к сожалению времени сейчас нет абсолютно, посты в блог пишу реже. Как загружен буду поменьше, обязательно напишу про него. А пока почитать про него можно по ссылкам: <a href="http://www.spamtest.ru/document.html?context=15932&#038;pubid=32" rel="nofollow">http://www.spamtest.ru/document.html?context=15932&#038;pubid=32</a> и <a href="http://rcdl2007.pereslavl.ru/papers/paper_65_v1.pdf" rel="nofollow">http://rcdl2007.pereslavl.ru/papers/paper_65_v1.pdf</a> .<br />
В статье постараюсь поподробнее расписать метод реализации этого алгоритма.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Владимир</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-5712</link>
		<dc:creator>Владимир</dc:creator>
		<pubDate>Tue, 31 Mar 2009 07:00:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-5712</guid>
		<description>Skaizer вы обещали рассказать об алгоритме супершинглов, когда от вас можно ждать его? Или хотя бы скажите где можно посмотреть? Спасибо.</description>
		<content:encoded><![CDATA[<p>Skaizer вы обещали рассказать об алгоритме супершинглов, когда от вас можно ждать его? Или хотя бы скажите где можно посмотреть? Спасибо.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Skaizer</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-4394</link>
		<dc:creator>Skaizer</dc:creator>
		<pubDate>Wed, 25 Feb 2009 20:34:20 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-4394</guid>
		<description>Для сравнения коротких текстов алгоритмом шинглов можно разбивать текст не по словно, как в моей реализации, а посимвольно, например по 10 символов, остальную часть алгоритма можно оставить как есть.
Так же на хабре предложен &lt;a href=&quot;http://habrahabr.ru/blogs/development/52120/&quot; rel=&quot;nofollow&quot;&gt;несколько иной способ&lt;/a&gt; нахождения почти дублей для коротких текстов.</description>
		<content:encoded><![CDATA[<p>Для сравнения коротких текстов алгоритмом шинглов можно разбивать текст не по словно, как в моей реализации, а посимвольно, например по 10 символов, остальную часть алгоритма можно оставить как есть.<br />
Так же на хабре предложен <a href="http://habrahabr.ru/blogs/development/52120/" rel="nofollow">несколько иной способ</a> нахождения почти дублей для коротких текстов.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Jack</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-4393</link>
		<dc:creator>Jack</dc:creator>
		<pubDate>Wed, 25 Feb 2009 20:11:13 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-4393</guid>
		<description>Друзья, а если тексты достаточно короткие? 
Ну скажем от 5 до 50 слов :) Анекдоты, цитаты, афоризмы и пр.
Можно ли как-нибудь  выявить схожесть двух таких текстов между собой?</description>
		<content:encoded><![CDATA[<p>Друзья, а если тексты достаточно короткие?<br />
Ну скажем от 5 до 50 слов <img src='http://www.codeisart.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' />  Анекдоты, цитаты, афоризмы и пр.<br />
Можно ли как-нибудь  выявить схожесть двух таких текстов между собой?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Андрей</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-3296</link>
		<dc:creator>Андрей</dc:creator>
		<pubDate>Thu, 29 Jan 2009 08:06:44 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-3296</guid>
		<description>2 Андрей:

Делаем дор, наполняем его распространёнными модифицированными текстами с разной &quot;глубиной&quot; шинглирования, смотрим на результат его работы, на основе статистики определяем оптимальный алгоритм модификации текста :)</description>
		<content:encoded><![CDATA[<p>2 Андрей:</p>
<p>Делаем дор, наполняем его распространёнными модифицированными текстами с разной &#171;глубиной&#187; шинглирования, смотрим на результат его работы, на основе статистики определяем оптимальный алгоритм модификации текста <img src='http://www.codeisart.ru/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Skaizer</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-3152</link>
		<dc:creator>Skaizer</dc:creator>
		<pubDate>Sat, 24 Jan 2009 21:37:21 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-3152</guid>
		<description>PPS: можете постучать в аську 86пять883 или в GTalk simskaiz[at]gmail.com, расскажу поподробнее.</description>
		<content:encoded><![CDATA[<p>PPS: можете постучать в аську 86пять883 или в GTalk simskaiz[at]gmail.com, расскажу поподробнее.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Skaizer</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-3150</link>
		<dc:creator>Skaizer</dc:creator>
		<pubDate>Sat, 24 Jan 2009 21:31:45 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-3150</guid>
		<description>Здравствуйте, Максим. В качестве аргументов функции &lt;code&gt;compaire&lt;/code&gt; поступают 2 списка с хэшами выделенных ранее подпоследовательностей для двух текстов. Далее мы находим пересечение этих списков, т.е. количество вхождений одного списка в другой. В переменной &lt;code&gt;same&lt;/code&gt; хранится это количество.
А строкой:
&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;return same*2/float(len(source1) + len(source2))*100&lt;/code&gt;&lt;/pre&gt; мы считаем в процентах отношение найденных одинаковых хэшей к общему количеству хэшей для двух текстов. И так как одинаковые хэши у нас встречаются как в первом, так и во втором текстах, то удваиваем переменную &lt;code&gt;same&lt;/code&gt;:
&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;same*2&lt;/code&gt;&lt;/pre&gt;
PS: список в python чем-то похож на массив в C++ :-)</description>
		<content:encoded><![CDATA[<p>Здравствуйте, Максим. В качестве аргументов функции <code>compaire</code> поступают 2 списка с хэшами выделенных ранее подпоследовательностей для двух текстов. Далее мы находим пересечение этих списков, т.е. количество вхождений одного списка в другой. В переменной <code>same</code> хранится это количество.<br />
А строкой:</p>
<pre><code class="python">return same*2/float(len(source1) + len(source2))*100</code></pre>
<p> мы считаем в процентах отношение найденных одинаковых хэшей к общему количеству хэшей для двух текстов. И так как одинаковые хэши у нас встречаются как в первом, так и во втором текстах, то удваиваем переменную <code>same</code>:</p>
<pre><code class="python">same*2</code></pre>
<p>PS: список в python чем-то похож на массив в C++ <img src='http://www.codeisart.ru/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Max Stoun</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-3147</link>
		<dc:creator>Max Stoun</dc:creator>
		<pubDate>Sat, 24 Jan 2009 20:27:26 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-3147</guid>
		<description>&lt;p&gt;Здравствуйте.&lt;/p&gt;
&lt;p&gt;Подскажите пожалуйста. Я пытаюсь написать аналогичный код на c#(для саморазвития - я начинающий программист). Объясните строки:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;def compaire (source1,source2):
  same = 0
  for i in range(len(source1)):
    if source1[i] in source2:
    same = same + 1

  return same*2/float(len(source1) + len(source2))*100&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Я так понимаю - на вход получаем, к примеру&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;python&quot;&gt;source1 = 10204
soruce2 = 54321&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;потом получим цикл i=0...4, и будем сравнивать
если source1[0] in source2   // то есть 1 in 54321 = true
если source1[1] in source2   //то есть 0 in 54321 = false 
и тд ?&lt;/p&gt;
&lt;p&gt;С уважением Максим
P.S. Просто python я не особо понимаю, а попытка поюзать гугл у меня провалилась..&lt;/p&gt;</description>
		<content:encoded><![CDATA[<p>Здравствуйте.</p>
<p>Подскажите пожалуйста. Я пытаюсь написать аналогичный код на c#(для саморазвития &#8212; я начинающий программист). Объясните строки:</p>
<pre><code class="python">def compaire (source1,source2):
  same = 0
  for i in range(len(source1)):
    if source1[i] in source2:
    same = same + 1

  return same*2/float(len(source1) + len(source2))*100</code></pre>
<p>Я так понимаю &#8212; на вход получаем, к примеру</p>
<pre><code class="python">source1 = 10204
soruce2 = 54321</code></pre>
<p>потом получим цикл i=0&#8230;4, и будем сравнивать<br />
если source1[0] in source2   // то есть 1 in 54321 = true<br />
если source1[1] in source2   //то есть 0 in 54321 = false<br />
и тд ?</p>
<p>С уважением Максим<br />
P.S. Просто python я не особо понимаю, а попытка поюзать гугл у меня провалилась..</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Skaizer</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-3070</link>
		<dc:creator>Skaizer</dc:creator>
		<pubDate>Thu, 22 Jan 2009 14:36:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-3070</guid>
		<description>&lt;b&gt;lightcaster&lt;/b&gt;, спасибо, полезные советы! Я реализовал крайне простую канонизацию текста, чтобы показать ее смысл.</description>
		<content:encoded><![CDATA[<p><b>lightcaster</b>, спасибо, полезные советы! Я реализовал крайне простую канонизацию текста, чтобы показать ее смысл.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: lightcaster</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-3066</link>
		<dc:creator>lightcaster</dc:creator>
		<pubDate>Thu, 22 Jan 2009 11:07:31 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-3066</guid>
		<description>Хорошая статья. Метод прост и сердит. Однако, для качественного поиска - очень грубый . Для лучших результатов можно подключить токенизацию и морфологию:
1) Выделить токены, отсеев лишнее 
2) Разбить на блоки
3) Провести лематизацию (и, возможно, морфологическую разметку)
4) На основе этих данных строить сигнатуры для блоков

ps на счет морфологии лучше смотреть в сторону http://www.aot.ru. В морфологии статистические методы значительно уступают словарным, так что pymmorph не будет эффективен.</description>
		<content:encoded><![CDATA[<p>Хорошая статья. Метод прост и сердит. Однако, для качественного поиска &#8212; очень грубый . Для лучших результатов можно подключить токенизацию и морфологию:<br />
1) Выделить токены, отсеев лишнее<br />
2) Разбить на блоки<br />
3) Провести лематизацию (и, возможно, морфологическую разметку)<br />
4) На основе этих данных строить сигнатуры для блоков</p>
<p>ps на счет морфологии лучше смотреть в сторону <a href="http://www.aot.ru" rel="nofollow">http://www.aot.ru</a>. В морфологии статистические методы значительно уступают словарным, так что pymmorph не будет эффективен.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Автор: Skaizer</title>
		<link>http://www.codeisart.ru/python-shingles-algorithm/comment-page-1/#comment-3063</link>
		<dc:creator>Skaizer</dc:creator>
		<pubDate>Thu, 22 Jan 2009 10:19:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.codeisart.ru/?p=1106#comment-3063</guid>
		<description>&lt;blockquote&gt;В случае сравнении текстов категорично разной длины может нужно фиксировать позицию шингла (слов)?&lt;/blockquote&gt;
&lt;b&gt;aRs&lt;/b&gt;, в этом случае, на мой взгляд, нужно значение длины шингла сделать равное оптимальному для размера текста меньшей длины. Тогда можно будет более точно определить возможное вхождение меньшего текста в больший текст.</description>
		<content:encoded><![CDATA[<blockquote><p>В случае сравнении текстов категорично разной длины может нужно фиксировать позицию шингла (слов)?</p></blockquote>
<p><b>aRs</b>, в этом случае, на мой взгляд, нужно значение длины шингла сделать равное оптимальному для размера текста меньшей длины. Тогда можно будет более точно определить возможное вхождение меньшего текста в больший текст.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Served from: www.codeisart.ru @ 2012-02-04 10:51:27 -->
