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

83

Upload: yandex

Post on 14-Aug-2015

212 views

Category:

Internet


3 download

TRANSCRIPT

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

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

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

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

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

4

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

5

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

6

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

7

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

Делаем лучшую в мире библиотеку фильмов

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

Цель: красивая карточка для каждого фильма

〉 Терминатор

〉История противостояния солдата Кайла Риза и киборга-терминатора…

〉 1984

〉Великобритания, США

〉… десятки других полей

9

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

А также

〉 Билеты в кино

〉Посмотреть на ТВ

〉Ссылки на просмотр онлайн

10

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

Источники

〉Студии производители и прокатчики

〉Агрегаторы и партнеры

〉Поставщики телепрограммы, кинотеатры

〉…

〉Редакция

11

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

Связываем фильмы

Создаем отдельную коллекцию с эталонными записями

〉Как создавать и заполнять эталоны?

〉Как находить эталоны для дубликата

〉У двух фильмов разные описания - какое выбрать?

12

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

14

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

Создаем эталоны

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

Создаем эталоны

Документ

〉 Терминатор

〉 1984

〉США

16

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

Создаем эталоны

Документ

〉 Терминатор

〉 1984

〉США

Эталон

〉 Терминатор

〉 1984

〉США

17

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

Создаем эталоны

Документ (источник 2)

〉 Терминатор

〉История противостояния солдата Кайла Риза и киборга…

〉 1984

〉Великобритания, США

Эталон

〉 Терминатор

〉 1984

〉США

18

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

Создаем эталоны

Документ (источник 2)

〉 Терминатор

〉История противостояния солдата Кайла Риза и киборга…

〉 1984

〉Великобритания, США

Эталон

〉 Терминатор

〉История противостояния солдата Кайла Риза и киборга…

〉 1984

19

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

Создаем эталоны

Эталон

〉 Терминатор

〉История противостояния солдата Кайла Риза и киборга…

〉 1984

〉Великобритания, США

20

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

21

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

Выберем эталон

Документ

〉 Годзилла

〉США, Япония

Эталон 1

〉 Годзилла

〉 1998

〉 …

〉США, Япония

Эталон 2

〉 Годзилла

〉 2014

〉 …

〉США, Япония

22

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

Быстро находим эталонные карточки фильмов

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

24

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

Сложности перевода

Документ

〉 Один плюс один

〉 2011

〉Франция

Эталон

〉 1+1

〉 2011

〉Франция

25

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

Сложности перевода

Документ

〉 Неприкасаемые

〉 2011

〉Франция

Эталон

〉 1+1

〉 2011

〉Франция

26

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

Сложности перевода

Документ

〉 The Intouchables (EN)

〉 Неприкасаемые (RU)

〉 2011

〉Франция

Эталон

〉 The Intouchables (EN)

〉 1+1 (RU)

〉 2011

〉Франция

27

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

Сложности перевода

〉Проводим нормализацию

〉Мультиязычные поля храним на всех языках

28

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

29

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

Сравниваем только топ N похожих карточек

〉Какие поля использовать для сравнения

〉Как выбрать N

30

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

Поля для сравнения

〉 название (на всех языках)

〉 название + год + страна

〉 все поля сразу

31

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

Сколько лучших совпадений просматривать?

Чтобы среди них в > 99% был искомый фильм

〉 1 - плохо

〉 2-4 может быть недостаточно для качества

〉 5-10 оптимально

〉 больше 20 - попробуйте построить другой индекс

32

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

Тестируйте качество

〉Возьмите эталонную карточку фильма

〉Проверьте что по ее полям находится она сама

〉Удалите несоколько полей

〉Проверьте что карточка все еще находится

〉Повторите много раз с другими эталонами

33

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

34

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

Связываем фильмы и эталоны

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

36

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

Связываем дубликаты

〉 3 000 000 фильмов с повторами от разных источников

〉 700 000 эталонных карточек фильмов

〉Для каждого фильма находим до 20 похожих карточек

Найденная карточка соответствует фильму или нет?

37

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

Детерминированный подход

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

Детерминированный подходПридумываем правила сами

〉Должны совпадать название, год, и есть совпадающие страны

39

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

Детерминированный подход. Пример 1

Документ

〉Даун Хаус

〉…

〉 2001

〉Россия

Эталон

〉Даун Хаус

〉…

〉 2000

〉Россия

40

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

Детерминированный подходПравила

〉Должны совпадать название, год, и есть совпадающие страны

〉Если года отличаются не больше чем на один, считаем что отличия нет (new!)

41

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

Детерминированный подход. Пример 2

Документ

〉 The Intouchables (EN)

〉 Неприкасаемые (RU)

〉 2011

〉Франция

Эталон

〉 The Intouchables (EN)

〉 1+1 (RU)

〉 2011

〉Франция

42

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

Детерминированный подходПравила

〉Должны совпадать название, год, и есть совпадающие страны

〉Если года отличаются не больше чем на один, считаем что отличия нет

〉Должно совпадать хотя бы одно название на одном языке (new!)

43

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

Детерминированный подход. Пример 3

Документ

〉Wanted (EN)

〉 Разыскивается (RU)

〉 2007

〉США

Эталон

〉Wanted (EN)

〉 Особо опасен (RU)

〉 2008

〉США, Германия

44

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

Детерминированный подход

Правила

〉Должны совпадать название, год, и есть совпадающие страны

〉Если года отличаются не больше чем на один, считаем что отличия нет

〉Должно совпадать хотя бы одно название на одном языке

〉Второе и третье правила только по одному (new!)

45

Поставщик 1 присылает только фильмы из России (new!)

Для сериалов должны пересекаться года +-3 (new!)Если есть только одно название то оно должно совпадать хотя бы частично (new!)

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

то ничего больше не надо проверять (new!)Не клеить больше чем один фильм (new!)

от одного источника к эталону (new!)

Если есть ссылка хотя бы на один

источник который уже склеен, используем эту ссылку (new!)

Для английского текста используем метрику Жаро-Винклера (new!)

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

Детерминированный подход

Плюсы

〉Очень легко начать

〉Можно понять что произошло

Минусы

〉Постоянно появляются не учтенные кейсы

〉Новые правила вносят новые ошибки и противоречия

46

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

Детерминированный подход

Когда применять

〉Есть уникальный id

〉Уникальный id составляется из нескольких полей

〉Данные с малым количеством ошибок

47

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

48

1

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

Вероятностный подход

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

Вероятностный подход

Каждому полю проставляем веса (вероятности)

〉 названия [ 0.3 - 0.7 ]

〉 год [ 0.2 - 0.6 ]

〉 страны [ 0.4 - 0.6 ]

50

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

Сравниваем поля

Названия [ 0.3 - 0.7 ]

〉 Терминатор - Терминатор 1 [0.7]

〉Ниндзя Терминатор - Терминатор 0.625 [0.55]

〉 Терминатор - Золушка 0 [0.3]

Метрика Жаро-Винклера подойдет для текста. Для нетекстовых полей придумать свои сравнения

51

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

Сравниваем поля

год [ 0.2 - 0.6 ]

〉 1994 - 1994 [0.6]

〉 1994 - 1995 [0.4]

〉 1994 - 1960 [0.2]

52

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

Вероятностный подход. Пример 1

Документ

〉Даун Хаус

〉…

〉 2001

〉Россия

Эталон

〉Даун Хаус

〉…

〉 2000

〉Россия

53

Вес

0.7

0.4

0.6

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

Агрегируем вероятности (Наивный Байес)

〉Предполагаем независимость

〉Начальная вероятность 0.5

0.7 · 0.4 · 0.6

0.7 · 0.4 · 0.6 + 0.3 · 0.6 · 0.4

54

= 0.7

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

Вероятностный подход. Пример 1

Документ

〉Даун Хаус

〉…

〉 2001

〉Россия

Эталон

〉Даун Хаус

〉…

〉 2000

〉Россия

55

Вес

0.7

0.4

0.6

0.7

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

Вероятностный подход. Пример 2

Документ

〉 The Intouchables (EN)

〉 Неприкасаемые (RU)

〉 2011

〉Франция

Эталон

〉 The Intouchables (EN)

〉 1+1 (RU)

〉 2011

〉Франция

56

Вес

0.7

0.3

0.6

0.6

0.7

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

Вероятностный подход. Пример 3

Документ

〉Wanted (EN)

〉 Разыскивается (RU)

〉 2007

〉США

Эталон

〉Wanted (EN)

〉 Особо опасен (RU)

〉 2008

〉США, Германия

57

Вес

0.7

0.3

0.4

0.5

0.4

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

Вероятностный подход

Выбираем границу для принятия решения

〉Пример 1 + 0.7

〉Пример 2 + 0.7

〉Пример 3 - 0.4

58

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

Вероятностный подход

Плюсы

〉Хорошее отношение качество / сложность реализации

〉Легко дополнять и менять

Минусы

〉Веса задаются субъективно

〉Сложно сравнивать категориальные данные

59

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

Вероятностный подход

Когда применять

〉Поля независимы

〉Нет уникальных id

〉Надо чтобы работало, без лишних затрат

〉Детерминированный подход привел к хаосу

60

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

61

2

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

Подход машинного обучения

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

Подход машинного обучения

Создать обучающую выборку

〉Фильм поставщика

〉Эталон

〉Правильная ли связь (да/нет)

Размер коллекции зависит от задачи

63

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

Подход машинного обучения

Строим классификатор

〉Выбираем алгоритм

〉Считаем признаки сравнения фильмов

〉Обучаем алгоритм на выборке

〉 Тестируем качество работы

〉Итеративно улучшаем алгоритм

64

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

Подход машинного обучения. Пример

Строим простые классификаторы

〉Признаки - сравнения названий RU, EN, годов, стран

〉Сравнения считаем так же как в вероятностном подходе

〉Если [сходство поля] > [граница], принимаем связь

〉Если [сходство поля] < [граница], отклоняем связь

Применяем AdaBoost

https://ru.wikipedia.org/wiki/AdaBoost 65

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

Подход машинного обучения. 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

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

Подход машинного обучения

Плюсы

〉Высокое качество, которое легко измеряется

〉Максимальная автоматизация

Минусы

〉Нужно создавать выборку для обучения

〉Реализация и обучение алгоритма может занять много времени

〉Результаты могут быть не интерпретируемы

67

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

Подход машинного обучения

Когда применять

〉Качество матчинга записей - главная цель компании

〉Есть умение выбирать нужный алгоритм машинного обучения под задачу

〉Или есть время разбираться

68

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

69

3

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

Не хочу писать все с нуля

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

Не пишите

Библиотека Duke для поиска дубликатов и связи записей

〉Вероятностный подход

〉На базе Lucene

〉Есть API и консольный интерфейс

〉Конфигурирование через xml

〉Apache license - подходит для коммерческой разработки

〉 https://github.com/larsga/Duke

71

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

Duke. CleanerПростые

〉 LowerCaseNormalizeCleaner

〉DigitsOnlyCleaner

〉 TrimCleaner

Сложные

〉PersonNameCleaner

〉RegexpCleaner

72

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

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); }

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

Duke. Comparator

Простые для строк

〉ExactComparator

〉 Levenshtein

〉 JaroWinkler

Сложные для разных типов

〉PersonNameComparator

〉SoundexComparator

74

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

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

}

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

Duke. DataSource

〉CSV data source

〉 JDBC data source

〉 JSON data source

〉…

〉Custom data sources

76

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

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

}

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

Машинное обучение на java

Для коммерческой разработки без кластера

〉Encog

〉Cognitive Foundry

〉Mallet

Для коммерческой разработки на кластере

〉Apache mahout

〉Apache Spark MLlib78

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

Машинное обучение на java

Для исслелований

〉Weka

〉RapidMiner

〉 JSAT

〉 java-ml

79

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

Машинное обучение на java

Еще обзоры

〉 http://machinelearningmastery.com/java-machine-learning/

〉 http://mloss.org/software/language/java/

80

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

81

3

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

83

Антон Ивинский

Разработчик Медиасервисов

Контакты

[email protected]