Выделение смысла с помощью Yandex SpeechKit Cloud — различия между версиями
(не показано 14 промежуточных версии этого же участника) | |||
Строка 7: | Строка 7: | ||
Yandex SpeechKit Cloud — это облачный сервис, открывающий разработчикам доступ к речевым технологиям Яндекса. В этой статье мы поговорим про выделение смысловых структур из текста. | Yandex SpeechKit Cloud — это облачный сервис, открывающий разработчикам доступ к речевым технологиям Яндекса. В этой статье мы поговорим про выделение смысловых структур из текста. | ||
− | Технология выделения смысловых объектов позволяет позволяет найти смысловые объекты в тексте и получить от сервера | + | Технология выделения смысловых объектов позволяет позволяет найти смысловые объекты в тексте и получить от сервера размеченную распознанную структуру. С помощью сервиса возможно анализировать контекст фразы, к примеру, система понимает, что во фразе "Позвони мне завтра" есть информация про время, а во фразе "Соедините меня со Ивановым Иваном" - фамилия и имя. В системе Oktell этот сервис удобно применять для анализа распознанных голосовых выражений и электронных писем. |
− | + | На момент написания статьи сервис умеет распознавать следующие структуры: | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | На момент написания статьи сервис умеет следующие структуры: | + | |
* Дата и время. | * Дата и время. | ||
* Фамилия, имя и отчество. | * Фамилия, имя и отчество. | ||
Строка 34: | Строка 28: | ||
*'''URL''' - используется выражение: | *'''URL''' - используется выражение: | ||
− | + | <nowiki>'https://vins-markup.voicetech.yandex.net/markup/0.x/?text='+[Text]+'&layers=Fio,Morph,GeoAddr,Date&key='+[key]</nowiki> | |
− | 'https://vins-markup.voicetech.yandex.net/markup/0.x/?text='+[Text]+'&layers=Fio,Morph,GeoAddr,Date&key='+[key] | + | |
− | + | ||
где | где | ||
:*[Text] - переменная '''Text''' (строковая), анализируемое выражение | :*[Text] - переменная '''Text''' (строковая), анализируемое выражение | ||
:*[key] - переменная '''key''' (строковая), API-ключ, полученный на шаге 1 | :*[key] - переменная '''key''' (строковая), API-ключ, полученный на шаге 1 | ||
+ | *'''Метод''' - GET | ||
+ | *'''Режим работы''' - Ожидание результата | ||
+ | *'''Тип ответа''' - Текст | ||
+ | *'''Ответ в переменную''' - переменная '''ЯндексОтвет''' (строковая), содержит размеченный текст | ||
+ | *'''Кодировка ответа''' - UTF-8 | ||
+ | *'''Код ошибки в переменную''' - переменная '''Код ошибки''' (строковая), нужна для вывода администратору в случае возникновения проблем. | ||
+ | |||
+ | [[Файл:Выделение смысла Yandex 001.png|center]] | ||
+ | |||
+ | |||
+ | '''Шаг 3.''' После выполнения web-запроса в переменной '''ЯндексОтвет''' содержится размеченный текст в виде JSON-структуры. Для получения конкретных значений используйте компонент "'''Парсер'''". Подробнее про работу с компонентом читайте в статье: [[Компонент Парсер]]. | ||
+ | |||
+ | |||
+ | ==Описание сценария== | ||
+ | |||
+ | В этом параграфе описывается демонстрационный пример использования сервиса выделения смысла Yandex SpeechKit Cloud. Сценарий выглядит следующим образом: | ||
+ | |||
+ | |||
+ | [[Файл:Выделение смысла Yandex 002.png|center]] | ||
+ | |||
+ | |||
+ | Компонент "'''SpeechKit Key'''". Определяет API-ключ для выполнения Web-запроса на сервисы Yandex. | ||
+ | *переменной '''key''' (строковая) присваивается значение API-ключа. | ||
+ | |||
+ | |||
+ | Компонент "'''Text'''". Предназначен для ввода демонстрационного текста. | ||
+ | *переменной '''Text''' (строковая) присваивается текст для анализа: "''Здравствуйте меня зовут Александр Сергеев. Я живу на Проспекте Победы, дом 55 квартира 890. Позвоните мне завтра''". Вы можете опробовать любой другой текст. | ||
+ | |||
+ | |||
+ | Компонент "'''Выделение смысла'''". Отправляет текст на сервис Yandex SpeechKit для анализа и сохраняет разметку в переменную. | ||
+ | *'''URL''' - используется выражение: | ||
+ | <nowiki>'https://vins-markup.voicetech.yandex.net/markup/0.x/?text='+[Text]+'&layers=Fio,Morph,GeoAddr,Date&key='+[key]</nowiki> | ||
*'''Метод''' - GET | *'''Метод''' - GET | ||
*'''Режим работы''' - Ожидание результата | *'''Режим работы''' - Ожидание результата | ||
Строка 48: | Строка 72: | ||
*'''Код ошибки в переменную''' - переменная "'''Код ошибки'''" (строковая), нужна для вывода администратору в случае возникновения проблем. | *'''Код ошибки в переменную''' - переменная "'''Код ошибки'''" (строковая), нужна для вывода администратору в случае возникновения проблем. | ||
− | [[Файл: | + | |
+ | [[Файл:Выделение смысла Yandex 003.png|center|1000px]] | ||
+ | |||
+ | |||
+ | Компонент "'''Вывод разметки'''". Выводит размеченную структуру на экран. | ||
+ | *'''Текст''' - переменная '''ЯндексОтвет''' | ||
+ | *'''Адресат''' - укажите вашего пользователя | ||
+ | |||
+ | |||
+ | Компонент "'''Ошибка'''". В случае неудачного выполнения web-запроса выводит код ошибки на экран | ||
+ | *'''Текст''' - выражение <span style="color:green">'Ошибка '+[Код ошибки]</span> | ||
+ | *'''Адресат''' - укажите вашего пользователя | ||
+ | |||
+ | |||
+ | ==Результаты работы== | ||
+ | |||
+ | В качестве тестового примера использовался текст: | ||
+ | Здравствуйте меня зовут Александр Сергеев. Я живу на Проспекте Победы, дом 55 квартира 890. Позвоните мне завтра | ||
+ | |||
+ | Ниже показан размеченный текст (некоторые части вырезаны для компактности). Как мы видим, сервис определил в тексте объекты, обозначающие время (ключ "'''Date'''"), структуру с именем клиента (ключ "'''Fio'''"), выделил географические объекты (ключ "'''GeoAddr'''"), а также предоставил список всех использованных слов (ключ "'''Morph'''") | ||
+ | |||
+ | <pre> | ||
+ | { | ||
+ | "Date": [ | ||
+ | { | ||
+ | "Day": 1, | ||
+ | "RelativeDay": true, | ||
+ | "Tokens": { | ||
+ | "Begin": 16, | ||
+ | "End": 17 | ||
+ | } | ||
+ | } | ||
+ | ], | ||
+ | "Fio": [ | ||
+ | { | ||
+ | "FirstName": "александр", | ||
+ | "LastName": "сергеев", | ||
+ | "Tokens": { | ||
+ | "Begin": 3, | ||
+ | "End": 5 | ||
+ | }, | ||
+ | "Type": "finame" | ||
+ | } | ||
+ | ], | ||
+ | "GeoAddr": [ | ||
+ | { | ||
+ | "Fields": [ | ||
+ | { | ||
+ | "Name": "проспект победы", | ||
+ | "Tokens": { | ||
+ | "Begin": 8, | ||
+ | "End": 10 | ||
+ | }, | ||
+ | "Type": "Street" | ||
+ | }, | ||
+ | { | ||
+ | "Name": "дом 55 квартира 890", | ||
+ | "Tokens": { | ||
+ | "Begin": 10, | ||
+ | "End": 14 | ||
+ | }, | ||
+ | "Type": "HouseNumber" | ||
+ | } | ||
+ | ], | ||
+ | ---- | ||
+ | ---- | ||
+ | } | ||
+ | } | ||
+ | ], | ||
+ | "Morph": [ | ||
+ | { | ||
+ | "Lemmas": [ | ||
+ | { | ||
+ | "Grammems": [ | ||
+ | "V pl imper 2p ipf intr" | ||
+ | ], | ||
+ | "Language": "ru", | ||
+ | "Text": "здравствовать" | ||
+ | } | ||
+ | ], | ||
+ | "Tokens": { | ||
+ | "Begin": 0, | ||
+ | "End": 1 | ||
+ | } | ||
+ | }, | ||
+ | ---- | ||
+ | ---- | ||
+ | </pre> |
Текущая версия на 12:38, 26 декабря 2014
Наверх [Oktell 2.7+]
Введение
Yandex SpeechKit Cloud — это облачный сервис, открывающий разработчикам доступ к речевым технологиям Яндекса. В этой статье мы поговорим про выделение смысловых структур из текста.
Технология выделения смысловых объектов позволяет позволяет найти смысловые объекты в тексте и получить от сервера размеченную распознанную структуру. С помощью сервиса возможно анализировать контекст фразы, к примеру, система понимает, что во фразе "Позвони мне завтра" есть информация про время, а во фразе "Соедините меня со Ивановым Иваном" - фамилия и имя. В системе Oktell этот сервис удобно применять для анализа распознанных голосовых выражений и электронных писем.
На момент написания статьи сервис умеет распознавать следующие структуры:
- Дата и время.
- Фамилия, имя и отчество.
- Адреса
- Морфемы - существительные преобразуются в именительный падеж, глаголы в инфинитив
Документация по API выделения смысла Yandex SpeechKit доступна на сайте https://tech.yandex.ru/speechkit/cloud/doc/dg/concepts/speechkit-dg-nlu-docpage/
Быстрый старт
Для использования системы выделения смысла Yandex SpeechKit Cloud выполните следующие действия:
Шаг 1. Получите API-ключ на использование сервиса в кабинете разработчика.
Шаг 2. Для использования сервиса используйте компонент "Web-запрос" в сценариях. В свойствах компонента выберите:
- URL - используется выражение:
'https://vins-markup.voicetech.yandex.net/markup/0.x/?text='+[Text]+'&layers=Fio,Morph,GeoAddr,Date&key='+[key]
где
- [Text] - переменная Text (строковая), анализируемое выражение
- [key] - переменная key (строковая), API-ключ, полученный на шаге 1
- Метод - GET
- Режим работы - Ожидание результата
- Тип ответа - Текст
- Ответ в переменную - переменная ЯндексОтвет (строковая), содержит размеченный текст
- Кодировка ответа - UTF-8
- Код ошибки в переменную - переменная Код ошибки (строковая), нужна для вывода администратору в случае возникновения проблем.
Шаг 3. После выполнения web-запроса в переменной ЯндексОтвет содержится размеченный текст в виде JSON-структуры. Для получения конкретных значений используйте компонент "Парсер". Подробнее про работу с компонентом читайте в статье: Компонент Парсер.
Описание сценария
В этом параграфе описывается демонстрационный пример использования сервиса выделения смысла Yandex SpeechKit Cloud. Сценарий выглядит следующим образом:
Компонент "SpeechKit Key". Определяет API-ключ для выполнения Web-запроса на сервисы Yandex.
- переменной key (строковая) присваивается значение API-ключа.
Компонент "Text". Предназначен для ввода демонстрационного текста.
- переменной Text (строковая) присваивается текст для анализа: "Здравствуйте меня зовут Александр Сергеев. Я живу на Проспекте Победы, дом 55 квартира 890. Позвоните мне завтра". Вы можете опробовать любой другой текст.
Компонент "Выделение смысла". Отправляет текст на сервис Yandex SpeechKit для анализа и сохраняет разметку в переменную.
- URL - используется выражение:
'https://vins-markup.voicetech.yandex.net/markup/0.x/?text='+[Text]+'&layers=Fio,Morph,GeoAddr,Date&key='+[key]
- Метод - GET
- Режим работы - Ожидание результата
- Тип ответа - Текст
- Ответ в переменную - переменная ЯндексОтвет (строковая), содержит размеченный текст
- Кодировка ответа - UTF-8
- Код ошибки в переменную - переменная "Код ошибки" (строковая), нужна для вывода администратору в случае возникновения проблем.
Компонент "Вывод разметки". Выводит размеченную структуру на экран.
- Текст - переменная ЯндексОтвет
- Адресат - укажите вашего пользователя
Компонент "Ошибка". В случае неудачного выполнения web-запроса выводит код ошибки на экран
- Текст - выражение 'Ошибка '+[Код ошибки]
- Адресат - укажите вашего пользователя
Результаты работы
В качестве тестового примера использовался текст:
Здравствуйте меня зовут Александр Сергеев. Я живу на Проспекте Победы, дом 55 квартира 890. Позвоните мне завтра
Ниже показан размеченный текст (некоторые части вырезаны для компактности). Как мы видим, сервис определил в тексте объекты, обозначающие время (ключ "Date"), структуру с именем клиента (ключ "Fio"), выделил географические объекты (ключ "GeoAddr"), а также предоставил список всех использованных слов (ключ "Morph")
{ "Date": [ { "Day": 1, "RelativeDay": true, "Tokens": { "Begin": 16, "End": 17 } } ], "Fio": [ { "FirstName": "александр", "LastName": "сергеев", "Tokens": { "Begin": 3, "End": 5 }, "Type": "finame" } ], "GeoAddr": [ { "Fields": [ { "Name": "проспект победы", "Tokens": { "Begin": 8, "End": 10 }, "Type": "Street" }, { "Name": "дом 55 квартира 890", "Tokens": { "Begin": 10, "End": 14 }, "Type": "HouseNumber" } ], ---- ---- } } ], "Morph": [ { "Lemmas": [ { "Grammems": [ "V pl imper 2p ipf intr" ], "Language": "ru", "Text": "здравствовать" } ], "Tokens": { "Begin": 0, "End": 1 } }, ---- ----