Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Павел Велихов, Chief Science Officer @ Toprater.com
Миллиард отзывов и
комментариев и Big Data
Полезные советы, опыт и
граб...
Toprater.com - площадка, где собираются мнения со всего интернета
относительно любых объектов e-commerce.
Первый шаг - соб...
Как пользоваться такой системой?
❖ Хочу поехать на лыжах покататься, но чтобы был
бассейн для детей и аниматоры, которым и...
Western sentimental orchestral melodies permeating every last gouge and lunge, and
especially throughout the sentimental s...
Надо просто понимать отзывы :)
❖ Отзывы могут быть:
❖ Фейковые
❖ Саркастические/Юморные
❖ Написаны на языке Engrish
❖ и та...
❖ “It is day 87 and the horses have
accepted me as one of their own. I have
grown to understand and respect their
gentle w...
Как понять смысл отзыва
❖ Научное название: Aspect-based sentiment analysis +
information extraction
❖ Задача сложная (воо...
Постановка задачи
Если вы ищете спокойную гостиницу
для отдыха с детьми, вам не сюда.
Отличный отель, уютные просторные ко...
Постановка задачи
Текст
отзыва
Выделение
Аспектов
Оценка
по каждому
выделенному
аспекту
Набор
оценок
по аспектам
Данные для машинного обучения
❖ Если уже выделен критерий, легко собрать данные по оценке:
❖ Например, берем Amazon Mechan...
Попробуем простое решение:
❖ По старинке (например, как в курсе у Ng):
❖ Берем простую модель bag-of-words:
❖ Строим класс...
Попробуем простое решение:
❖ По старинке (например, как в курсе у Ng):
❖ Берем простую модель bag-of-words:
❖ Строим класс...
Более продвинутый NLP
❖ Части речи: существительное, глагол, прилагательное, наречие и т.п.
❖ Омонимия (разные значения од...
Пример dependency tree
Very nice hotel with clean rooms,
but we didn't like the restaurant
Части речи
Зависимости
Точность разбора
❖ Стэнфорд дает около 92-93% точности
❖ .92^20 = 18%
❖ То есть обязательно накосячит в достаточно длинном...
Небольшая экскурсия в Deep Learning
❖ Основные ключевые идеи Deep Learning для NLP:
❖ word embeddings. word2vec - только н...
Deep Learning: Embeddings
wt-2 wt-1 wt wt+1 wt+2
wt
Размерность = 50…300
Слово, чье скалярное произведение с
wt максимально
Интересные под-пространства word2vec
PCA проекция на 2-х мерное пространство
Есть и проблемы:
Упс, мы сами не можем разделить классы,
ну и ни один алгоритм не сможет
Deep Learning: Embeddings
❖ Семантическое пространство слов
❖ Но:
❖ Омонимия?
❖ Разные подпростанства, насколько они хорош...
Интеграция prior knowledge в word2vec
❖ Пихать в word2vec еще и разного рода ограничения:
❖ принадлежность к одному классу...
Deep Learning: примитивное использование
❖ word2vec - просто признак для машинного обучения
в модели bag-of-words. Не очен...
Recurrent Neural Network
Fruit flies like napalm in the morning
Классификатор
или
Регрессор
LTSM
❖ С рекуррентными сетями есть проблемы
❖ По сути, они почти ничего не запоминают
❖ LTSM: Long Term Short Memory
❖ Отд...
LTSM мини-пример
input
P
Write Keep
также называют
input gate
также называют
forget gate
P
Sum
P
Read
также называют
outpu...
t0 t1 t2
https://class.coursera.org/neuralnets-2012-001/lecture/95
Recursive NN:
dep
dep
dep
dep
Что мы имеем с DL для NLP?
❖ Обычная история с DL - тренируем на огромных
объемах на GPUs, потом эксплуатируем на CPU
❖ В ...
Перейдем к теме Big Data!
❖ Изначально отзывы занимают какие-то GB
❖ Но “готовый” корпус занимает беспрецедентные объемы
д...
Big Data: первый блин
❖ 200 машин на Google Cloud
❖ Cassandra на выделенном сервере
❖ GNU Parallel
❖ Новые пакеты Stanford...
Текущая архитектура Big Data
❖ Кластер на “дорогих” машинах
❖ Хранение - Cassandra
❖ Быстрая запись и чтение, как последов...
Неожиданный классный инструмент
❖ У нас куча разных обработчиков на разных языках
(C,Java,Jython,Python,Julia), интегриров...
Кроме отзывов, еще куча структурированных данных
❖ Apache Spark + GreenplumDB
❖ GreenplumDB - параллельная SQL СУБД класса...
Спасибо за внимание!
Вопросы и Ответы
https://ru.linkedin.com/in/velikhov
Общие вопросы: feedback@toprater.com
Для команд:...
Upcoming SlideShare
Loading in …5
×

TopRater.com Машинное понимание миллионов отзывов / Павел Велихов (TopRater)

976 views

Published on

Мы строим сервис TopRater.com, который должен агрегировать в себе все мнения из Интернета относительно массы объектов e-commerce. Для этого мы "прочитали" миллионы отзывов и научились выделять из них сущности, аспекты, тональности и факты. При этом, хотя объемы данных кажутся маленькими для специалистов Big Data (всего несколько терабайт) — почти во всех задачах нам пришлось использовать технологии Big Data — сотни серверов на Google Cloud, Apache Spark, MPP Базы данных.

В докладе в форме "галопом по Европам" будет рассказано о гибридных подходах к NLP и машинному обучению, будут всякие интересные простые решения (некоторые широко известные, но, как показывает практика, часто забытые), ну и, конечно, немного про Deep Learning, а также про наш кластер и как там все организовано.

Published in: Engineering
  • Be the first to comment

TopRater.com Машинное понимание миллионов отзывов / Павел Велихов (TopRater)

  1. 1. Павел Велихов, Chief Science Officer @ Toprater.com Миллиард отзывов и комментариев и Big Data Полезные советы, опыт и грабли по продвинутому NLP на больших объемах данных
  2. 2. Toprater.com - площадка, где собираются мнения со всего интернета относительно любых объектов e-commerce. Первый шаг - собрать существующие мнения и их проанализировать. Нас интересуют сотни и тысячи критериев, о которых писалось в отзывах и которые помогают выбрать лучшее
  3. 3. Как пользоваться такой системой? ❖ Хочу поехать на лыжах покататься, но чтобы был бассейн для детей и аниматоры, которым их сдать. А ночью танцы! ❖ Хочу фильм с самым классным 3D, где мощно бьются на мечах и много крови!
  4. 4. Western sentimental orchestral melodies permeating every last gouge and lunge, and especially throughout the sentimental scenes at the end.
  5. 5. Надо просто понимать отзывы :) ❖ Отзывы могут быть: ❖ Фейковые ❖ Саркастические/Юморные ❖ Написаны на языке Engrish ❖ и так далее ❖ После этого - загоняем данные в поисковик, и все!
  6. 6. ❖ “It is day 87 and the horses have accepted me as one of their own. I have grown to understand and respect their gentle ways. Now I question everything I thought I once knew and fear I am no longer capable of following through with my primary objective. I know that those who sent me will not relent. They will send others in my place... But we will be ready” Amazon: Accoutrements Horse Head Mask Не все отзывы оказываются полезными :)
  7. 7. Как понять смысл отзыва ❖ Научное название: Aspect-based sentiment analysis + information extraction ❖ Задача сложная (вообще-то нерешаемая), но оказывается достаточно высокой точности добиться можно. ❖ Для решения в ход идет все из арсенала NLP (Natural Language Processing): ❖ грамматический разбор, онтологии, словари, ручные системы, векторные представления слов и фраз, “традиционное” и глубокое обучение.
  8. 8. Постановка задачи Если вы ищете спокойную гостиницу для отдыха с детьми, вам не сюда. Отличный отель, уютные просторные комнаты, но в ресторане шумно и курят. Аспекты Сентименты
  9. 9. Постановка задачи Текст отзыва Выделение Аспектов Оценка по каждому выделенному аспекту Набор оценок по аспектам
  10. 10. Данные для машинного обучения ❖ Если уже выделен критерий, легко собрать данные по оценке: ❖ Например, берем Amazon Mechanical Turk ❖ Кидаем туда задания, платим $0.01 за каждый ответ ❖ Несколько раз дублируем задание, чтобы не было левых ответов ❖ Можно даже потом сравниться с бенчмарками (но есть проблемы, написал пост на linkedin: “Something is really wrong with sentiment analysis and nobody seems to notice”). ❖ Для задачи выделения критерия - все сложнее, легче делать своими людьми
  11. 11. Попробуем простое решение: ❖ По старинке (например, как в курсе у Ng): ❖ Берем простую модель bag-of-words: ❖ Строим классификатор в аспекты ❖ Вычисляем тональность каждого аспекта Модель: {“был”, ”а”, ”но”, “номер”, “удобным”, “ресторан”, “прокуренным”, “приятный”}
  12. 12. Попробуем простое решение: ❖ По старинке (например, как в курсе у Ng): ❖ Берем простую модель bag-of-words: ❖ Строим классификатор в аспекты ❖ Вычисляем тональность каждого аспекта Модель: {“был”, ”а”, ”но”, “номер”, “удобным”, “ресторан”, “прокуренным”, “приятный”} Текст: “Номер был удобным, но прокуренным, а ресторан приятный”
  13. 13. Более продвинутый NLP ❖ Части речи: существительное, глагол, прилагательное, наречие и т.п. ❖ Омонимия (разные значения одного слова): ❖ пример: Картина ❖ - картина на стене (“на стене висит картина”) ❖ - фильм (“снял хорошую картину”) ❖ - ситуация (“картина событий последних дней Помпей”) ❖ В английском тексте ~ 40% слов омонимичны (!) ❖ Грамматический разбор. Тут обычно 2 варианта: ❖ Constituency Tree ❖ Dependency Tree
  14. 14. Пример dependency tree Very nice hotel with clean rooms, but we didn't like the restaurant Части речи Зависимости
  15. 15. Точность разбора ❖ Стэнфорд дает около 92-93% точности ❖ .92^20 = 18% ❖ То есть обязательно накосячит в достаточно длинном предложении ❖ Еще одна причина не налегать 100% на результаты парсера
  16. 16. Небольшая экскурсия в Deep Learning ❖ Основные ключевые идеи Deep Learning для NLP: ❖ word embeddings. word2vec - только начало ❖ Recurrent NNs ❖ LSTM ❖ Recursive NNs
  17. 17. Deep Learning: Embeddings wt-2 wt-1 wt wt+1 wt+2 wt Размерность = 50…300 Слово, чье скалярное произведение с wt максимально
  18. 18. Интересные под-пространства word2vec PCA проекция на 2-х мерное пространство
  19. 19. Есть и проблемы: Упс, мы сами не можем разделить классы, ну и ни один алгоритм не сможет
  20. 20. Deep Learning: Embeddings ❖ Семантическое пространство слов ❖ Но: ❖ Омонимия? ❖ Разные подпростанства, насколько они хороши? Не очень, но их можно подчинить, задав априорные знания ❖ Например синтаксические подпростанства можно с дополнением частей речи делать ❖ Смешанные модели (слова + символы)
  21. 21. Интеграция prior knowledge в word2vec ❖ Пихать в word2vec еще и разного рода ограничения: ❖ принадлежность к одному классу = минимальное расстояние ❖ если класс маленький - более сильное ограничение ❖ если большой - не так страшно
  22. 22. Deep Learning: примитивное использование ❖ word2vec - просто признак для машинного обучения в модели bag-of-words. Не очень, даже кластеризация - лучше ❖ С текстом мы имеем дело с последовательностью слов, имеет смысл word2vec грамотнее. ❖ В глубоком обучении очень простая модель: рекурентная нейронная сеть.
  23. 23. Recurrent Neural Network Fruit flies like napalm in the morning Классификатор или Регрессор
  24. 24. LTSM ❖ С рекуррентными сетями есть проблемы ❖ По сути, они почти ничего не запоминают ❖ LTSM: Long Term Short Memory ❖ Отдельные нейроны (gates) в сети отвечают за память: ❖ Запись, чтение, keep ❖ При эксплуатации - понятно, что это значит ❖ При тренировке - помогают правильно отправить ошибку назад в прошлое
  25. 25. LTSM мини-пример input P Write Keep также называют input gate также называют forget gate P Sum P Read также называют output gate
  26. 26. t0 t1 t2 https://class.coursera.org/neuralnets-2012-001/lecture/95
  27. 27. Recursive NN: dep dep dep dep
  28. 28. Что мы имеем с DL для NLP? ❖ Обычная история с DL - тренируем на огромных объемах на GPUs, потом эксплуатируем на CPU ❖ В NLP (особенно LSTM и Recursive NNs) - сложно переложить на GPU + алгоритм тренировки backprop во времени или по структуре, да еще и embeddings. Например, пока Theano грандиозного выигрыша не дает ❖ Плюс: если хотите использовать bleeding edge - надо писать все самим. Иначе 1-2 годовалой давности алгоритмы
  29. 29. Перейдем к теме Big Data! ❖ Изначально отзывы занимают какие-то GB ❖ Но “готовый” корпус занимает беспрецедентные объемы данных, например: ❖ 20 тыс предложений = 400Mb данных ❖ В production - поменьше (не всегда), но просто раздать людям поиграться - уже накладно ❖ Как организовать хранение и обработку данных, чтобы было возможно ставить много экспериментов и быстро внедрять в production?
  30. 30. Big Data: первый блин ❖ 200 машин на Google Cloud ❖ Cassandra на выделенном сервере ❖ GNU Parallel ❖ Новые пакеты Stanford NLP увеличили производительность в 50-100x ❖ Зато в это время мы прикрутили свой deep learning и другие недешевые алгоритмы ❖ Все равно дешевле свой кластер на Hetzner
  31. 31. Текущая архитектура Big Data ❖ Кластер на “дорогих” машинах ❖ Хранение - Cassandra ❖ Быстрая запись и чтение, как последовательное, так и по ключу, масштабируется ❖ Колоночное хранение с компрессией - очень удачно подходит для такого класса задач ❖ Параллельная обработка ❖ Apache Spark - сейчас только для структурированных данных, были проблемы с Cassandra ❖ GNU Parallel + HDFS, в будущем - миграция на Spark
  32. 32. Неожиданный классный инструмент ❖ У нас куча разных обработчиков на разных языках (C,Java,Jython,Python,Julia), интегрировать легче всего через раздачу id в Cassandra и параллельной обработкой ❖ get_ids | parallel -j 8 -S $SERVERS --progress my_script {} ❖ Очень удобно, если надо быстро (буквально минуты) что-то запустить ❖ Может стать долгосрочным временным решением! :) ❖ Планируем переход на Apache Spark в будущем, но пока глючил драйвер Cassandra, решили подождать
  33. 33. Кроме отзывов, еще куча структурированных данных ❖ Apache Spark + GreenplumDB ❖ GreenplumDB - параллельная SQL СУБД класса Vertica, Redshift, т.п. ❖ Совсем недавно вышла в open-source ❖ 2 типа хранилища: ❖ Распределенное кортежное (tuple-based) ❖ Распределенное колоночное с компрессией ❖ По скорости намного медленнее, чем Cassandra для массивно- параллельной записи (MVCC, что делать), но отлично выполняет сложные SQL на больших объемах. + не надо бэкапить!
  34. 34. Спасибо за внимание! Вопросы и Ответы https://ru.linkedin.com/in/velikhov Общие вопросы: feedback@toprater.com Для команд: startup@toprater.com

×