- PVSM.RU - https://www.pvsm.ru -

Учим машину разбираться в языках

Мы уже рассказывали вам несколько раз про нашу интеллектуальную службу распознавания речи — LUIS. И в этих историях всегда была одна проблема: LUIS крутой, но не понимает русский язык. Сегодня всё изменится. Под катом вы узнаете о методе добавления поддержки дополнительных языков в LUIS с помощью службы Translation Cognitive API.

Учим машину разбираться в языках - 1

Цикл статей «Digital Transformation»

Технологические статьи:
1. Начало [1].
2. Лотерея в облаке [2].
3. Блокчейн в банке [3].
4. Учим машину разбираться в генах человека [4].
5. Учим машину разбираться в языках [5].
6. Loading…

Серия интервью с Дмитрием Завалишиным на канале DZ Online [6]:
1. Александр Ложечкин из Microsoft: Нужны ли разработчики в будущем? [7]

Moed.ai [8] — израильский стартап, позволяющий поставщикам услуг управлять своими рабочими календарями и вносить в них новые события с помощью единой облачной платформы, доступной с любого устройства.

Используя панель управления Moed.ai, пользователи могут планировать выполнение услуг, использование ресурсов и другие события. Под ресурсами здесь подразумеваются как объекты, например машины и переговорные комнаты, так и работники, к примеру водители-испытатели и торговые представители авто-дилера. Платформа Moed.ai позволяет планировать использование каждого из ресурсов и подстраивать под их доступность встречи с клиентами.

В настоящее время Moed.ai работает над созданием чат-ботов для каждого из своих заказчиков, чтобы клиенты этих компаний могли планировать выполнение услуг на удобном им языке привычным способом (в мессенджере Facebook, через Skype или Slack и т. д.).

Проблема

Moed.ai — израильская компания, поэтому для многих ее клиентов родной язык — иврит. Англоязычная версия чат-бота Moed.ai умеет выделять из сообщения пользователя намерение и сущности, и компания хочет создать программу на иврите с таким же функционалом. К сожалению, в платформе LUIS [9], которую компания планировала использовать для выделения намерений и сущностей, в настоящее время нет официальной поддержки иврита.

Решение

Целью совместной работы с Moed.ai было найти способ добавить поддержку иврита в LUIS с помощью когнитивной службы перевода (Translation Cognitive Service [10]). В ходе работы мы сравнили два способа обеспечения поддержки иврита. Первый способ — загрузка текста, переведенного когнитивного сервиса [10], напрямую в существующую модель LUIS для английского языка — показал неудовлетворительные результаты, однако нам удалось создать более успешный метод.

Мы по-новому подошли к процессу обучения модели LUIS: вместо вычитанных английских фраз мы использовали в качестве примеров неотредактированный машинный перевод. Этот подход позволил нам преодолеть существенные различия между переводом, выполненным машиной, и правильной человеческой речью.

Чтобы понять, почему этот метод работает, рассмотрим следующую ситуацию.

Предположим, что пользователь обращается к программе четырьмя предложениями на иврите:

  אני רוצה לקבוע פגישה
  אני רוצה לקבוע נסיעת מבחן 
  אני רוצה לקבוע נסיעת מבחן למחר
  אפשר לקבוע נסיעת מבחן למחר?

Правильный английский перевод этих предложений таков:

I want to schedule a meeting.
I want to schedule a test drive.
I want to schedule a test drive for tommorrow.
Can I schedule a test drive tomorrow?

Однако служба машинного перевода выдает следующий результат:

I want to schedule an appointment.
I want to schedule a test drive.
I want to make a test tomorrow.
Can set a test tomorrow?

Перевод первых двух фраз почти идентичен их смыслу, но обратите внимание, что между переводами третьего и четвертого предложений («Я хочу поставить тест завтра», «Я могу установить тест завтра?») и их истинным значением («Я хочу назначить тест-драйв на завтра», «Могу я назначить тест-драйв на завтра?») есть существенная разница.

Например, в обеих фразах система перевода заменила идею «тест-драйв» словом «тест», близким по форме, но очень далеким от смысла исходного текста. Модель LUIS, тренировавшаяся только на правильных предложениях, таких как «Я хочу назначить тест-драйв на завтра», едва ли сможет угадать смысл, скрытый за этой заменой, так как эта ошибка характерна именно для перевода предложений с иврита на английский. Различия в грамматике и словоупотреблении между двумя языками ведут к появлению в переводах одних и тех же неточностей, характерных именно для этой пары языков.

Если же мы будем изначально обучать модель на предложениях, переведенных с иврита, служба быстро научится выявлять несоответствия между некорректным переводом и исходным значением. Со временем модель запомнит, какие именно ошибки в переводе с иврита служба перевода допускает в каждом конкретном контексте, и будет чаще правильно реагировать на запросы.

Руководство по использованию

В этом разделе описан процесс обучения и использования нашего модуля узла для добавления поддержки дополнительных языков для программ-роботов. Предполагается, что пользователь уже создал приложение LUIS [9] и сгенерировал ключ для когнитивной системы перевода (Translation Cognitive Service [10]).

  1. Составьте список команд на необходимом вам языке (в нашем случае на иврите). Например:
    אני רוצה לקבוע פגישה             // I want to schedule an appointment
    אני רוצה לקבוע נסיעת מבחן        // I want to schedule a test drive
    אני רוצה לקבוע נסיעת מבחן למחר   // I want to schedule a test drive for tomorrow
    אפשר לקבוע נסיעת מבחן למחר?      // Can I schedule a test drive tomorrow?
  2. Выполните скрипт «Массовый перевод и импорт в LUIS [11]».
  3. Выделите переводы, намерения и сущности с помощью портала LUIS. [12]
  4. Используйте на портале LUIS программу [13] автоматического обучения и тестирования, чтобы опробовать и еще раз потренировать свою модель, пока она не научится сопоставлять переводы с нового языка с их значениями.
  5. Примените npm-модуль LUIS [14], чтобы использовать обученную модель LUIS и интегрировать ее в свое приложение.

Код

Исходный код и заметки по использованию описанного метода вы можете найти на GitHub [14].

Возможности для использования

Описанный в данной статье метод можно использовать для обнаружения намерений и сущностей в тексте на любом естественном языке, поддерживаемом когнитивной службой перевода. Он также применим при локализации многих продуктов вида «общение как платформа», чтобы разговор с программой-роботом был более естественным.

Учим машину разбираться в языках - 2P.S. Благодарим Костю Кичинского (Quantum Quintum [15]) за иллюстрацию к этой статье.

Автор: sahsAGU

Источник [16]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/programmirovanie/270767

Ссылки в тексте:

[1] Начало: https://habrahabr.ru/company/microsoft/blog/341854/

[2] Лотерея в облаке: https://habrahabr.ru/company/microsoft/blog/342148/

[3] Блокчейн в банке: https://habrahabr.ru/company/microsoft/blog/342364/

[4] Учим машину разбираться в генах человека: https://habrahabr.ru/company/microsoft/blog/343604/

[5] Учим машину разбираться в языках: https://habrahabr.ru/company/microsoft/blog/344684/

[6] DZ Online: https://www.youtube.com/channel/UCJuwCFeP6rhSUqk9gRMAwuw/feed

[7] Александр Ложечкин из Microsoft: Нужны ли разработчики в будущем?: https://habrahabr.ru/company/microsoft/blog/342596/

[8] Moed.ai: http://moed.ai/

[9] LUIS: https://www.luis.ai/

[10] Translation Cognitive Service: https://azure.microsoft.com/en-us/services/cognitive-services/translator-speech-api/

[11] Массовый перевод и импорт в LUIS: https://github.com/Microsoft/Universal-Language-Intelligence-Service/blob/master/ulis/tools/bulkTranslateAndTrain.js

[12] портала LUIS.: https://www.luis.ai/home

[13] программу: https://github.com/Microsoft/Universal-Language-Intelligence-Service/blob/master/ulis/tools/translateAndTrainBot.js

[14] npm-модуль LUIS: https://github.com/Microsoft/Universal-Language-Intelligence-Service

[15] Quantum Quintum: https://t.me/quantumquintum

[16] Источник: https://habrahabr.ru/post/344684/?utm_campaign=344684