SlideShare a Scribd company logo
1 of 25
Download to read offline
Поиск нечетких дубликатов
   в масштабах Рунета
• Поиск похожих объектов – задача Web-mining :
  – Поиск одинаковых документов для задач:
     • классификации и кластеризации
     • определения зеркал сайтов
     • определения плагиата
  – Рекомендательные системы
  – Поиск похожих картинок
• Зачем искать дубликаты web-страниц?
  – Лучше утилизация ресурсов
    • Нагрузка на сеть (выкачка)
    • Снижение размера индекса
    • Меньше данных -> Быстрее обработка
  – Проще ранжировать результаты
• 20-30% страниц в Рунете это дубликаты
• Что считаем дубликатами?
  – Точные
    • Пример: зеркало сайта
    • Просто определить
    • Не часто встречается
• Что считаем дубликатами?
  – Неточные (нечёткие)
     • Пример:
        – реклама, счетчики,
          даты, числа, цены
        – перепечатка
          контента и новостей
     • Сложнее искать
     • Основной тип дубликатов
Точные дубликаты
Версия для печати




Полная версия
• Точные
  – Просто определить через контрольную сумму документа
     • Чувствительно к минимальному изменению документа
     • Подходит только для точных дубликатов
• Неточные
  – Считаем “одинаковость” двух документов через метрику
    сходства (similarity, от 0 до 100%)
  – В случае превышения порога (например, 90%) считаем
    дубликатами
• Алгоритмы
  – Шинглирование (Shingling)
     • Преобразовать множество документов в множество шинглов
     • k-шингл – k символов или слов
  – Minhashing (Andrei Broder, 1997)
     • Преобразовать большое множество шинглов в короткую
       сигнатуру
  – Супер-шинглы
     • Отбираем только те сигнатуры, которые с большей
       вероятностью похожи
• Шинглы
  – k-shingles (уникальные N-граммы слов) документа
     • Пример: Однажды в студёную зимнюю пору я из лесу вышел…
         однажды в студёную
           в студёную зимнюю
              студёную зимнюю пору
                …
  – Представляем документ в виде множества
     {однажды в студёную, в студёную зимнюю, студёную зимнюю пору,…}
  – Мера сходства (Similarity), коэффициент Жаккара:
                                | A B |
                   Sim( A, B) 
                                | A B |
• A: “Однажды в студёную зимнюю пору я из лесу вышел”
  { однажды в студёную, в студёную зимнюю, студёную зимнюю пору, зимнюю
  пору я, пору я из, я из лесу, из лесу вышел }
• B: “Однажды в студёную летнюю пору я из лесу шёл”
  { однажды в студёную, в студёную летнюю, студёную летнюю пору, летнюю
  пору я, пору я из, я из лесу, из лесу шёл }
• Пересечение: |A  B| = 3
• Объединение: |A  B| = 11
                      | A B | 3
         Sim( A, B)             0.273
                      | A  B | 11
Min-hashing
  – Вычисление коэффициента Жаккара ресурсоемко
  – Хранение большого числа шинглов затратно
  – Идея:
     • представить документа в виде небольшой сигнатуры
       (вектора)
  – Посчитать похожесть документов по сигнатурам
• Хешируем каждый шингл:
  { Однажды в студёную, в студёную зимнюю, студёную зимнюю
  пору, зимнюю пору я, пору я из, я из лесу, из лесу вышел }
       { 153, 324, 462, 189, 623, 980, 738 }
  { Однажды в студёную, в студёную летнюю, студёную летнюю пору,
  летнюю пору я, пору я из, я из лесу, из лесу шёл }
       { 153, 637, 289, 820, 623, 980, 272 }
• Сохраняем минимальные хеши:
  {153} и {153}
• Повторяем с различными хеш-функциями
                     Hash-1   Hash-2   Hash-3   Hash-4
          Doc 1      153      155      187      255
          Doc 2      153      179      187      155

• Процент одинаковых мин-хешей определяет схожесть документов
• Теорема:                                       | A B |
            Pr[MinHash( A)  MinHash( B)] 
                                                 | A B |
• Sim(Doc 1, Doc 2) = 1 / 4
• Сигнатура документа – это вектор
  минимальных хешей
  – На практике используется 84 хеш-функции
• Пример: { 124, 162, 127, … 172 }
• В итоге получаем для каждой страницы надо
  672 байта (84 х 8 байт)
• Чтобы сравнить два документа надо
  вычислить процент совпадающих сигнатур
• Проблема: полный перебор сравнений, O(n2)
  – 1010 страниц * 1010 страниц * 102 хешей = 1022
    операций
• Даже на современном оборудовании:
  – 1022 / (109 операций/сек * 104 ядер в кластере) =
    109 сек или 32 года
Супер-Шинглы
• Т.к. нас интересуют только сильно похожие документы
   – Группируем непересекающиеся шинглы в супер-шинглы:
     { 124, 162, 127, 234, 198, 221 … 172 }
     { 124, 162, 127, 234 }
                          { 198, 221 … }
                                        { …, 172 }
• Хешируем каждый супер-шингл:
  { 2034, 4098, 3891, …, 5843 }
• Сравниваем только те документы, у которых совпадают супер-
  шинглы
S-Shingle-1   S-Shingle-2   S-Shingle-3
       Doc 1    2034          4098          3891
       Doc 2    3135          5267          1315
       Doc 3    3135          5267          7351

• Предполагаем, что Doc1 и Doc2 являются дубликатами
• Храним таблицу отсортированной по колонкам и
  сравниваем соседние строки.
Пары
                                                        кандидатов :
                                          Super         пары сигнатур,
Doc
                                         Shingles       документы
                                                        которых надо
                                                        проверить
      K-шинглы:             Сигнатуры :
      Множество строк       Небольшой числовой вектор
      длины k присутству-   представляющий множество
      ющих в документе      и отражающий меру
                            “сходства”
Реализация в MapReduce
                                                             HBase


                                          Супер-шинглы


                                                SShingle -> DocId
                                          MAP
                                                           REDUCE
                                          MAP
                                                           REDUCE
                                          MAP
                                                SShingle -> DocId

         Key: DocId, Value: <SShingles>
Открытые проблемы
• Фильтрация HTML-тегов
  – Что делать с тегами, которые возможно несут
    смысловую нагрузку (img alt, href)?
  – JavaScript, AJAX, FLASH
• Динамические страницы
• Навигационная обвязка
  – Удалять или оставлять?
А л е к с е й Ро м а н е н к о
  Ведущий разработчик,
     Поиск@Mail.Ru
 a.romanenko@corp.mail.ru

More Related Content

What's hot

MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?Tim Mironov
 
Кратко о MongoDB
Кратко о MongoDBКратко о MongoDB
Кратко о MongoDBGleb Lebedev
 
Встраивание языка в строковой интерполятор
Встраивание языка в строковой интерполяторВстраивание языка в строковой интерполятор
Встраивание языка в строковой интерполяторMichael Limansky
 
Big Data - первые шаги
Big Data - первые шагиBig Data - первые шаги
Big Data - первые шагиAnton Gorokhov
 
Нижегородский рынок хостинга. А.Чекин.
Нижегородский рынок хостинга. А.Чекин.Нижегородский рынок хостинга. А.Чекин.
Нижегородский рынок хостинга. А.Чекин.Clouds NN
 
CodeFest 2014. Бартунов О. — Hstore — документо-ориентированное хранилище и д...
CodeFest 2014. Бартунов О. — Hstore — документо-ориентированное хранилище и д...CodeFest 2014. Бартунов О. — Hstore — документо-ориентированное хранилище и д...
CodeFest 2014. Бартунов О. — Hstore — документо-ориентированное хранилище и д...CodeFest
 

What's hot (6)

MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?MongoDB. Как готовить, с чем едят?
MongoDB. Как готовить, с чем едят?
 
Кратко о MongoDB
Кратко о MongoDBКратко о MongoDB
Кратко о MongoDB
 
Встраивание языка в строковой интерполятор
Встраивание языка в строковой интерполяторВстраивание языка в строковой интерполятор
Встраивание языка в строковой интерполятор
 
Big Data - первые шаги
Big Data - первые шагиBig Data - первые шаги
Big Data - первые шаги
 
Нижегородский рынок хостинга. А.Чекин.
Нижегородский рынок хостинга. А.Чекин.Нижегородский рынок хостинга. А.Чекин.
Нижегородский рынок хостинга. А.Чекин.
 
CodeFest 2014. Бартунов О. — Hstore — документо-ориентированное хранилище и д...
CodeFest 2014. Бартунов О. — Hstore — документо-ориентированное хранилище и д...CodeFest 2014. Бартунов О. — Hstore — документо-ориентированное хранилище и д...
CodeFest 2014. Бартунов О. — Hstore — документо-ориентированное хранилище и д...
 

Viewers also liked (18)

Rabovoluk
RabovolukRabovoluk
Rabovoluk
 
Bubnov
BubnovBubnov
Bubnov
 
Haritonov
HaritonovHaritonov
Haritonov
 
Platov
PlatovPlatov
Platov
 
Smirnov dependency-injection-techforum(1)
Smirnov dependency-injection-techforum(1)Smirnov dependency-injection-techforum(1)
Smirnov dependency-injection-techforum(1)
 
Zenovich
ZenovichZenovich
Zenovich
 
A.pleshkov
A.pleshkovA.pleshkov
A.pleshkov
 
Zamyakin
ZamyakinZamyakin
Zamyakin
 
Kalugin balashov
Kalugin balashovKalugin balashov
Kalugin balashov
 
Panfilov
PanfilovPanfilov
Panfilov
 
Balashov
BalashovBalashov
Balashov
 
Zacepin
ZacepinZacepin
Zacepin
 
Perepelitsa
PerepelitsaPerepelitsa
Perepelitsa
 
Smirnov reverse-engineering-techforum
Smirnov reverse-engineering-techforumSmirnov reverse-engineering-techforum
Smirnov reverse-engineering-techforum
 
Zagursky
ZagurskyZagursky
Zagursky
 
Chudov
ChudovChudov
Chudov
 
Osipov
OsipovOsipov
Osipov
 
Kubasov
KubasovKubasov
Kubasov
 

Similar to Romanenko

Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Ontico
 
Индексный поиск по регулярным выражениям (Александр Коротков)
Индексный поиск по регулярным выражениям (Александр Коротков)Индексный поиск по регулярным выражениям (Александр Коротков)
Индексный поиск по регулярным выражениям (Александр Коротков)Ontico
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...it-people
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернетаAlexander Sibiryakov
 
!Predictive analytics part_3
!Predictive analytics part_3!Predictive analytics part_3
!Predictive analytics part_3Vladimir Krylov
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...Vyacheslav Nikulin
 
CV2011 Lecture 10. Image retrieval
CV2011 Lecture 10.  Image retrievalCV2011 Lecture 10.  Image retrieval
CV2011 Lecture 10. Image retrievalAnton Konushin
 
CV2015. Лекция 7. Поиск изображений по содержанию.
CV2015. Лекция 7. Поиск изображений по содержанию.CV2015. Лекция 7. Поиск изображений по содержанию.
CV2015. Лекция 7. Поиск изображений по содержанию.Anton Konushin
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ontico
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchИлья Середа
 
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Ontico
 
Miasm defcon russia 23
Miasm defcon russia 23Miasm defcon russia 23
Miasm defcon russia 23DefconRussia
 

Similar to Romanenko (13)

Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...Машинное обучение в электронной коммерции - практика использования и подводны...
Машинное обучение в электронной коммерции - практика использования и подводны...
 
Индексный поиск по регулярным выражениям (Александр Коротков)
Индексный поиск по регулярным выражениям (Александр Коротков)Индексный поиск по регулярным выражениям (Александр Коротков)
Индексный поиск по регулярным выражениям (Александр Коротков)
 
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
Frontera: распределенный робот для обхода интернета в больших объемах - Алекс...
 
Frontera обход испанского интернета
Frontera обход испанского интернетаFrontera обход испанского интернета
Frontera обход испанского интернета
 
Nosql and Mongodb
Nosql and MongodbNosql and Mongodb
Nosql and Mongodb
 
!Predictive analytics part_3
!Predictive analytics part_3!Predictive analytics part_3
!Predictive analytics part_3
 
кри 2014 elastic search рациональный подход к созданию собственной системы а...
кри 2014 elastic search  рациональный подход к созданию собственной системы а...кри 2014 elastic search  рациональный подход к созданию собственной системы а...
кри 2014 elastic search рациональный подход к созданию собственной системы а...
 
CV2011 Lecture 10. Image retrieval
CV2011 Lecture 10.  Image retrievalCV2011 Lecture 10.  Image retrieval
CV2011 Lecture 10. Image retrieval
 
CV2015. Лекция 7. Поиск изображений по содержанию.
CV2015. Лекция 7. Поиск изображений по содержанию.CV2015. Лекция 7. Поиск изображений по содержанию.
CV2015. Лекция 7. Поиск изображений по содержанию.
 
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
Ускоряем и разгружаем веб-сервер, прозрачно кэшируя на SSD, Станислав Николов...
 
Где сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearchГде сегодня использовать ElasticSearch
Где сегодня использовать ElasticSearch
 
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
Олег Бартунов (ГАИШ МГУ), Александр Коротков (Интаро-Софт)
 
Miasm defcon russia 23
Miasm defcon russia 23Miasm defcon russia 23
Miasm defcon russia 23
 

More from kuchinskaya

владимир габриелян
владимир габриелянвладимир габриелян
владимир габриелянkuchinskaya
 
чашкин иван
чашкин иванчашкин иван
чашкин иванkuchinskaya
 
сумин андрей
сумин андрейсумин андрей
сумин андрейkuchinskaya
 
митасов роман
митасов романмитасов роман
митасов романkuchinskaya
 
кренин владимир
кренин владимиркренин владимир
кренин владимирkuchinskaya
 
константин лебедев
константин лебедевконстантин лебедев
константин лебедевkuchinskaya
 
дыдыкин егор
дыдыкин егордыдыкин егор
дыдыкин егорkuchinskaya
 
ярослав рабоволюк
ярослав рабоволюкярослав рабоволюк
ярослав рабоволюкkuchinskaya
 
сергей спиридонов
сергей спиридоновсергей спиридонов
сергей спиридоновkuchinskaya
 
игорь ермаков
игорь ермаковигорь ермаков
игорь ермаковkuchinskaya
 
дмитрий юдин3
дмитрий юдин3дмитрий юдин3
дмитрий юдин3kuchinskaya
 

More from kuchinskaya (12)

Kharkov
KharkovKharkov
Kharkov
 
владимир габриелян
владимир габриелянвладимир габриелян
владимир габриелян
 
чашкин иван
чашкин иванчашкин иван
чашкин иван
 
сумин андрей
сумин андрейсумин андрей
сумин андрей
 
митасов роман
митасов романмитасов роман
митасов роман
 
кренин владимир
кренин владимиркренин владимир
кренин владимир
 
константин лебедев
константин лебедевконстантин лебедев
константин лебедев
 
дыдыкин егор
дыдыкин егордыдыкин егор
дыдыкин егор
 
ярослав рабоволюк
ярослав рабоволюкярослав рабоволюк
ярослав рабоволюк
 
сергей спиридонов
сергей спиридоновсергей спиридонов
сергей спиридонов
 
игорь ермаков
игорь ермаковигорь ермаков
игорь ермаков
 
дмитрий юдин3
дмитрий юдин3дмитрий юдин3
дмитрий юдин3
 

Romanenko

  • 1. Поиск нечетких дубликатов в масштабах Рунета
  • 2. • Поиск похожих объектов – задача Web-mining : – Поиск одинаковых документов для задач: • классификации и кластеризации • определения зеркал сайтов • определения плагиата – Рекомендательные системы – Поиск похожих картинок
  • 3. • Зачем искать дубликаты web-страниц? – Лучше утилизация ресурсов • Нагрузка на сеть (выкачка) • Снижение размера индекса • Меньше данных -> Быстрее обработка – Проще ранжировать результаты • 20-30% страниц в Рунете это дубликаты
  • 4. • Что считаем дубликатами? – Точные • Пример: зеркало сайта • Просто определить • Не часто встречается
  • 5. • Что считаем дубликатами? – Неточные (нечёткие) • Пример: – реклама, счетчики, даты, числа, цены – перепечатка контента и новостей • Сложнее искать • Основной тип дубликатов
  • 7.
  • 8.
  • 10.
  • 11. • Точные – Просто определить через контрольную сумму документа • Чувствительно к минимальному изменению документа • Подходит только для точных дубликатов • Неточные – Считаем “одинаковость” двух документов через метрику сходства (similarity, от 0 до 100%) – В случае превышения порога (например, 90%) считаем дубликатами
  • 12. • Алгоритмы – Шинглирование (Shingling) • Преобразовать множество документов в множество шинглов • k-шингл – k символов или слов – Minhashing (Andrei Broder, 1997) • Преобразовать большое множество шинглов в короткую сигнатуру – Супер-шинглы • Отбираем только те сигнатуры, которые с большей вероятностью похожи
  • 13. • Шинглы – k-shingles (уникальные N-граммы слов) документа • Пример: Однажды в студёную зимнюю пору я из лесу вышел… однажды в студёную в студёную зимнюю студёную зимнюю пору … – Представляем документ в виде множества {однажды в студёную, в студёную зимнюю, студёную зимнюю пору,…} – Мера сходства (Similarity), коэффициент Жаккара: | A B | Sim( A, B)  | A B |
  • 14. • A: “Однажды в студёную зимнюю пору я из лесу вышел” { однажды в студёную, в студёную зимнюю, студёную зимнюю пору, зимнюю пору я, пору я из, я из лесу, из лесу вышел } • B: “Однажды в студёную летнюю пору я из лесу шёл” { однажды в студёную, в студёную летнюю, студёную летнюю пору, летнюю пору я, пору я из, я из лесу, из лесу шёл } • Пересечение: |A  B| = 3 • Объединение: |A  B| = 11 | A B | 3 Sim( A, B)    0.273 | A  B | 11
  • 15. Min-hashing – Вычисление коэффициента Жаккара ресурсоемко – Хранение большого числа шинглов затратно – Идея: • представить документа в виде небольшой сигнатуры (вектора) – Посчитать похожесть документов по сигнатурам
  • 16. • Хешируем каждый шингл: { Однажды в студёную, в студёную зимнюю, студёную зимнюю пору, зимнюю пору я, пору я из, я из лесу, из лесу вышел } { 153, 324, 462, 189, 623, 980, 738 } { Однажды в студёную, в студёную летнюю, студёную летнюю пору, летнюю пору я, пору я из, я из лесу, из лесу шёл } { 153, 637, 289, 820, 623, 980, 272 } • Сохраняем минимальные хеши: {153} и {153}
  • 17. • Повторяем с различными хеш-функциями Hash-1 Hash-2 Hash-3 Hash-4 Doc 1 153 155 187 255 Doc 2 153 179 187 155 • Процент одинаковых мин-хешей определяет схожесть документов • Теорема: | A B | Pr[MinHash( A)  MinHash( B)]  | A B | • Sim(Doc 1, Doc 2) = 1 / 4
  • 18. • Сигнатура документа – это вектор минимальных хешей – На практике используется 84 хеш-функции • Пример: { 124, 162, 127, … 172 } • В итоге получаем для каждой страницы надо 672 байта (84 х 8 байт)
  • 19. • Чтобы сравнить два документа надо вычислить процент совпадающих сигнатур • Проблема: полный перебор сравнений, O(n2) – 1010 страниц * 1010 страниц * 102 хешей = 1022 операций • Даже на современном оборудовании: – 1022 / (109 операций/сек * 104 ядер в кластере) = 109 сек или 32 года
  • 20. Супер-Шинглы • Т.к. нас интересуют только сильно похожие документы – Группируем непересекающиеся шинглы в супер-шинглы: { 124, 162, 127, 234, 198, 221 … 172 } { 124, 162, 127, 234 } { 198, 221 … } { …, 172 } • Хешируем каждый супер-шингл: { 2034, 4098, 3891, …, 5843 } • Сравниваем только те документы, у которых совпадают супер- шинглы
  • 21. S-Shingle-1 S-Shingle-2 S-Shingle-3 Doc 1 2034 4098 3891 Doc 2 3135 5267 1315 Doc 3 3135 5267 7351 • Предполагаем, что Doc1 и Doc2 являются дубликатами • Храним таблицу отсортированной по колонкам и сравниваем соседние строки.
  • 22. Пары кандидатов : Super пары сигнатур, Doc Shingles документы которых надо проверить K-шинглы: Сигнатуры : Множество строк Небольшой числовой вектор длины k присутству- представляющий множество ющих в документе и отражающий меру “сходства”
  • 23. Реализация в MapReduce HBase Супер-шинглы SShingle -> DocId MAP REDUCE MAP REDUCE MAP SShingle -> DocId Key: DocId, Value: <SShingles>
  • 24. Открытые проблемы • Фильтрация HTML-тегов – Что делать с тегами, которые возможно несут смысловую нагрузку (img alt, href)? – JavaScript, AJAX, FLASH • Динамические страницы • Навигационная обвязка – Удалять или оставлять?
  • 25. А л е к с е й Ро м а н е н к о Ведущий разработчик, Поиск@Mail.Ru a.romanenko@corp.mail.ru