Хабрахабр

Алиса поможет разработчикам найти объекты в запросах пользователей. NER в Диалогах

Весной мы запустили платформу Диалоги, которая позволяет создавать навыки для Алисы и распознавать голосовые запросы пользователей. Изначально разработчикам навыков приходилось разбирать запросы самостоятельно. К примеру, находить адрес в тексте. Теперь эту часть работы платформа берёт на себя.

Сегодня мы расскажем читателям Хабра о распознавании именованных сущностей (Named-entity recognition; NER) и новых возможностях для разработчиков навыков.

Уже сейчас во многих случаях пользователи предпочитают использовать голос, а не экранную клавиатуру. Мы верим, что будущее за голосовыми интерфейсами. Или для поиска быстрых ответов на простые вопросы. Например, при управлении автомобилем. Но чтобы таких сценариев становилось всё больше, простого распознавания голоса в текст недостаточно.
Голосовые интерфейсы подобны запросам поисковой системе. Или для игры в «города» лёжа на диване. На заре становления интернета это было большой проблемой, потому что поисковые системы искали лишь точные вхождения слов из запроса. Мы не всегда понимаем, как именно нужно сформулировать свой запрос, чтобы найти ровно то, что нужно. Если мы не знаем, какую именно команду ждут от нас, то гадать будем долго. Так и с голосом.

Обычно разработчики навыков решают это с помощью двух приемов. Хороший голосовой интерфейс не должен загонять человека в тупик. Это полезная практика, которую мы рекомендуем не игнорировать. Прежде всего, ожидаемые ответы подсказывают с помощью кнопок на экране.

Причём в ряде случаев от пользователей требуют произносить слова строго в определённой форме и падеже. Также создатели навыков стараются разбивать сложные вопросы на серию более простых, ответы на которые проще прогнозировать. Чем больше условностей и ограничений, тем меньше голосовое управление отличается от использования клавиатуры и кнопок. Проблема такого подхода в том, что его уже нельзя назвать естественным общением. В идеале пользователь должен общаться с сервисом так же свободно, как и с человеком.

Доставьте заказ на Льва Толстого 16 и передайте Сергею Сергееву», а не разбивать это на серию вопросов об улице, номере дома, имени и фамилии. Хорошо, когда пользователь может сказать «Спасибо! Можно делать это вручную силами оператора, но при большом потоке операторов понадобится много. Но это потребует от разработчика навыка дополнительно разбирать полученные ответы. Можно разработать технологию, которая будет автоматически находить в тексте важную информацию, классифицировать её, нормализовать и сохранять. А ещё операторы вряд ли будут делать это в режиме реального времени, поэтому навык лишится возможности уточнить недостающую информацию сразу. Но это довольно трудозатратная задача.

Прежде всего, нужно уметь собирать знания о том, какие объекты бывают. Чтобы эффективно извлекать из текста полезные сущности и корректно их классифицировать по типам, у сервиса должен быть опыт в двух важных направлениях. С другой стороны, не менее важно уметь находить эти объекты в сыром тексте от пользователя. Если у вас в «словаре» нет улицы Льва Толстого, то при обработке запроса её легко спутать с именем человека и пропустить. Как минимум учитывать морфологию русского языка, чтобы слово «Сергею» нашлось и превратилось в имя «Сергей».

Поисковые технологии применяются как для поиска новых объектов, так и разбора пользовательских запросов. Так сложилось, что у Яндекса большой опыт в этих направлениях. Теперь эти технологии доступны и разработчикам навыков для Алисы.

Распознавание именованных сущностей в Диалогах

После того, как пользователь произносит команду, наша платформа распознает ее текст и извлекает слова и фразы, которые описывают определенные объекты. На текущий момент Диалоги распознают:

— имена;
— указания на местоположение;
— даты и время;
— целые и дробные числа.

Рассмотрим на примере: Информация о распознанных объектах отправляется на сервер навыка вместе с текстом ответа пользователя.

«Закажи пиццу на Льва Толстого 16 для Сергея Сергеева на 10 вечера»

Она также учитывает, что в адресах рядом с названиями улиц часто указывают номера домов. Наша платформа знает, что Лев Толстой – это не только человек, но и улица. Поэтому запрос к навыку будет содержать следующий блок:

{ "type": "YANDEX.GEO", "value": { "house_number": "16", "street": "льва толстого"
}
}

Указания на местоположения могут содержать не только улицу и дом, но и город, страну или даже аэропорт.

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

{ "type": "YANDEX.FIO", "value": { "first_name": "сергей", "last_name": "сергеев"
}
}

Нормализация данных – важная особенность распознавания именованных сущностей. Если для адресов и имен это свойство не так явно бросается в глаза, то с датами и временем всё куда нагляднее. «10 вечера» автоматически превращается в «22». «Завтра» и «послезавтра» явным образом инкрементируют даты.

{ "type": "YANDEX.DATETIME", "value": { "hour_is_relative": false, "hour": 22
}
}

Распознавание чисел также не стоит недооценивать. К примеру, «четыре целых пять десятых» в тексте от пользователя превратится в:

{ "type": "YANDEX.NUMBER", "value": 4.5
}

Заинтересовало? Приглашаем в документацию. Если вопросы останутся, то добро пожаловать в наш чат в Телеграме. За другими новостями платформы удобно следить в блоге.

Показать больше

Похожие публикации

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»