34
Павел Велихов, Chief Science Officer @ Toprater.com Миллиард отзывов и комментариев и Big Data Полезные советы, опыт и грабли по продвинутому NLP на больших объемах данных

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

  • Upload
    ontico

  • View
    828

  • Download
    7

Embed Size (px)

Citation preview

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

Павел Велихов, Chief Science Officer @ Toprater.com

Миллиард отзывов и комментариев и Big Data

Полезные советы, опыт и грабли по продвинутому NLP на больших объемах данных

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

Toprater.com - площадка, где собираются мнения со всего интернета относительно любых объектов e-commerce.

Первый шаг - собрать существующие мнения и их проанализировать. Нас интересуют сотни и тысячи критериев, о которых писалось в отзывах и которые помогают выбрать лучшее

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

Как пользоваться такой системой?

❖ Хочу поехать на лыжах покататься, но чтобы был бассейн для детей и аниматоры, которым их сдать. А ночью танцы!

❖ Хочу фильм с самым классным 3D, где мощно бьются на мечах и много крови!

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

Western sentimental orchestral melodies permeating every last gouge and lunge, and especially throughout the sentimental scenes at the end.

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

Надо просто понимать отзывы :)

❖ Отзывы могут быть:

❖ Фейковые

❖ Саркастические/Юморные

❖ Написаны на языке Engrish

❖ и так далее

❖ После этого - загоняем данные в поисковик, и все!

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

❖ “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

Не все отзывы оказываются полезными :)

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

Как понять смысл отзыва❖ Научное название: Aspect-based sentiment analysis +

information extraction

❖ Задача сложная (вообще-то нерешаемая), но оказывается достаточно высокой точности добиться можно.

❖ Для решения в ход идет все из арсенала NLP (Natural Language Processing):

❖ грамматический разбор, онтологии, словари, ручные системы, векторные представления слов и фраз, “традиционное” и глубокое обучение.

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

Постановка задачи

Если вы ищете спокойную гостиницу для отдыха с детьми, вам не сюда.

Отличный отель, уютные просторные комнаты,но в ресторане шумно и курят.

Аспекты Сентименты

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

Постановка задачи

Текст отзыва

ВыделениеАспектов

Оценкапо каждомувыделенномуаспекту

Набороценок

по аспектам

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

Данные для машинного обучения

❖ Если уже выделен критерий, легко собрать данные по оценке:

❖ Например, берем Amazon Mechanical Turk

❖ Кидаем туда задания, платим $0.01 за каждый ответ

❖ Несколько раз дублируем задание, чтобы не было левых ответов

❖ Можно даже потом сравниться с бенчмарками (но есть проблемы, написал пост на linkedin: “Something is really wrong with sentiment analysis and nobody seems to notice”).

❖ Для задачи выделения критерия - все сложнее, легче делать своими людьми

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

Попробуем простое решение:❖ По старинке (например, как в курсе у Ng):

❖ Берем простую модель bag-of-words:

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

❖ Вычисляем тональность каждого аспекта

Модель: {“был”, ”а”, ”но”, “номер”, “удобным”,“ресторан”, “прокуренным”, “приятный”}

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

Попробуем простое решение:❖ По старинке (например, как в курсе у Ng):

❖ Берем простую модель bag-of-words:

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

❖ Вычисляем тональность каждого аспекта

Модель: {“был”, ”а”, ”но”, “номер”, “удобным”,“ресторан”, “прокуренным”, “приятный”}

Текст: “Номер был удобным, но прокуренным, а ресторан приятный”

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

Более продвинутый NLP❖ Части речи: существительное, глагол, прилагательное, наречие и т.п.

❖ Омонимия (разные значения одного слова):

❖ пример: Картина

❖ - картина на стене (“на стене висит картина”)

❖ - фильм (“снял хорошую картину”)

❖ - ситуация (“картина событий последних дней Помпей”)

❖ В английском тексте ~ 40% слов омонимичны (!)

❖ Грамматический разбор. Тут обычно 2 варианта:

❖ Constituency Tree

❖ Dependency Tree

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

Пример dependency tree

Very nice hotel with clean rooms, but we didn't like the restaurant

Части речиЗависимости

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

Точность разбора

❖ Стэнфорд дает около 92-93% точности

❖ .92^20 = 18%

❖ То есть обязательно накосячит в достаточно длинном предложении

❖ Еще одна причина не налегать 100% на результаты парсера

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

Небольшая экскурсия в Deep Learning

❖ Основные ключевые идеи Deep Learning для NLP:

❖ word embeddings. word2vec - только начало

❖ Recurrent NNs

❖ LSTM

❖ Recursive NNs

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

Deep Learning: Embeddings

wt-2 wt-1 wt wt+1 wt+2

wt

Размерность = 50…300

Слово, чье скалярное произведение сwt максимально

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

Интересные под-пространства word2vec

PCA проекция на 2-х мерное пространство

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

Есть и проблемы:

Упс, мы сами не можем разделить классы, ну и ни один алгоритм не сможет

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

Deep Learning: Embeddings❖ Семантическое пространство слов

❖ Но:

❖ Омонимия?

❖ Разные подпростанства, насколько они хороши? Не очень, но их можно подчинить, задав априорные знания

❖ Например синтаксические подпростанства можно с дополнением частей речи делать

❖ Смешанные модели (слова + символы)

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

Интеграция prior knowledge в word2vec

❖ Пихать в word2vec еще и разного рода ограничения:

❖ принадлежность к одному классу = минимальное расстояние

❖ если класс маленький - более сильное ограничение

❖ если большой - не так страшно

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

Deep Learning: примитивное использование

❖ word2vec - просто признак для машинного обучения в модели bag-of-words. Не очень, даже кластеризация - лучше

❖ С текстом мы имеем дело с последовательностью слов, имеет смысл word2vec грамотнее.

❖ В глубоком обучении очень простая модель: рекурентная нейронная сеть.

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

Recurrent Neural Network

Fruit flies like napalm in the morning

Классификаторили

Регрессор

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

LTSM❖ С рекуррентными сетями есть проблемы

❖ По сути, они почти ничего не запоминают

❖ LTSM: Long Term Short Memory

❖ Отдельные нейроны (gates) в сети отвечают за память:

❖ Запись, чтение, keep

❖ При эксплуатации - понятно, что это значит

❖ При тренировке - помогают правильно отправить ошибку назад в прошлое

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

LTSM мини-пример

input

P

Write Keep

также называютinput gate

также называютforget gate

P

Sum

P

Read

также называютoutput gate

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

t0 t1 t2

https://class.coursera.org/neuralnets-2012-001/lecture/95

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

Recursive NN:

dep

dep

dep

dep

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

Что мы имеем с DL для NLP?

❖ Обычная история с DL - тренируем на огромных объемах на GPUs, потом эксплуатируем на CPU

❖ В NLP (особенно LSTM и Recursive NNs) - сложно переложить на GPU + алгоритм тренировки backprop во времени или по структуре, да еще и embeddings. Например, пока Theano грандиозного выигрыша не дает

❖ Плюс: если хотите использовать bleeding edge - надо писать все самим. Иначе 1-2 годовалой давности алгоритмы

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

Перейдем к теме Big Data!❖ Изначально отзывы занимают какие-то GB

❖ Но “готовый” корпус занимает беспрецедентные объемы данных, например:

❖ 20 тыс предложений = 400Mb данных

❖ В production - поменьше (не всегда), но просто раздать людям поиграться - уже накладно

❖ Как организовать хранение и обработку данных, чтобы было возможно ставить много экспериментов и быстро внедрять в production?

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

Big Data: первый блин❖ 200 машин на Google Cloud

❖ Cassandra на выделенном сервере

❖ GNU Parallel

❖ Новые пакеты Stanford NLP увеличили производительность в 50-100x

❖ Зато в это время мы прикрутили свой deep learning и другие недешевые алгоритмы

❖ Все равно дешевле свой кластер на Hetzner

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

Текущая архитектура Big Data❖ Кластер на “дорогих” машинах

❖ Хранение - Cassandra

❖ Быстрая запись и чтение, как последовательное, так и по ключу, масштабируется

❖ Колоночное хранение с компрессией - очень удачно подходит для такого класса задач

❖ Параллельная обработка

❖ Apache Spark - сейчас только для структурированных данных, были проблемы с Cassandra

❖ GNU Parallel + HDFS, в будущем - миграция на Spark

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

Неожиданный классный инструмент

❖ У нас куча разных обработчиков на разных языках (C,Java,Jython,Python,Julia), интегрировать легче всего через раздачу id в Cassandra и параллельной обработкой

❖ get_ids | parallel -j 8 -S $SERVERS --progress my_script {}

❖ Очень удобно, если надо быстро (буквально минуты) что-то запустить

❖ Может стать долгосрочным временным решением! :)

❖ Планируем переход на Apache Spark в будущем, но пока глючил драйвер Cassandra, решили подождать

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

Кроме отзывов, еще куча структурированных данных

❖ Apache Spark + GreenplumDB

❖ GreenplumDB - параллельная SQL СУБД класса Vertica, Redshift, т.п.

❖ Совсем недавно вышла в open-source

❖ 2 типа хранилища:

❖ Распределенное кортежное (tuple-based)

❖ Распределенное колоночное с компрессией

❖ По скорости намного медленнее, чем Cassandra для массивно-параллельной записи (MVCC, что делать), но отлично выполняет сложные SQL на больших объемах. + не надо бэкапить!

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

Спасибо за внимание!

Вопросы и Ответыhttps://ru.linkedin.com/in/velikhov

Общие вопросы: [email protected]

Для команд: [email protected]