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