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

Preview:

Citation preview

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

Где встречается задача поиска дубликатов

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!)

Если есть ссылка на кинопоиск

то ничего больше не надо проверять (new!)Не клеить больше чем один фильм (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 MLlib78

Машинное обучение на 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

Recommended