Семантическое ядро рунета

50 %
50 %
Information about Семантическое ядро рунета

Published on October 29, 2016

Author: ceesecr

Source: slideshare.net

1. XII международная конференция CEE-SECR / РАЗРАБОТКА ПО 28 - 29 октября, Москва Александр Сербул Семантическое ядро рунета – высоконагруженная сontent-based рекомендательная система реального времени на базе Amazon Kinesis/Lucene ООО “1С-Битрикс”

2. О чем поговорим? Типы и алгоритмы рекомендательных систем – кратко Как мы собираем данные о действиях клиентов Архитектура нашей рекомендательной системы Статистика использования Советы как писать свои рекомендательные системы 2 / 32

3. Типы и алгоритмы рекомендательных систем Релевантный контент – «угадываем мысли» Релевантный поиск Предлагаем то, что клиенту нужно как раз сейчас Увеличение лояльности, конверсии 3 / 32

4. Объем продаж товаров Best-sellers Топ-продаж… С этим товаром покупают Персональные рекомендации «Mining of Massive Datasets», 9.1.2: Leskovec, Rajaraman, Ullman (Stanford University) 4 / 32

5. Коллаборативная фильтрация  Предложи Товары/Услуги, которые есть у твоих друзей (User-User)  Предложи к твоим Товарам другие связанные с ними Товары (Item- Item): «сухарики к пиву» 5 / 32

6. Возможности коллаборативной фильтрации  Персональная рекомендация (рекомендуем посмотреть эти Товары)  С этим Товаром покупают/смотрят/… (глобальная)  Топ Товаров на сайте Apache Spark MLlib (als), Apache Mahout (Taste) + неделька Объем данных Объем модели, требования к «железу» 6 / 32

7. Content-based рекомендации Купил пластиковые окна – теперь их предлагают на всех сайтах и смартфоне. Купил Toyota, ищу шины, предлагают шины к Toyota  Поисковый «движок»: Sphinx, Lucene (Solr)  «Обвязка» для данных  Хранение профиля Клиента  Реализация: неделька. Риски – объем данных, языки. 7 / 32

8. Тюнинг рекомендательных систем  Рекомендовать постоянно «возобновляемые» Товары (молоко, носки, …)  Рекомендовать фильм/телевизор – один раз до покупки  Учет пола, возраста, размера, … 8 / 32

9. Как собирать данные от клиентов? Как собирать? Куда собирать? Как обрабатывать? Потоковые алгоритмы... 9 / 32

10. Технологии - RabbitMQ http://www.rabbitmq.com 1.Очереди сообщений на все вкусы 2.AMQP 3.Erlang 10 / 32

11. Технологии - Apache Kafka http://kafka.apache.org/ 1.“LinkedIn” 2.Не совсем очередь 3.Совсем не очередь! 4.Клиентское приложение «держит» курсор потока 5.Scala 11 / 32

12. Технологии - Apache Storm http://storm.apache.org 1.Task parallel 2.Удобные, гибкие workflow 3.Clojure/JVM 12 / 32

13. Технологии - Pinba http://pinba.org Агрегация внутри собств. движка в MySQL 1.Интеграция с PHP 2.Быстро, удобно 3.Badoo.com 13 / 32

14. Apache Hadoop • Платформа: • - вычисления (MapReduce) • - файловая система (HDFS) • - “SQL-запросы” по данным (Hive) 14 / 32

15. Apache Spark • Скорость! • Работа в памяти • Кэширование в памяти • Простота развертывания 15 / 32

16. Парадигма MapReduce «Mining of Massive Datasets»: Leskovec, Rajaraman, Ullman (Stanford University)16 / 32

17. Apache Spark 17 / 32

18. «Online» алгоритмы, они другие! • Кластеризация • Уникальные элементы • Агрегация • Ограничения по памяти • Это – уже не SQL ;-) «Mining of Massive Datasets»: Leskovec, Rajaraman, Ullman (Stanford University) 18 / 32

19. Война систем хранения • 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, … 19 / 32

20. Lambda-архитектура • Людей заваливает данными… • С большой скоростью  20 / 32

21. BigData – «под капотом». Виды событий. Событие • Кука Пользователя • Хэш лицензии • Домен • ID товара • Название Товара • Категории Товара • ID рекомендации • ряд других Просмотр товара Добавление в корзину Заказ Оплата Заказа 21 / 32

22. Регистрация Хранение BigData – «под капотом». С птичьего полета. ~1000 запросов/сек bitrix.info Обработка, анализ Batch процессинг On-line процессинг Выдача ключевой информации analytics.bitrix.info 22 / 32

23. Amazon DynamoDB nginx+Lua Amazon Kinesis BigData – «под капотом». Регистрация событий. ~1000 запросов/сек Буфер bitrix.info worker’s cluster worker (PHP) ~100 запросов/сек фильтрация worker (PHP) worker (PHP) worker (PHP) worker (PHP) worker (PHP) worker (PHP) worker (PHP) Лог событий Пользов атели Домены 23 / 32

24. Amazon DynamoDB BigData – «под капотом». Обработка, анализ, выдача. Лог событий Пользов атели Домены Apache Spark Сервер (spot) Amazon S3 Файл данных Файл данных Сервер (spot) Сервер (spot) Сервер (spot) … Кластер рекомендаций Apache Tomcat Apache Mahout «Мозги» Выдача analytics.bitrix.info 24 / 32

25. Apache Lucene  Doug Cutting: Nutch, Hadoop (Yahoo!)… сейчас в Cloudera  Lucene: Solr, ElasticSearch  Lucene: грамотная многопоточность из коробки 25 / 32

26. Apache Lucene: +/-  (-) Нет нормальной поддержки русского языка  (-) Нет русской морфологии  (-) Документация иногда оставляет желать лучшего  (-) Нет решения для 100% онлайн индексации  (+) Компактный индекс (гигабайты)  (+) Лаконичное API  (+) Транзакционность  (+) Thread-safety 26 / 32

27. Redis ● Профиль Пользователя: десятки тэгов ● Стемминг Портера ● Высокочастотные слова ● Алгоритмы вытеснения тэгов ● Куда можно развивать… (word2vec, glove, синонимы ...) 27 / 32

28. Amazon Kinesis Java indexing workers (16) ~1000 событий/сек Архитектура content-based рекомендаций Index (disk) Index (disk)Redis (profiles) Раздающий Servlet 28 / 32

29. Процессы ● Многопоточный индексатор, java/lucene ● Amazon Kinesis – как буффер ● Индекс в папке на диске, вытеснение ● Как реализован “онлайн” ● Раздающий Servlet 29 / 32

30. Цифры и данные ● “Потребители”: десятки тысяч интернет-магазинов ● “Поставщики”: все сайты на Битрикс, больше 100к ● Тэги Профиля: название страницы, h1 ● Индекс Товаров: название, краткое описание, разделы ● Индекс: гигабайты, сотни файлов в папке 30 / 32

31. Цифры и данные 31 / 32

32. Спасибо за внимание! Вопросы? Александр Сербул @AlexSerbul serbul@1c-bitrix.ru

Add a comment