Romanenko

547 views
461 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
547
On SlideShare
0
From Embeds
0
Number of Embeds
270
Actions
Shares
0
Downloads
4
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Romanenko

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

×