SlideShare uma empresa Scribd logo
1 de 31
Baixar para ler offline
Поиск дубликатов
(Duplicate detection)
Лекция для Computer Science клубa
Александр Уланов / 31 марта 2013
HP Labs Russia
alexander.ulanov@hp.com


© Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Содержание

Поиск дубликатов
•  Введение
•  Примеры
•  Постановка задачи
•  Алгоритмы




2   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Введение

Поиск дубликатов
Задача поиска и группировки или согласования различных экземпляров
(реализаций) одного и того же объекта
•    Различные способы упоминания одного и того же человека в тексте или БД
•    Страницы с разными описаниями одних и тех же организаций
•    Разные фотографии одних и тех же объектов
•    ?




3    © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Поиск дубликатов

Поиск дубликатов в поиске дубликатов
Задача имеет много различных названий                                                                                  Duplicate detection
             Coreference resolution                                                             Record linkage

            Matching                                    Reference reconciliation                                                 Object consolidation

            Deduplication                                                  Merge/purge                                                  Entity clustering


    Hardening soft databases                                                                      Doubles                                      Entity resolution

                                                                                                                                             Entity linking
4    © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Примеры. Организации




5   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Примеры. Социальная сеть
       До поиска дубликатов                                                                                        После поиска дубликатов

    Картман                                      Кайл

                                                                                                     Эрик Картман                              Кайл Брофлофски
        Стэн


     Кенни                                       Эрик

                                                                                                      Стэн Марш                                  Кенни МакКормик

    С. Марш                                        К. Брофлофски
                                                                                                                                       Сеть пригодна для анализа

                       К. Маккормик
6   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Примеры. Топология сети Интернет
       До поиска дубликатов                                                                                        После поиска дубликатов



         Router                                Router                                                                         Router            Router



       Router                                 Router                                                                                   Router




    Router                                   Router                                                                      Router                 Router

                                                                                                                          Уменьшена сложность графа
7   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Примеры. Люди


                       Микоян




                       Вагнер




                                                                                                                                       *все фото из Википедии
8   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Причины появления дубликатов

Отчего появляются дубликаты?
Основные причины:
•    Ошибки ввода
•    Пропущенные данные
•    Измененные атрибуты
•    Формат данных
•    Аббревиатуры и сокращения
•    Неоднозначность названий и атрибутов объектов




9    © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Актуальность

Поиск дубликатов
Основные проблемы
•  Большие данные (Big Data)
•  Гетерогенность
   −  Неструктурированные, «грязные», неполные данные
   −  Не просто сравнение фамилий и имен, а сравнение профайла в Фейсбуке со списками
      твитов в Твиттере и географических координат
•  Согласование
   −  Не просто дубликаты, а отношения между экземплярами
•  Различные приложения
   −  БД, социальные сети…




10   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Постановка задачи

Поиск дубликатов
Наиболее типичные задачи
•  Поиск дубликатов (duplicate detection)
   −  Группировка различных экземпляров одного и того же объекта
•  Согласование записей (record linkage, entity linking)
   −  Связать записи, которые дублируются в разных источниках
•  Ссылки (reference resolution)
   −  Сопоставить данные с внешними источниками
Условия
•  Каждый экземпляр может быть ассоциирован только с одним объектом
•  В задаче согласования записей в одном из источников нет дубликатов
•  Если два экземпляра идентичны, то они относятся к одному объекту


11   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Постановка задачи
                                                                                                                                        Mpred
                                                                                                         Mtrue
Обозначения
•  R – набор записей (экземпляров)
•  H – набор отношений
•  M – набор совпадений
•  N – набор несовпадений
•  E – набор объектов (в реальности)
•  L – набор связей (в реальности)
Проверка правильности решения
•  Реальные (Mtrue, Ntrue, Etrue, Ltrue) сравниваются с (Mpred, Npred, Epred, Lpred), найденными
   алгоритмом




12   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Метрики

 Измерение точности поиска дубликатов
 •  Попарные (N(N-1)/2)
    −  Точность, полнота, F1-мера (precision, recall, F1-measure)
                     tp                   tp                   PR
             P=                  R=                   F1 =
                  tp + fp              tp + fn                P+R
      −    Количество правильно найденных совпадающих пар


 •  Групповые (кластерные)                                                               Тот же кластер                Другой кластер
    −  Чистота (purity)
                                                          Тот же объект                  True positive (tp)            False negative
                                                                                                                       (fn)
                          1
  purity(Ω, C ) =           ∑ max ωk ∩ c j                Другой объект                  False positive (fp)           True negative (tn)
                          N k j
                     объекты                             Предполагается, что каждый кластер представляет
кластеры
 13                                                      тот объект, реализаций которого в нем больше всего
      © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Решение

Тривиальное решение
Попарное сравнение экземпляров с использованием некоего порога
Как задача классификации
Классифицировать все пары записей в «совпадение» и «не совпадение»
•  Несбалансированные данные – «не совпадений» намного больше
•  Пары записей не независимы:
   −  (A,B)==match, (B,C)==match (A,C)==match
Как задача кластеризации
Кластеризовать все записи так, чтобы кластеры соответствовали объектам
•  В популярных алгоритмах кластеризации предполагается, что количество кластеров O(R)
•  В задаче поиска дубликатов количество кластеров зачастую близко к R, так как много
   синглетонов (кластеров с одним элементом)

14   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Алгоритм решения

Обычно включает в себя следующие шаги
•  Подготовка данных
   −  Нормализация данных
   −  Нормализация схемы данных
•  Попарное сравнение данных
   −  Сравнение атрибутов данных при помощи подходящих функций близости
   −  Близость данных – функция от близости их атрибутов
•  Применение ограничений
   −  Транзитивность
   −  Связывание данных
   −  Группировка




15   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Подготовка данных

•  Нормализация схемы данных
   −  Схема – «телефон» и «контактный телефон»
   −  Сложные атрибуты - адрес
      Вложенные атрибуты
     − 
   −  Наборы атрибутов
   −  Сегментация данных
•  Нормализация данных
   −  Строчные буквы, пробелы
   −  Исправление заранее известных ошибок
   −  Расшифровка аббревиатур
   −  Часто используются словари




16   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Сравнение атрибутов записей

•  Для каждой пары записей вычисляются                                                                    •  Функции близости (distance functions)
   близости их атрибутов                                                                                     −  Булевская
   −  sim(A.phone,A.phone),sim(A.name,B.name),…
                                                                                                             −  Редактирования
                                                                                                                 •  Levenshtein, Jaro-Winkler, Monge-Elkan
                                                                                                              −  Фонетическая
                                                                                                                 •  Soundex
                                                                                                              −  На основе множеств
                                                                                                                 •  Dice, Jaccard
                                                                                                              −  На основе векторов
                                                                                                                 •  TF-IDF, softTF-IDF
                                                                                                              −  Перевод
SecondString, http://secondstring.sourceforge.net/
                                                                                                                 •  Аббревиатуры
Simmetrics: http://sourceforge.net/projects/simmetrics/
LingPipe, http://alias‐i.com/lingpipe/index.html
17   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Функция Levenshtein

           Вычисляется близость i символов из s и j символов из t (от начала строк)

                    " D s, t, i −1, j −1                                                                         si = t j
                    $      (                )                                                      если

                    $ D ( s, t, i −1, j −1) +1
                    $                                                                              если производится замена              t j на si
D(s, t, i, j) = min #
                    $ D ( s, t, i, j −1) +1                                                        если производится вставка              tj
                    $                                                                              если производится удаление                  si
                    $ D ( s, t, i −1, j ) +1
                    %



 18   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Levenshtein. Пример

Levenshtein
Стоимости (берется минимальная из перечисленных)
•    Совпадение: если символ совпадает, взять стоимость из левой верхней диагонали
•    Замена: если символ не совпадает, взять стоимость из левой верхней диагонали и добавить 1
•    Вставка: взять стоимость слева и добавить 1           Модификации Levenstein
•    Удаление: взять стоимость сверху и добавить 1         •  Needleman-Wunsch: разные стоимости
                                                                                                                       •  Smith-Waterman: учет начала и конца
                                                 t          h          i           s                                   •  Affine gap: последовательная вставка/
                                     0           1          2          3           4                                      удаление дешевле
                                                                                                                       •  Monge-Elkan: Smith-Waterman+affine
                          h          1           1          1          2           3
                                                                                                                        Дистанция
                          a          2           2          2          2           3
                          s          3           3          3          3           2
19   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Функция Jaro-Winkler
                    1 ⎛ sʹ′ t ʹ′ sʹ′ − τ ⎞
      Jaro( s, t ) = ⎜ + +               ⎟
                    3 ⎜ s
                      ⎝     t       sʹ′ ⎟
                                          ⎠                                                                                                 max ( s , t )
                                                                                                                                        d=                   −1
               s ʹ′, t ʹ′   – последовательности общих символов                                                                                   2
          Два символа считаются общими, если                                                          b j = ai i − d ≤ j ≤ i + d
           τ        – половина кол-ва перестановок в последовательности общих символов

               Алексей                                                                   1 ⎛ 7 7 7 − 1 ⎞
               Алескей                    d = 2 τ =1                               Jaro = ⎜ + +        ⎟ ≈ 0.95
                                                                                         3 ⎝ 7 7   7 ⎠
         JaroWinkler (s, t ) = Jaro(s, t ) − i ⋅ 0.1⋅ (1 − Jaro(s, t ))
                i – общий префикс (но не больше 4)
20   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Функции с множествами и векторами
 Сравниваемые строки разбиваются на слова
Jaccard, Dice                                                                                                                                   A∩ B
                                                                                                            Jaccard ( A, B ) =
 Отношение пересечения и объединения слов                                                                                A∪ B
                                                                                                                     2 A∩B
                                                                                                        Dice(A, B) =
TF-IDF                                                                                                                A+B
Вычисление косинуса векторов с весами слов
                                                                                                                       V ʹ′(w, S )
     SimTFIDF ( S , T ) =                    ∑V (w, S )⋅V (w, T )
                                          w∈S ∩T
                                                                                              V ( w, S ) =
                                                                                                                   ∑wʹ′V ʹ′(w, S )
                                                                                                                                        2   V ʹ′(w, S ) = log(TFw, S + 1)⋅ log(IDFw )

Soft TF-IDF
 SimSoftTFIDF ( S , T ) =
                                              w∈CLOSE
                                                       ∑(θV (w), S )⋅V (w, T )⋅ N (w, T )
                                                               , S ,T

                                                                                          N ( w, T ) = max w∈T simCLOSE                          simCLOSE (w, v ) > θ
21   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Сравнение эффективности функций близости




Средние значения по 11 наборам данных
M. Bilenko, R. Mooney, W. Cohen, P. Ravikumar and S. Fienberg. Adaptive Name Matching in Information
Integration. IEEE Intelligent Systems, Vol. 18 Is 5, 2003
22   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Сравнение записей

Задача: вычислить дистанцию между записями, представленными в
виде векторов значений функций близости
•  Взвешенная сумма (или среднее) дистанций атрибутов
   −  Необходимо определять порог
•  Правила
   −  Необходимо писать правила
•  Машинное обучение
   −  Необходим набор данных для обучения




23   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Сравнение эффективности дистанций




         Использование машинного обучения и структуры записей


24   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Применение ограничений

Виды ограничений
•  Транзитивность (для поиска дубликатов)
   −  Если M1 и M2, а также M2 и M3 совпадают, то M1 и M3 тоже совпадают
   −  Следствие: если M1 и M2, а также M2 и M3 не совпадают, то M1 и M3 не могут совпадать
•  Эксклюзивность (для согласования данных)
   −  Если M1 и M2 совпадают, то M2 и M3 не могут совпадать
   −  Следствие: M3 может совпадать с какой-либо другой записью M4
•  Функциональная зависимость (для очистки данных)
   −  Если M1 и M2 совпадают, то M3 и M4 тоже совпадают
   −  Следствие: как в транзитивности
•  В зависимости от данных



25   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Согласование данных

Согласование
Дано: попарные расстояния между записями в N источниках. Найти: совпадения с
максимальной суммой весов
•  NP-полная задача, используются субоптимальные алгоритмы на основе попарно несмежных
   ребер в графе




26   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Группировка дубликатов

Дубликаты
Дано: попарные расстояния между записями. Найти: группы записей,
представляющих один и тот же объект
•  Попарное сравнение может дать неполноценный результат (не выполняется транзитивность)
•  Иногда транзитивность может быть вредной

•  Кластеризация
   −  Иерархическая [Bilenko et al, ICDM 05]
   −  К-ближайщих соседей [Chaudhuri et al, ICDE 05]
•  Проблема транзитивности остается
•  Сложность определения шага остановки кластеризации



27   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Масштабируемость

Попарных сравнений может быть очень много
Пример
•  Население СПб 5*106 человек, сравнений будет ~12*1012. Если одно сравнение занимает 1 мс,
   то весь процесс займет несколько сотен лет


Возможное решение
•  Предварительная разбивка на наборы данных, между которыми сравнение не будет
   произведено [McCallum et al., SIGKDD 2000]
•  Простая дистанция




28   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Заключение

Поиск дубликатов
•  Очень важен этап нормализации данных
•  Выбор функции близости
Проблемы поиска дубликатов
•  Большие данные (Big Data)
•  Гетерогенность данных
•  Масштабируемость
Актуальные задачи
•  Согласование аккаунтов в социальных сетях (Twitter, Facebook, Foursquare)
•  Согласование данных из различных справочников (Wikipedia, Google Places, Lonely Planet)




29   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Ссылки

Библиотеки
•  SecondString, http://secondstring.sourceforge.net/
•  Simmetrics: http://sourceforge.net/projects/simmetrics/
•  LingPipe, http://alias‐i.com/lingpipe/index.html

Литература
•  M. Bilenko, R. Mooney, W. Cohen, P. Ravikumar and S. Fienberg. Adaptive Name Matching in
   Information Integration. IEEE Intelligent Systems, Vol. 18 Is 5, 2003 (практические рекомендации)
•  L. Getoor, A. Machanavajjhala. VLDB 2012 Tutorial on Entity Resolution
•  Elmagarmid et al., Duplicate Record Detection: A Survey. IEEE Transactions on Knowledge and Data
   Engineering, Vol. 19, No. 1. (January 2007) (все, что надо знать о поиске дубликатов на 16
   страницах текста)
•  P. Christen. Data Matching Springer 2012 (большая книга)

30   © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
Конец




© Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.

Mais conteúdo relacionado

Mais de Computer Science Club

20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugsComputer Science Club
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugsComputer Science Club
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12Computer Science Club
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11Computer Science Club
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10Computer Science Club
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09Computer Science Club
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02Computer Science Club
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01Computer Science Club
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04Computer Science Club
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01Computer Science Club
 

Mais de Computer Science Club (20)

Computer Vision
Computer VisionComputer Vision
Computer Vision
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs20140531 serebryany lecture02_find_scary_cpp_bugs
20140531 serebryany lecture02_find_scary_cpp_bugs
 
20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs20140531 serebryany lecture01_fantastic_cpp_bugs
20140531 serebryany lecture01_fantastic_cpp_bugs
 
20140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture1220140511 parallel programming_kalishenko_lecture12
20140511 parallel programming_kalishenko_lecture12
 
20140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture1120140427 parallel programming_zlobin_lecture11
20140427 parallel programming_zlobin_lecture11
 
20140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture1020140420 parallel programming_kalishenko_lecture10
20140420 parallel programming_kalishenko_lecture10
 
20140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture0920140413 parallel programming_kalishenko_lecture09
20140413 parallel programming_kalishenko_lecture09
 
20140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture0220140329 graph drawing_dainiak_lecture02
20140329 graph drawing_dainiak_lecture02
 
20140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture0120140329 graph drawing_dainiak_lecture01
20140329 graph drawing_dainiak_lecture01
 
20140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-0420140310 parallel programming_kalishenko_lecture03-04
20140310 parallel programming_kalishenko_lecture03-04
 
20140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-0320140223-SuffixTrees-lecture01-03
20140223-SuffixTrees-lecture01-03
 
20140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture0120140216 parallel programming_kalishenko_lecture01
20140216 parallel programming_kalishenko_lecture01
 
20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich20131106 h10 lecture6_matiyasevich
20131106 h10 lecture6_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich20131027 h10 lecture5_matiyasevich
20131027 h10 lecture5_matiyasevich
 
20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich20131013 h10 lecture4_matiyasevich
20131013 h10 lecture4_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich20131006 h10 lecture3_matiyasevich
20131006 h10 lecture3_matiyasevich
 
20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich20131006 h10 lecture2_matiyasevich
20131006 h10 lecture2_matiyasevich
 

20120321 csseminar ulanov_duplicate

  • 1. Поиск дубликатов (Duplicate detection) Лекция для Computer Science клубa Александр Уланов / 31 марта 2013 HP Labs Russia alexander.ulanov@hp.com © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 2. Содержание Поиск дубликатов •  Введение •  Примеры •  Постановка задачи •  Алгоритмы 2 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 3. Введение Поиск дубликатов Задача поиска и группировки или согласования различных экземпляров (реализаций) одного и того же объекта •  Различные способы упоминания одного и того же человека в тексте или БД •  Страницы с разными описаниями одних и тех же организаций •  Разные фотографии одних и тех же объектов •  ? 3 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 4. Поиск дубликатов Поиск дубликатов в поиске дубликатов Задача имеет много различных названий Duplicate detection Coreference resolution Record linkage Matching Reference reconciliation Object consolidation Deduplication Merge/purge Entity clustering Hardening soft databases Doubles Entity resolution Entity linking 4 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 5. Примеры. Организации 5 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 6. Примеры. Социальная сеть До поиска дубликатов После поиска дубликатов Картман Кайл Эрик Картман Кайл Брофлофски Стэн Кенни Эрик Стэн Марш Кенни МакКормик С. Марш К. Брофлофски Сеть пригодна для анализа К. Маккормик 6 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 7. Примеры. Топология сети Интернет До поиска дубликатов После поиска дубликатов Router Router Router Router Router Router Router Router Router Router Router Уменьшена сложность графа 7 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 8. Примеры. Люди Микоян Вагнер *все фото из Википедии 8 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 9. Причины появления дубликатов Отчего появляются дубликаты? Основные причины: •  Ошибки ввода •  Пропущенные данные •  Измененные атрибуты •  Формат данных •  Аббревиатуры и сокращения •  Неоднозначность названий и атрибутов объектов 9 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 10. Актуальность Поиск дубликатов Основные проблемы •  Большие данные (Big Data) •  Гетерогенность −  Неструктурированные, «грязные», неполные данные −  Не просто сравнение фамилий и имен, а сравнение профайла в Фейсбуке со списками твитов в Твиттере и географических координат •  Согласование −  Не просто дубликаты, а отношения между экземплярами •  Различные приложения −  БД, социальные сети… 10 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 11. Постановка задачи Поиск дубликатов Наиболее типичные задачи •  Поиск дубликатов (duplicate detection) −  Группировка различных экземпляров одного и того же объекта •  Согласование записей (record linkage, entity linking) −  Связать записи, которые дублируются в разных источниках •  Ссылки (reference resolution) −  Сопоставить данные с внешними источниками Условия •  Каждый экземпляр может быть ассоциирован только с одним объектом •  В задаче согласования записей в одном из источников нет дубликатов •  Если два экземпляра идентичны, то они относятся к одному объекту 11 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 12. Постановка задачи Mpred Mtrue Обозначения •  R – набор записей (экземпляров) •  H – набор отношений •  M – набор совпадений •  N – набор несовпадений •  E – набор объектов (в реальности) •  L – набор связей (в реальности) Проверка правильности решения •  Реальные (Mtrue, Ntrue, Etrue, Ltrue) сравниваются с (Mpred, Npred, Epred, Lpred), найденными алгоритмом 12 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 13. Метрики Измерение точности поиска дубликатов •  Попарные (N(N-1)/2) −  Точность, полнота, F1-мера (precision, recall, F1-measure) tp tp PR P= R= F1 = tp + fp tp + fn P+R −  Количество правильно найденных совпадающих пар •  Групповые (кластерные) Тот же кластер Другой кластер −  Чистота (purity) Тот же объект True positive (tp) False negative (fn) 1 purity(Ω, C ) = ∑ max ωk ∩ c j Другой объект False positive (fp) True negative (tn) N k j объекты Предполагается, что каждый кластер представляет кластеры 13 тот объект, реализаций которого в нем больше всего © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 14. Решение Тривиальное решение Попарное сравнение экземпляров с использованием некоего порога Как задача классификации Классифицировать все пары записей в «совпадение» и «не совпадение» •  Несбалансированные данные – «не совпадений» намного больше •  Пары записей не независимы: −  (A,B)==match, (B,C)==match (A,C)==match Как задача кластеризации Кластеризовать все записи так, чтобы кластеры соответствовали объектам •  В популярных алгоритмах кластеризации предполагается, что количество кластеров O(R) •  В задаче поиска дубликатов количество кластеров зачастую близко к R, так как много синглетонов (кластеров с одним элементом) 14 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 15. Алгоритм решения Обычно включает в себя следующие шаги •  Подготовка данных −  Нормализация данных −  Нормализация схемы данных •  Попарное сравнение данных −  Сравнение атрибутов данных при помощи подходящих функций близости −  Близость данных – функция от близости их атрибутов •  Применение ограничений −  Транзитивность −  Связывание данных −  Группировка 15 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 16. Подготовка данных •  Нормализация схемы данных −  Схема – «телефон» и «контактный телефон» −  Сложные атрибуты - адрес Вложенные атрибуты −  −  Наборы атрибутов −  Сегментация данных •  Нормализация данных −  Строчные буквы, пробелы −  Исправление заранее известных ошибок −  Расшифровка аббревиатур −  Часто используются словари 16 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 17. Сравнение атрибутов записей •  Для каждой пары записей вычисляются •  Функции близости (distance functions) близости их атрибутов −  Булевская −  sim(A.phone,A.phone),sim(A.name,B.name),… −  Редактирования •  Levenshtein, Jaro-Winkler, Monge-Elkan −  Фонетическая •  Soundex −  На основе множеств •  Dice, Jaccard −  На основе векторов •  TF-IDF, softTF-IDF −  Перевод SecondString, http://secondstring.sourceforge.net/ •  Аббревиатуры Simmetrics: http://sourceforge.net/projects/simmetrics/ LingPipe, http://alias‐i.com/lingpipe/index.html 17 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 18. Функция Levenshtein Вычисляется близость i символов из s и j символов из t (от начала строк) " D s, t, i −1, j −1 si = t j $ ( ) если $ D ( s, t, i −1, j −1) +1 $ если производится замена t j на si D(s, t, i, j) = min # $ D ( s, t, i, j −1) +1 если производится вставка tj $ если производится удаление si $ D ( s, t, i −1, j ) +1 % 18 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 19. Levenshtein. Пример Levenshtein Стоимости (берется минимальная из перечисленных) •  Совпадение: если символ совпадает, взять стоимость из левой верхней диагонали •  Замена: если символ не совпадает, взять стоимость из левой верхней диагонали и добавить 1 •  Вставка: взять стоимость слева и добавить 1 Модификации Levenstein •  Удаление: взять стоимость сверху и добавить 1 •  Needleman-Wunsch: разные стоимости •  Smith-Waterman: учет начала и конца t h i s •  Affine gap: последовательная вставка/ 0 1 2 3 4 удаление дешевле •  Monge-Elkan: Smith-Waterman+affine h 1 1 1 2 3 Дистанция a 2 2 2 2 3 s 3 3 3 3 2 19 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 20. Функция Jaro-Winkler 1 ⎛ sʹ′ t ʹ′ sʹ′ − τ ⎞ Jaro( s, t ) = ⎜ + + ⎟ 3 ⎜ s ⎝ t sʹ′ ⎟ ⎠ max ( s , t ) d= −1 s ʹ′, t ʹ′ – последовательности общих символов 2 Два символа считаются общими, если b j = ai i − d ≤ j ≤ i + d τ – половина кол-ва перестановок в последовательности общих символов Алексей 1 ⎛ 7 7 7 − 1 ⎞ Алескей d = 2 τ =1 Jaro = ⎜ + + ⎟ ≈ 0.95 3 ⎝ 7 7 7 ⎠ JaroWinkler (s, t ) = Jaro(s, t ) − i ⋅ 0.1⋅ (1 − Jaro(s, t )) i – общий префикс (но не больше 4) 20 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 21. Функции с множествами и векторами Сравниваемые строки разбиваются на слова Jaccard, Dice A∩ B Jaccard ( A, B ) = Отношение пересечения и объединения слов A∪ B 2 A∩B Dice(A, B) = TF-IDF A+B Вычисление косинуса векторов с весами слов V ʹ′(w, S ) SimTFIDF ( S , T ) = ∑V (w, S )⋅V (w, T ) w∈S ∩T V ( w, S ) = ∑wʹ′V ʹ′(w, S ) 2 V ʹ′(w, S ) = log(TFw, S + 1)⋅ log(IDFw ) Soft TF-IDF SimSoftTFIDF ( S , T ) = w∈CLOSE ∑(θV (w), S )⋅V (w, T )⋅ N (w, T ) , S ,T N ( w, T ) = max w∈T simCLOSE simCLOSE (w, v ) > θ 21 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 22. Сравнение эффективности функций близости Средние значения по 11 наборам данных M. Bilenko, R. Mooney, W. Cohen, P. Ravikumar and S. Fienberg. Adaptive Name Matching in Information Integration. IEEE Intelligent Systems, Vol. 18 Is 5, 2003 22 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 23. Сравнение записей Задача: вычислить дистанцию между записями, представленными в виде векторов значений функций близости •  Взвешенная сумма (или среднее) дистанций атрибутов −  Необходимо определять порог •  Правила −  Необходимо писать правила •  Машинное обучение −  Необходим набор данных для обучения 23 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 24. Сравнение эффективности дистанций Использование машинного обучения и структуры записей 24 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 25. Применение ограничений Виды ограничений •  Транзитивность (для поиска дубликатов) −  Если M1 и M2, а также M2 и M3 совпадают, то M1 и M3 тоже совпадают −  Следствие: если M1 и M2, а также M2 и M3 не совпадают, то M1 и M3 не могут совпадать •  Эксклюзивность (для согласования данных) −  Если M1 и M2 совпадают, то M2 и M3 не могут совпадать −  Следствие: M3 может совпадать с какой-либо другой записью M4 •  Функциональная зависимость (для очистки данных) −  Если M1 и M2 совпадают, то M3 и M4 тоже совпадают −  Следствие: как в транзитивности •  В зависимости от данных 25 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 26. Согласование данных Согласование Дано: попарные расстояния между записями в N источниках. Найти: совпадения с максимальной суммой весов •  NP-полная задача, используются субоптимальные алгоритмы на основе попарно несмежных ребер в графе 26 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 27. Группировка дубликатов Дубликаты Дано: попарные расстояния между записями. Найти: группы записей, представляющих один и тот же объект •  Попарное сравнение может дать неполноценный результат (не выполняется транзитивность) •  Иногда транзитивность может быть вредной •  Кластеризация −  Иерархическая [Bilenko et al, ICDM 05] −  К-ближайщих соседей [Chaudhuri et al, ICDE 05] •  Проблема транзитивности остается •  Сложность определения шага остановки кластеризации 27 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 28. Масштабируемость Попарных сравнений может быть очень много Пример •  Население СПб 5*106 человек, сравнений будет ~12*1012. Если одно сравнение занимает 1 мс, то весь процесс займет несколько сотен лет Возможное решение •  Предварительная разбивка на наборы данных, между которыми сравнение не будет произведено [McCallum et al., SIGKDD 2000] •  Простая дистанция 28 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 29. Заключение Поиск дубликатов •  Очень важен этап нормализации данных •  Выбор функции близости Проблемы поиска дубликатов •  Большие данные (Big Data) •  Гетерогенность данных •  Масштабируемость Актуальные задачи •  Согласование аккаунтов в социальных сетях (Twitter, Facebook, Foursquare) •  Согласование данных из различных справочников (Wikipedia, Google Places, Lonely Planet) 29 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 30. Ссылки Библиотеки •  SecondString, http://secondstring.sourceforge.net/ •  Simmetrics: http://sourceforge.net/projects/simmetrics/ •  LingPipe, http://alias‐i.com/lingpipe/index.html Литература •  M. Bilenko, R. Mooney, W. Cohen, P. Ravikumar and S. Fienberg. Adaptive Name Matching in Information Integration. IEEE Intelligent Systems, Vol. 18 Is 5, 2003 (практические рекомендации) •  L. Getoor, A. Machanavajjhala. VLDB 2012 Tutorial on Entity Resolution •  Elmagarmid et al., Duplicate Record Detection: A Survey. IEEE Transactions on Knowledge and Data Engineering, Vol. 19, No. 1. (January 2007) (все, что надо знать о поиске дубликатов на 16 страницах текста) •  P. Christen. Data Matching Springer 2012 (большая книга) 30 © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.
  • 31. Конец © Copyright 2012 Hewlett-Packard Development Company, L.P. The information contained herein is subject to change without notice.