[Natural Language Processing, Open source, Голосовые интерфейсы, Хакатоны, Яндекс API] Сущности для платформы Яндекс.Диалоги
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
В прошлую субботу состоялся онлайн-хакатон по разработке навыков Алисы. Жаль, что никто не написал здесь об итогах, любопытно почитать истории победителей. Но раз желающих не нашлось, то поделюсь своей историей.
Я делаю голосовой интерфейс для управления брокерским счётом, уже писал об этом на Хабре — Алиса, купи акции Яндекс. В какой-то момент мне понадобилось извлекать из запроса цену в разных валютах. Уверен, я не первый, кто столкнулся такой задачей, поэтому попытался найти готовые интенты или именованные сущности на GitHub, но ничего не нашёл. На носу был хакатон, много разработчиков в одном месте, подумал я, если каждый поделится своими наработками, то сущностей наберётся на целую библиотеку. Так родилась идея для репозитория «библиотека сущностей».
Пользовательские сущности в Диалогах
Когда я говорю умной колонке «купи одну акцию Яндекс», то речь проходит через внутреннюю магию платформы Яндекс.Диалоги, затем попадает в веб-хук, который я указал в качестве обработчика навыка. Вот что приходит в обработчик:
"request": {
"command": "купи одну акцию яндекс",
"original_utterance": "купи одну акцию яндекс",
"nlu": {
"tokens": [
"купи",
"1",
"акцию",
"яндекс"
],
...
"intents": {
"market.order": {
"slots": {
"amount": {
"type": "YANDEX.NUMBER",
"tokens": {
"start": 1,
"end": 2
},
"value": 1
},
"unit": {
"type": "OperationUnit",
"tokens": {
"start": 2,
"end": 3
},
"value": "share"
},
"figi": {
"type": "EFigi",
"tokens": {
"start": 3,
"end": 4
},
"value": "BBG006L8G4H1"
},
"operation": {
"type": "OperationType",
"tokens": {
"start": 0,
"end": 1
},
"value": "buy"
}
}
}
}
},
...
},
Обратите внимание на слот figi, в котором содержится идентификатор акции Яндекс, так называемый FIGI (Financial Instrument Global Identifier), необходимый для взаимодействия с API торговой платформы Тинькофф Инвестиции. Тип данных EFigi, это пользовательская сущность, которую я описал в разделе Сущности при создании навыка в платформе Яндекс.Диалоги. Вот фрагмент описания:
entity EFigi:
values:
BBG005DXJS36:
%exact
TCS
%lemma
тиньков(банк)?
тинькоф(банк)?
тинькофф(банк)?
ти си эс (груп)?
BBG006L8G4H1:
%exact
YNDX
%lemma
яндекс
яндекса
BBG004730JJ5:
%exact
MOEX
%lemma
Московская Биржа
Мосбиржа
BBG002B2J5X0:
%exact
KRKNP
%lemma
[Саратовский НПЗ акции привилегированные]
[Саратовский нефтеперерабатывающий завод акции привилегированные]
...
Благодаря механизму сущностей, в коде обработчика мне не нужно делать дополнительных манипуляций над входными данными, чтобы получить FIGI. Платформа Диалогов преобразует название ценной бумаги в FIGI за меня.
Я использую EFigi в качестве нетерминала грамматики и типа слота в интентах. Интенты это такие регулярные выражения на стероидах в Диалогах. Благодаря интентам Диалоги понимают, какие данные нужно извлечь из пользовательского запроса и передать в обработчик. Вот пример интента для команды покупки/продажи ценных бумаг на бирже по рыночной цене:
slots:
operation:
source: $Operation
type: OperationType
figi:
source: $Stock
type: Efigi
amount:
source: $Amount
type: YANDEX.NUMBER
unit:
source: $Unit
type: OperationUnit
root:
$Operation [$Amount $Unit $Stock]
$Operation:
$OperationType
$Amount:
$YANDEX.NUMBER
$Unit:
$OperationUnit
$Stock:
$EFigi
Это похоже на регулярные выражения.
Библиотека сущностей для Диалогов
Во время хакатона по разработке навыков для Алисы я создал репозиторий alice-entities-library, запушил туда сущность EFigi и отправился на GitHub искать репозитории, в которых есть описание пользовательских сущностей. Ожидал, что найду сотни репозиториев, свяжусь с разработчиками и предложу прислать пул-реквесты в библиотеку сущностей.
Репозитории искал по тегам: yandex-dialogs, alice-skills, yandex-alice и alice-sdk. Оказалось, мало кто использует теги на GitHub, мне удалось найти всего один репозиторий, содержащий файл с описанием сущности ELang. По стечению обстоятельств автором репозитория оказался Давид — один из организаторов хакатона. Я предложил Давиду добавить сущность ELang в библиотеку и через несколько минут получил от него пул-реквест.
Другие участники онлайн-хакатона проигнорировали мои сообщения в чате с предложением пополнить библиотеку сущностей. Возможно, в разгар борьбы было не до этого. По правде говоря, я немного расстроился, но в конце добавил ссылку на репозиторий в sameoldmadness/awesome-alice.
Вместо заключения
Уважаемые разработчики навыков для Алисы, прошу вас по возможности выкладывать исходный код на GitHub, чтобы другие могли учиться.
Пожалуйста, добавляйте теги yandex-dialogs, alice-skills и yandex-alice к репозиториям, чтобы другие могли находить ваши навыки на GitHub.
Создайте в своём репозитории директорию entities и поместите туда файлы с описанием сущностей, которые вы написали для навыка, чтобы другие могли переиспользовать вашу работу.
Прежде чем описывать новую сущность, загляните в библиотеку сущностей, возможно, там уже есть то, что вам нужно. А если нет, то, пожалуйста, добавляйте свои сущности в библиотеку.
===========
Источник:
habr.com
===========
Похожие новости:
- [IT-инфраструктура, Open source, Администрирование баз данных, Высокая производительность, Хранение данных] Что нужно знать об архитектуре ClickHouse, чтобы его эффективно использовать. Алексей Зателепин (2018г)
- [IT-инфраструктура, Open source, Разработка под Linux, Учебный процесс в IT] Наши уникальные бесплатные мастер-курсы Kubernetes, CLI tool для разработчиков Odo, Java в контейнерах и много книг
- [IT-инфраструктура, Open source, Настройка Linux, Системное администрирование] От “стартапа” до тысяч серверов в десятке ЦОД. Как мы гнались за ростом Linux инфраструктуры
- [Data Mining, Визуализация данных, Natural Language Processing, Программирование, Python] How to find an English teacher. Part 1
- [Голосовые интерфейсы, Информационная безопасность, Исследования и прогнозы в IT] Исследователи обнаружили 1000 фраз, которые приводят к запуску Alexa, Siri, Assistant и Cortana
- [Голосовые интерфейсы, Звук, Машинное обучение] Mozilla опубликовала крупнейший датасет разговорной речи с транскрипцией: 7226 часов, 54 языка
- [DIY или Сделай сам, Natural Language Processing, Будущее здесь, Голосовые интерфейсы, Информационная безопасность] Голосовой помощник для совершения операций на бирже
- [Open source, Python] Ищем фильмы, книги и подкасты с помощью Python
- [] PVS-Studio впечатлен качеством кода Abbyy NeoML
- [] PVS-Studio Impressed by the Code Quality of ABBYY NeoML
Теги для поиска: #_natural_language_processing, #_open_source, #_golosovye_interfejsy (Голосовые интерфейсы), #_hakatony (Хакатоны), #_jandeks_api (Яндекс API), #_jandeks_dialogi (яндекс диалоги), #_alisa (алиса), #_natural_language_processing, #_open_source, #_golosovye_interfejsy (
Голосовые интерфейсы
), #_hakatony (
Хакатоны
), #_jandeks_api (
Яндекс API
)
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 16:22
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
В прошлую субботу состоялся онлайн-хакатон по разработке навыков Алисы. Жаль, что никто не написал здесь об итогах, любопытно почитать истории победителей. Но раз желающих не нашлось, то поделюсь своей историей. Я делаю голосовой интерфейс для управления брокерским счётом, уже писал об этом на Хабре — Алиса, купи акции Яндекс. В какой-то момент мне понадобилось извлекать из запроса цену в разных валютах. Уверен, я не первый, кто столкнулся такой задачей, поэтому попытался найти готовые интенты или именованные сущности на GitHub, но ничего не нашёл. На носу был хакатон, много разработчиков в одном месте, подумал я, если каждый поделится своими наработками, то сущностей наберётся на целую библиотеку. Так родилась идея для репозитория «библиотека сущностей». Пользовательские сущности в Диалогах Когда я говорю умной колонке «купи одну акцию Яндекс», то речь проходит через внутреннюю магию платформы Яндекс.Диалоги, затем попадает в веб-хук, который я указал в качестве обработчика навыка. Вот что приходит в обработчик: "request": {
"command": "купи одну акцию яндекс", "original_utterance": "купи одну акцию яндекс", "nlu": { "tokens": [ "купи", "1", "акцию", "яндекс" ], ... "intents": { "market.order": { "slots": { "amount": { "type": "YANDEX.NUMBER", "tokens": { "start": 1, "end": 2 }, "value": 1 }, "unit": { "type": "OperationUnit", "tokens": { "start": 2, "end": 3 }, "value": "share" }, "figi": { "type": "EFigi", "tokens": { "start": 3, "end": 4 }, "value": "BBG006L8G4H1" }, "operation": { "type": "OperationType", "tokens": { "start": 0, "end": 1 }, "value": "buy" } } } } }, ... }, Обратите внимание на слот figi, в котором содержится идентификатор акции Яндекс, так называемый FIGI (Financial Instrument Global Identifier), необходимый для взаимодействия с API торговой платформы Тинькофф Инвестиции. Тип данных EFigi, это пользовательская сущность, которую я описал в разделе Сущности при создании навыка в платформе Яндекс.Диалоги. Вот фрагмент описания: entity EFigi:
values: BBG005DXJS36: %exact TCS %lemma тиньков(банк)? тинькоф(банк)? тинькофф(банк)? ти си эс (груп)? BBG006L8G4H1: %exact YNDX %lemma яндекс яндекса BBG004730JJ5: %exact MOEX %lemma Московская Биржа Мосбиржа BBG002B2J5X0: %exact KRKNP %lemma [Саратовский НПЗ акции привилегированные] [Саратовский нефтеперерабатывающий завод акции привилегированные] ... Благодаря механизму сущностей, в коде обработчика мне не нужно делать дополнительных манипуляций над входными данными, чтобы получить FIGI. Платформа Диалогов преобразует название ценной бумаги в FIGI за меня. Я использую EFigi в качестве нетерминала грамматики и типа слота в интентах. Интенты это такие регулярные выражения на стероидах в Диалогах. Благодаря интентам Диалоги понимают, какие данные нужно извлечь из пользовательского запроса и передать в обработчик. Вот пример интента для команды покупки/продажи ценных бумаг на бирже по рыночной цене: slots:
operation: source: $Operation type: OperationType figi: source: $Stock type: Efigi amount: source: $Amount type: YANDEX.NUMBER unit: source: $Unit type: OperationUnit root: $Operation [$Amount $Unit $Stock] $Operation: $OperationType $Amount: $YANDEX.NUMBER $Unit: $OperationUnit $Stock: $EFigi Это похоже на регулярные выражения. Библиотека сущностей для Диалогов Во время хакатона по разработке навыков для Алисы я создал репозиторий alice-entities-library, запушил туда сущность EFigi и отправился на GitHub искать репозитории, в которых есть описание пользовательских сущностей. Ожидал, что найду сотни репозиториев, свяжусь с разработчиками и предложу прислать пул-реквесты в библиотеку сущностей. Репозитории искал по тегам: yandex-dialogs, alice-skills, yandex-alice и alice-sdk. Оказалось, мало кто использует теги на GitHub, мне удалось найти всего один репозиторий, содержащий файл с описанием сущности ELang. По стечению обстоятельств автором репозитория оказался Давид — один из организаторов хакатона. Я предложил Давиду добавить сущность ELang в библиотеку и через несколько минут получил от него пул-реквест. Другие участники онлайн-хакатона проигнорировали мои сообщения в чате с предложением пополнить библиотеку сущностей. Возможно, в разгар борьбы было не до этого. По правде говоря, я немного расстроился, но в конце добавил ссылку на репозиторий в sameoldmadness/awesome-alice. Вместо заключения Уважаемые разработчики навыков для Алисы, прошу вас по возможности выкладывать исходный код на GitHub, чтобы другие могли учиться. Пожалуйста, добавляйте теги yandex-dialogs, alice-skills и yandex-alice к репозиториям, чтобы другие могли находить ваши навыки на GitHub. Создайте в своём репозитории директорию entities и поместите туда файлы с описанием сущностей, которые вы написали для навыка, чтобы другие могли переиспользовать вашу работу. Прежде чем описывать новую сущность, загляните в библиотеку сущностей, возможно, там уже есть то, что вам нужно. А если нет, то, пожалуйста, добавляйте свои сущности в библиотеку. =========== Источник: habr.com =========== Похожие новости:
Голосовые интерфейсы ), #_hakatony ( Хакатоны ), #_jandeks_api ( Яндекс API ) |
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 22-Ноя 16:22
Часовой пояс: UTC + 5