37
Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени на базе Amazon Kinesis/Lucene Александр Сербул Руководитель направления

Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

  • Upload
    ontico

  • View
    151

  • Download
    6

Embed Size (px)

Citation preview

Page 1: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система

реального времени на базе Amazon Kinesis/Lucene

Александр СербулРуководитель направления

Page 2: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Карл… Карл, я активно использую Elastic Search

Это очень круто, пап!

Page 3: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Карл… Карл, я специалист по BigData….

Это очень круто, пап!

Но я до сих пор не понимаю, как работает обратный индекс и вздрагиваю от термина «реляционная алгебра»

Page 4: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

О чем поговорим

1. Типы и алгоритмы рекомендательных систем –

кратко

2. Как мы собираем данные о действиях клиентов

3. Архитектура нашей рекомендательной системы

4. Статистика использования

5. Советы как писать свои рекомендательные системы

4 / 37

Page 5: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Типы и алгоритмы рекомендательных систем

1. Релевантный контент – «угадываем мысли»

2. Релевантный поиск

3. Предлагаем то, что клиенту нужно как раз

сейчас

4. Увеличение лояльности, конверсии

5 / 37

Page 6: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

6 / 37

Page 7: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Объем продаж товаров

1. Best-sellers

2. Топ-продаж…

3. С этим товаром покупают

4. Персональные рекомендации

7 / 37«Mining of Massive Datasets», 9.1.2: Leskovec, Rajaraman, Ullman (Stanford University)

Page 8: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Коллаборативная фильтрация

1. Предложи Товары/Услуги, которые есть

у твоих друзей (User-User)

2. Предложи к твоим Товарам другие

связанные с ними Товары (Item-Item):

«сухарики к пиву»

8 / 37

Page 9: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Возможности коллаборативной фильтрации

1. Персональная рекомендация (рекомендуем посмотреть

эти Товары)

2. С этим Товаром покупают/смотрят/… (глобальная)

3. Топ Товаров на сайте

Apache Spark MLlib (als), Apache Mahout (Taste) + неделька

Объем данных

Объем модели, требования к «железу»

9 / 37

Page 10: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Content-based рекомендации

1. Купил пластиковые окна – теперь их предлагают на

всех сайтах и смартфоне.

2. Купил Toyota, ищу шины, предлагают шины к Toyota

- Поисковый «движок»: Sphinx, Lucene (Solr)

- «Обвязка» для данных

- Хранение профиля Клиента

- Реализация: неделька. Риски – объем данных, языки.

10 / 37

Page 11: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Тюнинг рекомендательных систем

1. Рекомендовать постоянно «возобновляемые»

Товары (молоко, носки, …)

2. Рекомендовать фильм/телевизор – один раз до

покупки

3. Учет пола, возраста, размера, …

11 / 37

Page 12: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Как собирать данные от клиентов?

1.Как собирать?

2.Куда собирать?

3.Как обрабатывать?

4.Потоковые алгоритмы...

12 / 37

Page 13: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Технологии - Apache Kafka

http://kafka.apache.org/

1. “LinkedIn”

2. Не совсем очередь

3. Совсем не очередь!

4. Клиентское приложение

«держит» курсор потока

5. Scala!

13 / 37

Page 14: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Технологии - Apache Kafka глубже

1. Очереди 2.0?

2. Highload – очереди?

3. “Халтура?” :-)

14 / 37

Page 15: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Технологии - Apache Storm

http://storm.apache.org

1. Task parallel

2. Удобные, гибкие workflow

3. Clojure/JVM

15 / 37

Page 16: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Apache Hadoop

Платформа:

- вычисления (MapReduce)

- файловая система (HDFS)

- “SQL-запросы” по данным (Hive)

16 / 37

Page 17: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Apache Spark

17 / 37

Page 18: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Война систем хранения

• SQL на MapReduce: Hive, Pig, Spark SQL

• SQL на MPP (massive parallel processing):

Impala, Presto, Amazon RedShift, Vertica

• NoSQL: Cassandra, Hbase, Amazon DynamoDB

• Классика: MySQL, MS SQL, Oracle, …

18 / 37

Page 19: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Lambda-архитектура

• Людей заваливает

данными…

• С большой скоростью

19 / 37

Page 20: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Инвертированный (обратный) индекс

20 / 37Christopher D. Manning, Prabhakar Raghavan and Hinrich Schutze, "Introduction to Information Retrieval", Cambridge University Press. 2008.

Page 21: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

IR, NLP

21 / 37Christopher D. Manning, Prabhakar Raghavan and Hinrich Schutze, "Introduction to Information Retrieval", Cambridge University Press. 2008.

Page 22: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Академическая теория, Computer Science,как же скучно, хочется спать…

Page 23: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Отдадим должное гениям! Создатели великолепных поисковых движков

23 / 37Андрей Аксенов, «Sphinx» Doug Cutting, «Lucene»

Page 24: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Карл… Карл, я всю жизнь пишу код. Всю жизнь!

Это очень круто, пап!

Page 25: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Карл… Карл, я специалист по BigData….

Это очень круто, пап!

Но я так ничего серьезного и не написал. НИ-ЧЕ-ГО...

Page 26: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Кофе или … марихуана?

1. Много хороших программистов — C++

2. Много тестировщиков — C++

3. Много свободного времени на разработку — C++

4. Много сводобных ночей на отладку - C++

5. Предметная область формализована — C++

6. Требования не меняются - C++

Иначе: java ;-)

26 / 37

Page 27: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Apache Lucene

27 / 37

Page 28: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Apache Lucene: +/-

1. (-) Нет нормальной поддержки русского языка

2. (-) Нет русской морфологии

3. (-) Документация иногда оставляет желать лучшего

4. (-) Нет решения для 100% онлайн индексации

5. (+) Компактный индекс (гигабайты)

6. (+) Лаконичное API

7. (+) Транзакционность

8. (+) Thread-safety

28 / 37

Page 29: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Redis

1.Профиль Пользователя: десятки тэгов

2.Стемминг Портера

3.Высокочастотные слова, tf/idf

4.Алгоритмы вытеснения тэгов

5.Куда можно развивать… (word2vec,

glove, синонимы ...)

29 / 37

Page 30: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Архитектура content-based рекомендаций

30 / 37

Amazon Kinesis

Java indexing workers (16)

~1700 событий/сек

Index (disk)

Index (disk)Redis (profiles)

Раздающий Servlet

Page 31: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Процессы

1.Многопоточный индексатор, java/lucene

2.Amazon Kinesis – как буффер

3.Индекс в папке на диске, вытеснение

4.Как реализован “онлайн” - выдать

секрет :-)

5.Раздающий Servlet

31 / 37

Page 32: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Цифры

1.“Потребители”: десятки тысяч интернет-магазинов

2.“Поставщики”: все сайты на Битрикс, больше 100к

3.Тэги Профиля: название страницы, h1

4.Индекс Товаров: название, разделы

5.Индекс: гигабайты, сотня файлов в папке

32 / 37

Page 33: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Цифры

33 / 37

Page 34: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

На закуску!

Page 35: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Полезные ссылки

1. http://ruscorpora.ru/

2. Томита-парсер (Яндекс)

3.http://www.deeplearningbook.org/

4. Google SyntaxNet

5.Word2Vec, Glove

6. Semantical spaces mapping

35 / 37

Page 36: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Семантические пространства и deep learning

36 / 37

«Dual Encoder LSTM»

TensorFlowTheanoTorch7Deeplearning4j

Page 37: Семантическое ядро рунета - высоконагруженная сontent-based рекомендательная система реального времени

Спасибо за внимание! Вопросы?

Александр Сербул @[email protected]