#3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

23
Как дать всю мощь NLP непрограммистам Олег Шляжко Chatfuel

Transcript of #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Page 1: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Как дать всю мощь NLP непрограммистам

Олег ШляжкоChatfuel

Page 2: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Intro● Мы делаем платформу для создания ботов без программирования

● Для Facebook Messenger и Telegram

● Более 360 000 ботов, обслуживающих 17 000 000 пользователей

● С нами сотрудничают TechCrunch, Forbes, Uber, National Geographic

● Понятный и удобный NLP - наше важное преимущество

2

Page 3: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Какой AI нужен ботам

Что автор бота ожидает от платформы?

3

Page 4: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Какой AI нужен чат-ботам?1. Распознавание намерений пользователя

4

Page 5: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Какой AI нужен чат-ботам?2. Выделение фактов и данных из ответа пользователя

NER - Named Entity Recognition

5

Page 6: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Какой AI нужен чат-ботам?

3. “Человечность” бота, умение отвечать на простые и частые фразы

6

Page 7: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Как узнать намерения

пользователяIntent Extraction

7

Page 8: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Задача определения сходства фраз

8

Page 9: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Задача определения сходства фраз● Совпадение фраз

● Фразы с грамматическими ошибками, опечатками

● Похожие по составу фразы○ “Мне нужны последние новости”

○ “Покажите последние новости”

● Фразы, близкие по смыслу, семантическая близость○ “Я хочу забронировать комнату”

○ “Я хочу сделать резерв номера”

○ “Могу я забронировать у вас апартаменты?”

9

Page 10: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Простые случаи - совпадение, ошибки1. Простое совпадение

2. Расстояние Левенштейна:

Минимальное число операций для превращения одной строки в другую

10

Page 11: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Похожие по составу фразыРасстояние Жаккара (Jaccard Distance)

11

A∩B

A∪B

A B

Page 12: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Похожие по составу фразыTF-IDF (TF — term frequency, IDF — inverse document frequency). Мера важности слова в документе для каждого документа из коллекции. Основа всех современных поисковых систем.

12

Page 13: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Похожие по составу фразыПреобразуем в векторы. Считаем косинусное расстояние между ними

13

фраза юзера

интент 1

интент 2

TF-IDFвектор фразы

вектор интента 1

вектор интента 2

θ

Page 14: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Семантическая близостьWord2vec — инструмент для расчета векторных представлений слов. Минимизация расстояний между векторами слов, встречающихся в одинаковых контекстах

14

Page 15: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Семантическая близость1. Преобразуем фразы в наборы векторов слов2. Из каждого набора векторов формируем вектор фразы. Например,

суммированием3. Считаем косинусное расстояние между фразами

Но word2vec выдает странные результаты в некоторых областях

○ similarity(love, hate) = 0.81○ similarity(love, care) = 0.65

15

Page 16: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

NLPДвижок

16

Как применить всё это на практике

Page 17: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Применение на практике1. Тестовый датасет

a. Используем введенные авторами бота фразы

○ 70 англоязычных ботов с высокой посещаемостью, от 5 до 200 интентов в каждом

b. Формируем позитивные и негативные пары фраза-интент

○ ~250 000 строк тестовых пар

2. Очистка данныхa. Lowercase

b. Удаление пунктуации, разделение на слова (токенизация)

c. Фильтр стоп-слов, местоимений, обращений и т.п.

17

Page 18: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Применение на практике3. Комбинирование метрик

a. Не используйте эвристики, используйте ML!

b. Регрессия, на входе N метрик сходства пары фраз, на выходе оценка в интервале 0-1

c. Комбинируем регрессию и tf-idf для получения оценок сходства по интентам

4. Оценка качества классификатораa. Выбираем порог достоверности

b. Регрессор + порог = бинарный классификатор

c. Считаем precision & recall на тестовом датасете для каждого порога

d. Исходя из требуемого precision находим оптимальный порог по max(recall)

18

Page 19: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Применение на практикеПревращаем модель в production сервис

● многопроцессный бэкенд на питоне

● word2vec в памяти, порядка 4 Gb на 1 модель

● кэшируем промежуточные метрики и сами оценки

● не храним интенты, получаем их в каждом запросе

● нагрузка 15-100 rps

● время ответа p50 - 20ms, p95 - 90ms

19

Page 20: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Куда двигаться дальше

20

Другие языки,улучшения,

state of the art

Page 21: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Поддержка нескольких языков● Всё описанное, кроме word2vec, работает для любого языка!

○ Пока мы можем разбить фразу на слова

● Word2vec модели можно обучить самому○ https://code.google.com/archive/p/word2vec/

● Нужен просто неразмеченный датасет○ http://opus.lingfil.uu.se/OpenSubtitles2016.php

21

Page 22: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

Что дальше?● Данные по state of the art

○ https://aclweb.org/aclwiki/index.php?title=Similarity_(State_of_the_art)

● Ежегодные соревнования SemEval○ http://ixa2.si.ehu.es/stswiki/index.php/Main_Page

○ победитель 2016 https://www.aclweb.org/anthology/S/S16/S16-1089.pdf

● Более сложные семантические модели. DSSM, Sent2Vec○ http://cs.stanford.edu/~quocle/paragraph_vector.pdf

○ http://research.microsoft.com/en-us/um/people/jfgao/paper/2013/cikm2013_DSSM_fullversion.pdf

○ https://github.com/airalcorn2/Deep-Semantic-Similarity-Model

22

Page 23: #3 Global AI Meetup (NLP) - Олег Шляжко, Chatfuel

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

23

Приходите к нам делать ботов для Facebook

chatfuel.com