иллюстрация к статье про Алису

 

how alice works
  1. Пользователь произносит фразу.
  2. ASR (Automatic Speech Recognition) переводит речь в текст.
  3. Текст передаётся в классификатор интентов, который должен определить, какое действие пользователь попросил сделать у Алисы. 

3.1 Если классификатор интентов не может уверенно определить, чего хочет пользователь:

  1. Бинарный классификатор решает, нужно ли отправить реплику в поисковик. Если нужно, то возвращает результаты поиска.
  2. Если не нужно, то перенаправляет реплику в “болталку”. Задача болталки - дать ответ, подходящий в данном контексте диалога.

3.2  Если классификатор интентов определил, что хочет пользователь:

  1. Семантический теггер выделяет из реплики полезные данные, которые нужны для данного интента, чтобы сгенерировать ответ.
  2. Эти данные отправляются в менеджер диалога, у которого есть текущий контекст диалога и что происходило ранее.
  3. Менеджер диалога генерирует ответ.
  4. TTS (Text to Speech) произносит ответ.

Менеджер диалога:

  • Не использует ML.
  • Концепция form-filling: пользователь своими репликами даёт информацию для заполнения некой виртуальной формы. Со временем форма заполняется и данные используются для генерации ответов.
  • Движок event-driven: каждый раз, когда пользователь что-то делает, происходят события, на которые можно подписываться, и таким образом конструировать логику диалога.

Классификатор интентов:

  • Для модели используется метод ближайших соседей.

Семантический теггер:

  • Используется LSTM.
  • Генерируется не самая вероятная гипотеза, а несколько самых вероятных гипотез. Они перевзвешиваются в зависимости от контекста диалога, что помогает улучшить качество.

Болталка:

  • DSSM-подобная нейронная сеть. Один энкодер кодирует текущий контекст диалога, другой энкодер кодирует ответ-кандидат. Сеть обучается так, чтобы косинусное расстояние между этими векторами было как можно больше (это значит что ответ наилучшим образом подходит к контексту).

ИСТОЧНИКИ