Tamr (раніше Data Tamer) здійснює дедуплікацію бази даних в масштабі. Залучаються Naive Bayes та кластеризація графів.
Я вважаю, що алгоритми значною мірою реалізовані в SQL, що дещо дивно, але основним автором їхньої праці є Майкл Стоунбракер, який допоміг створити PostgreSQL.
Ознайомтеся з посиланням тут .
Редагувати: Нижче я підсумував кроки, які їх виконує. Деякі мої слова майже такі самі, як у їхній статті.
Система дедупликації Тамра має два основні етапи роботи з новим джерелом даних: (1) Ідентифікація атрибутів та (2) Консолідація особи. Вони приблизно еквівалентні дедуплікації стовпців та дедупликації рядків.
1) Порівнюючи нове джерело даних з існуючим, перший крок - Ідентифікація атрибутів.
Атрибути (стовпці) нового джерела відображаються в атрибутах існуючого джерела за допомогою чотирьох алгоритмів:
- Порівняйте імена атрибутів із нечітким порівнянням рядків (подібність триграму косинуса)
- Розглянемо цілий стовпець як документ, токенізуємо, виміряємо загальну частоту / зворотну частоту документа (TF-IDF) косинусної подібності між цим та іншими стовпцями.
- Мінімальна довжина опису: порівняйте два стовпчики на основі розмірів їх перетину та об'єднання з точним узгодженням.
- Для числових стовпців виконайте t-тест між новим стовпцем та існуючими числовими стовпцями, щоб визначити, чи були вони з одного розподілу.
2) Об'єднання об'єднань (дедупликація рядків)
Після того, як ідентифікація атрибутів виконана, ми хочемо подвоєти рядки (записи).
Категоризація з кластеризацією
Записи спочатку групуються в категорії на основі подібності, а потім правила дедуплікації вивчаються на рівні категорії. Приклад, який вони дають для категоризації, стосується бази даних гірськолижних курортів, де західні гірськолижні курорти мають бути різною категорією від гірськолижних курортів Сходу, оскільки такі особливості, як базова висота, сильно відокремлені тим, чи є курорт на схід чи захід. Категоризація проводиться за допомогою алгоритму кластеризації, з прикладом k-засобів.
Дедуплікація з наївними байесами
Після виявлення атрибутів та класифікації записів у категорії, ми вивчаємо правила дедуплікації для кожної категорії на основі навчальних наборів оперізуючих та невідкладних матеріалів.
Існує два типи правил дедуплікації:
- Порогові значення для подібності атрибутів щодо функції відстані, яка має сенс для атрибута. (У статті не зрозуміло, як дізнатися ці пороги.)
- Розподіл вірогідності на дуп і недупи в кожному атрибуті. наприклад
P("Title" values similar | duplicate) ~ 1
і
Pr("State" values are different | duplicate) ~ 0
Для кожної пари записів ми обчислюємо схожість кожного з їх атрибутів wrt відповідною метрикою відстані. Якщо будь-який атрибут має схожість понад його поріг, пара записів подається через класифікатор Naive Bayes, який класифікується як дуп або недур.
Моє припущення полягає в тому , що для запису X1 = (a1,b1,c1,d1)
, X2 = (a2,b2,c2,d2)
вони обчислюють вектор подібності , S = (s_a, s_b, s_c, s_d)
де s_i
є схожість для цього атрибута WRT на правильному відстані метрики.
Я припускаю, що їх класифікатор Naive Bayes має таку структуру:
P(dupe|S) = P(dupe)P(s_a|dupe)(s_b|dupe)(s_c|dupe)P(s_d|dupe) / P(S)
Дозвіл сутності з кластеризацією графіків
Після етапу класифікації у нас є підмножина записів із заданої категорії, які вважаються парними дублікатами. Тепер їх потрібно вирішити в окремі утворення . Це вирішує проблему перехідності: якщо запис t1 є дупею t2, а t2 - дупею t3, то t1 також повинен бути дупею t3. Це означає, що t1, t2 і t3 являють собою одне ціле .
Для цього кроку використовується структура графіків . У межах категорії кожен запис, який може бути дупом, - це вузол. Вузли, які підозрюються в обробці один одного, мають між собою краї. Потім кластери виявляються на графіку, а потім об'єднуються разом на основі порогів щодо того, наскільки сильно один кластер з'єднаний з іншим. Ось три приклади пар кластерів, які можуть бути або не можуть бути об'єднані разом на основі їх зв’язності:
c1 c2
x-x-x-----y-y-y
|\|/| |\|/|
x-x-x-----y-y-y Meets similiarity threshold
|/|\| |/|\|
x-x-x-----y-y-y
x-x-x y-y-y
|\|/| |\|/|
x-x-x-----y-y-y Does not meet similarity threshold
|/|\| |/|\|
x-x-x y-y-y
x y
| |
x-----y Meets similarity threshold
| |
x y
Коли алгоритм припиняється, кожен кластер повинен представляти окрему сутність у межах категорії . Для завершення процесу атрибути цього об'єкта повинні бути визначені з атрибутів записів всередині нього . Спочатку нулі відкидаються, потім використовуються методи, що включають частоту, середню, медіану та найдовшу.
У статті також розроблені деякі методи використання експертів домену, щоб допомогти, коли алгоритми не впевнені, і як використовувати декілька експертів з різним рівнем знань.