SlideShare a Scribd company logo
Эталонное описание фильма на основе десятков дубликатов
Эталонное описание
фильма на основе
десятков дубликатов
Антон Ивинский
Где встречается задача
поиска дубликатов
4
5
6
7
Делаем лучшую в мире
библиотеку фильмов
Цель: красивая карточка для каждого фильма
〉 Терминатор
〉 История противостояния
солдата Кайла Риза и киборга-
терминатора…
〉 1984
〉 Великобритания, США
〉 … десятки других полей
9
А также
〉 Билеты в кино
〉 Посмотреть на ТВ
〉 Ссылки на просмотр онлайн
10
Источники
〉 Студии производители и
прокатчики
〉 Агрегаторы и партнеры
〉 Поставщики
телепрограммы,
кинотеатры
〉 …
〉 Редакция
11
Связываем фильмы
Создаем отдельную коллекцию с эталонными
записями
〉 Как создавать и заполнять эталоны?
〉 Как находить эталоны для дубликата
〉 У двух фильмов разные описания - какое выбрать?
12
Эталонное описание фильма на основе десятков дубликатов
14
Создаем эталоны
Создаем эталоны
Документ
〉 Терминатор
〉 1984
〉 США
16
Создаем эталоны
Документ
〉 Терминатор
〉 1984
〉 США
Эталон
〉 Терминатор
〉 1984
〉 США
17
Создаем эталоны
Документ (источник 2)
〉 Терминатор
〉 История противостояния
солдата Кайла Риза и
киборга…
〉 1984
〉 Великобритания, США
Эталон
〉 Терминатор
〉 1984
〉 США
18
Создаем эталоны
Документ (источник 2)
〉 Терминатор
〉 История противостояния
солдата Кайла Риза и
киборга…
〉 1984
〉 Великобритания, США
Эталон
〉 Терминатор
〉 История противостояния
солдата Кайла Риза и
киборга…
〉 1984
19
Создаем эталоны
Эталон
〉 Терминатор
〉 История противостояния
солдата Кайла Риза и
киборга…
〉 1984
〉 Великобритания, США
20
21
Выберем эталон
Документ
〉 Годзилла
〉
〉
〉 США, Япония
Эталон 1
〉 Годзилла
〉 1998
〉 …
〉 США, Япония
Эталон 2
〉 Годзилла
〉 2014
〉 …
〉 США, Япония
22
Быстро находим
эталонные карточки
фильмов
24
Сложности перевода
Документ
〉 Один плюс один
〉 2011
〉 Франция
Эталон
〉 1+1
〉 2011
〉 Франция
25
Сложности перевода
Документ
〉 Неприкасаемые
〉 2011
〉 Франция
Эталон
〉 1+1
〉 2011
〉 Франция
26
Сложности перевода
Документ
〉 The Intouchables (EN)
〉 Неприкасаемые (RU)
〉 2011
〉 Франция
Эталон
〉 The Intouchables (EN)
〉 1+1 (RU)
〉 2011
〉 Франция
27
Сложности перевода
〉 Проводим нормализацию
〉 Мультиязычные поля храним на всех языках
28
29
Сравниваем только топ N похожих карточек
〉 Какие поля использовать для сравнения
〉 Как выбрать N
30
Поля для сравнения
〉 название (на всех языках)
〉 название + год + страна
〉 все поля сразу
31
Сколько лучших совпадений просматривать?
Чтобы среди них в > 99% был искомый фильм
〉 1 - плохо
〉 2-4 может быть недостаточно для качества
〉 5-10 оптимально
〉 больше 20 - попробуйте построить другой индекс
32
Тестируйте качество
〉 Возьмите эталонную карточку фильма
〉 Проверьте что по ее полям находится она сама
〉 Удалите несоколько полей
〉 Проверьте что карточка все еще находится
〉 Повторите много ��аз с другими эталонами
33
34
Связываем фильмы и
эталоны
36
Связываем дубликаты
〉 3 000 000 фильмов с повторами от разных
источников
〉 700 000 эталонных карточек фильмов
〉 Для каждого фильма находим до 20 похожих
карточек
Найденная карточка соответствует фильму или нет?
37
Детерминированный
подход
Детерминированный подход
Придумываем правила сами
〉 Должны совпадать название, год, и есть
совпадающие страны
39
Детерминированный подход. Пример 1
Документ
〉 Даун Хаус
〉 …
〉 2001
〉 Россия
Эталон
〉 Даун Хаус
〉 …
〉 2000
〉 Россия
40
Детерминированный подход
Правила
〉 Должны совпадать название, год, и есть
совпадающие страны
〉 Если года отличаются не больше чем на один,
считаем что отличия нет (new!)
41
Детерминированный подход. Пример 2
Документ
〉 The Intouchables (EN)
〉 Неприкасаемые (RU)
〉 2011
〉 Франция
Эталон
〉 The Intouchables (EN)
〉 1+1 (RU)
〉 2011
〉 Франция
42
Детерминированный подход
Правила
〉 Должны совпадать название, год, и есть
совпадающие страны
〉 Если года отличаются не больше чем на один,
считаем что отличия нет
〉 Должно совпадать хотя бы одно название на одном
языке (new!)
43
Детерминированный подход. Пример 3
Документ
〉 Wanted (EN)
〉 Разыскивается (RU)
〉 2007
〉 США
Эталон
〉 Wanted (EN)
〉 Особо опасен (RU)
〉 2008
〉 США, Германия
44
Детерминированный подход
Правила
〉 Должны совпадать название, год, и есть
совпадающие страны
〉 Если года отличаются не больше чем на один,
считаем что отличия нет
〉 Должно совпадать хотя бы одно название на одном
языке
〉 Второе и третье правила только по одному (new!)
45
Поставщик 1 присылает только фильмы из России (new!)
Для сериалов должны пересекаться года +-3 (new!)
Если есть только одно название то оно должно совпадать хотя бы частично
(new!)
Если есть ссылка на киноп��иск
то ничего больше не надо проверять (ne
Не клеить больше чем один фильм (new!)
от одного источника к эталону (new!)
Если есть ссылка хотя бы на один
источник который уже склеен, используем эту ссылку (new!)
Для английского текста используем метрику Жаро-Винклера (new!)
Детерминированный подход
Плюсы
〉 Очень легко начать
〉 Можно понять что произошло
Минусы
〉 Постоянно появляются не учтенные кейсы
〉 Новые правила вносят новые ошибки и
противоречия
46
Детерминированный подход
Когда применять
〉 Есть уникальный id
〉 Уникальный id составляется из нескольких полей
〉 Данные с малым количеством ошибок
47
48
1
Вероятностный подход
Вероятностный подход
Каждому полю проставляем веса (вероятности)
〉 названия [ 0.3 - 0.7 ]
〉 год [ 0.2 - 0.6 ]
〉 страны [ 0.4 - 0.6 ]
50
Сравниваем поля
Названия [ 0.3 - 0.7 ]
〉 Терминатор - Терминатор 1 [0.7]
〉 Ниндзя Терминатор - Терминатор 0.625 [0.55]
〉 Терминатор - Золушка 0 [0.3]
Метрика Жаро-Винклера подойдет ��ля текста. Для нетекстовых
полей придумать свои сравнения
51
Сравниваем поля
год [ 0.2 - 0.6 ]
〉 1994 - 1994 [0.6]
〉 1994 - 1995 [0.4]
〉 1994 - 1960 [0.2]
52
Вероятностный подход. Пример 1
Документ
〉 Даун Хаус
〉 …
〉 2001
〉 Россия
Эталон
〉 Даун Хаус
〉 …
〉 2000
〉 Россия
53
Вес
0.7
0.4
0.6
Агрегируем вероятности (Наивный Байес)
〉 Предполагаем независимость
〉 Начальная вероятность 0.5
0.7 · 0.4 · 0.6
0.7 · 0.4 · 0.6 + 0.3 · 0.6 · 0.4
54
= 0.7
Вероятностный подход. Пример 1
Документ
〉 Даун Хаус
〉 …
〉 2001
〉 Россия
Эталон
〉 Даун Хаус
〉 …
〉 2000
〉 Россия
55
Вес
0.7
0.4
0.6
0.7
Вероятностный подход. Пример 2
Документ
〉 The Intouchables (EN)
〉 Неприкасаемые (RU)
〉 2011
〉 Франция
Эталон
〉 The Intouchables (EN)
〉 1+1 (RU)
〉 2011
〉 Франция
56
Вес
0.7
0.3
0.6
0.6
0.7
Вероятностный подход. Пример 3
Документ
〉 Wanted (EN)
〉 Разыскивается (RU)
〉 2007
〉 США
Эталон
〉 Wanted (EN)
〉 Особо опасен (RU)
〉 2008
〉 США, Германия
57
Вес
0.7
0.3
0.4
0.5
0.4
Вероятностный подход
Выбираем границу для принятия решения
〉 Пример 1 + 0.7
〉 Пример 2 + 0.7
〉 Пример 3 - 0.4
58
Вероятностный подход
Плюсы
〉 Хорошее отношение качество / сложность
реализации
〉 Легко дополнять и менять
Минусы
〉 Веса задаются субъективно
〉 Сложно сравнивать категориальные данные
59
Вероятностный подход
Когда применять
〉 Поля независимы
〉 Нет уникальных id
〉 Надо чтобы работало, без лишних затрат
〉 Детерминированный подход привел к хаосу
60
61
2
Подход машинного
обучения
Подход машинного обучения
Создать обучающую выборку
〉 Фильм поставщика
〉 Эталон
〉 Правильная ли связь (да/нет)
Размер коллекции зависит от задачи
63
Подход машинного обучения
Строим классификатор
〉 Выбираем алгоритм
〉 Считаем признаки сравнения фильмов
〉 Обучаем алгоритм на выборке
〉 Тестируем качество работы
〉 Итеративно улучшаем алгоритм
64
Подход машинного обучения. Пример
Строим простые классификаторы
〉 Признаки - сравнения названий RU, EN, годов, стран
〉 Сравнения считаем так же как в вероятностном подходе
〉 Если [сходство поля] > [граница], принимаем связь
〉 Если [сходство поля] < [граница], отклоняем связь
Применяем AdaBoost
https://ru.wikipedia.org/wiki/AdaBoost 65
Подход машинного обучения. AdaBoost
Начальный вес 0
1. Год < 0.4 - 0.5
2. Страны > 0.2 + 0.35
3. Год < 0.8 - 0.25
4. Название (RU) < 0.8 - 0.25
5. Название (EN) > 0.6 + 0.2
Суммарный вес > 0 принимаем, <= 0 отклоняем связь
https://ru.wikipedia.org/wiki/AdaBoost 66
Подход машинного обучения
Плюсы
〉 Высокое качество, которое легко измеряется
〉 Максимальная автоматизация
Минусы
〉 Нужно создавать выборку для обучения
〉 Реализация и обучение алгоритма может занять много времени
〉 Результаты могут быть не интерпретируемы
67
Подход машинного обучения
Когда применять
〉 Качество матчинга записей - главная цель компании
〉 Есть умение выбирать нужный алгоритм машинного
обучения под задачу
〉 Или есть время разбираться
68
69
3
Не хочу писать все с
нуля
Не пишите
Библиотека Duke для поиска дубликатов и связи записей
〉 Вероятностный подход
〉 На базе Lucene
〉 Есть API и консольный интерфейс
〉 Конфигурирование через xml
〉 Apache license - подходит для коммерческой разработки
〉 https://github.com/larsga/Duke
71
Duke. Cleaner
Простые
〉 LowerCaseNormalizeCleaner
〉 DigitsOnlyCleaner
〉 TrimCleaner
Сложные
〉 PersonNameCleaner
〉 RegexpCleaner
72
Duke. Cleaner
73
/**
* A function which turn a value into a normalized value suitable
* for comparison.
*/
public interface Cleaner {
/**
* Returns a cleaned value.
*/
public String clean(String value);
}
Duke. Comparator
Простые для строк
〉 ExactComparator
〉 Levenshtein
〉 JaroWinkler
Сложные для разных типов
〉 PersonNameComparator
〉 SoundexComparator
74
Duke. Comparator
75
/** An operator which compares two values for similarity and returns
* a number in the range 0.0 to 1.0
*/
public interface Comparator {
/** Returns true if the comparator breaks string values up into
* tokens when comparing. Necessary because this impacts indexing
* of values.
*/
public boolean isTokenized();
public double compare(String v1, String v2);
}
Duke. DataSource
〉 CSV data source
〉 JDBC data source
〉 JSON data source
〉 …
〉 Custom data sources
76
Duke. DataSource
77
public interface DataSource {
/**
* Lazily load all records in memory to iterate through
*/
public RecordIterator getRecords();
/**
* Write this DataSource’s config to specified ConfigWriter
*/
void writeConfig(ConfigWriter cw);
}
Машинное обучение на java
Для коммерческой разработки без кластера
〉 Encog
〉 Cognitive Foundry
〉 Mallet
Для коммерческой разработки на кластере
〉 Apache mahout
〉 Apache Spark MLlib
78
Машинное обучение на java
Для исслелований
〉 Weka
〉 RapidMiner
〉 JSAT
〉 java-ml
79
Машинное обучение на java
Еще обзоры
〉 http://machinelearningmastery.com/java-machine-
learning/
〉 http://mloss.org/software/language/java/
80
81
3
Эталонное описание фильма на основе десятков дубликатов
83
Антон Ивинский
Разработчик Медиасервисов
Контакты
anton.ivinskyianton.ivinsky@gmail.com

More Related Content

Эталонное описание фильма на основе десятков дубликатов