Upload
chatbotscommunity
View
366
Download
0
Embed Size (px)
Citation preview
Как дать всю мощь NLP непрограммистам
Олег ШляжкоChatfuel
Intro● Мы делаем платформу для создания ботов без программирования
● Для Facebook Messenger и Telegram
● Более 360 000 ботов, обслуживающих 17 000 000 пользователей
● С нами сотрудничают TechCrunch, Forbes, Uber, National Geographic
● Понятный и удобный NLP - наше важное преимущество
2
Какой AI нужен ботам
Что автор бота ожидает от платформы?
3
Какой AI нужен чат-ботам?1. Распознавание намерений пользователя
4
Какой AI нужен чат-ботам?2. Выделение фактов и данных из ответа пользователя
NER - Named Entity Recognition
5
Какой AI нужен чат-ботам?
3. “Человечность” бота, умение отвечать на простые и частые фразы
6
Как узнать намерения
пользователяIntent Extraction
7
Задача определения сходства фраз
8
Задача определения сходства фраз● Совпадение фраз
● Фразы с грамматическими ошибками, опечатками
● Похожие по составу фразы○ “Мне нужны последние новости”
○ “Покажите последние новости”
● Фразы, близкие по смыслу, семантическая близость○ “Я хочу забронировать комнату”
○ “Я хочу сделать резерв номера”
○ “Могу я забронировать у вас апартаменты?”
9
Простые случаи - совпадение, ошибки1. Простое совпадение
2. Расстояние Левенштейна:
Минимальное число операций для превращения одной строки в другую
10
Похожие по составу фразыРасстояние Жаккара (Jaccard Distance)
11
A∩B
A∪B
A B
Похожие по составу фразыTF-IDF (TF — term frequency, IDF — inverse document frequency). Мера важности слова в документе для каждого документа из коллекции. Основа всех современных поисковых систем.
12
Похожие по составу фразыПреобразуем в векторы. Считаем косинусное расстояние между ними
13
фраза юзера
интент 1
интент 2
TF-IDFвектор фразы
вектор интента 1
вектор интента 2
θ
Семантическая близостьWord2vec — инструмент для расчета векторных представлений слов. Минимизация расстояний между векторами слов, встречающихся в одинаковых контекстах
14
Семантическая близость1. Преобразуем фразы в наборы векторов слов2. Из каждого набора векторов формируем вектор фразы. Например,
суммированием3. Считаем косинусное расстояние между фразами
Но word2vec выдает странные результаты в некоторых областях
○ similarity(love, hate) = 0.81○ similarity(love, care) = 0.65
15
NLPДвижок
16
Как применить всё это на практике
Применение на практике1. Тестовый датасет
a. Используем введенные авторами бота фразы
○ 70 англоязычных ботов с высокой посещаемостью, от 5 до 200 интентов в каждом
b. Формируем позитивные и негативные пары фраза-интент
○ ~250 000 строк тестовых пар
2. Очистка данныхa. Lowercase
b. Удаление пунктуации, разделение на слова (токенизация)
c. Фильтр стоп-слов, местоимений, обращений и т.п.
17
Применение на практике3. Комбинирование метрик
a. Не используйте эвристики, используйте ML!
b. Регрессия, на входе N метрик сходства пары фраз, на выходе оценка в интервале 0-1
c. Комбинируем регрессию и tf-idf для получения оценок сходства по интентам
4. Оценка качества классификатораa. Выбираем порог достоверности
b. Регрессор + порог = бинарный классификатор
c. Считаем precision & recall на тестовом датасете для каждого порога
d. Исходя из требуемого precision находим оптимальный порог по max(recall)
18
Применение на практикеПревращаем модель в production сервис
● многопроцессный бэкенд на питоне
● word2vec в памяти, порядка 4 Gb на 1 модель
● кэшируем промежуточные метрики и сами оценки
● не храним интенты, получаем их в каждом запросе
● нагрузка 15-100 rps
● время ответа p50 - 20ms, p95 - 90ms
19
Куда двигаться дальше
20
Другие языки,улучшения,
state of the art
Поддержка нескольких языков● Всё описанное, кроме word2vec, работает для любого языка!
○ Пока мы можем разбить фразу на слова
● Word2vec модели можно обучить самому○ https://code.google.com/archive/p/word2vec/
● Нужен просто неразмеченный датасет○ http://opus.lingfil.uu.se/OpenSubtitles2016.php
21
Что дальше?● Данные по 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
Спасибо за внимание!
23
Приходите к нам делать ботов для Facebook
chatfuel.com