En la primavera, lanzamos la plataforma
Dialogs , que le permite crear habilidades para Alice y reconocer las solicitudes de voz de los usuarios. Inicialmente, los desarrolladores de habilidades tuvieron que analizar las consultas ellos mismos. Por ejemplo, encuentre la dirección en el texto. Ahora la plataforma se hace cargo de esta parte del trabajo.
Hoy le diremos a los lectores de Habr sobre el reconocimiento de las entidades nombradas (reconocimiento de entidad nombrada; NER) y nuevas oportunidades para desarrolladores de habilidades.

Creemos que el futuro está con las interfaces de voz. Ya en muchos casos, los usuarios prefieren usar la voz en lugar de un teclado en pantalla. Por ejemplo, al conducir un automóvil. O para encontrar respuestas rápidas a preguntas simples. O para jugar en la "ciudad" tendida en el sofá. Pero para que tales escenarios se vuelvan más y más, simplemente reconocer la voz en el texto no es suficiente.
Las interfaces de voz son similares a las consultas de los motores de búsqueda. No siempre entendemos exactamente cómo formular nuestra solicitud para encontrar exactamente lo que necesitamos. En los albores de la formación de Internet, este era un gran problema, porque los motores de búsqueda solo buscaban las ocurrencias exactas de las palabras de la consulta. Así con la voz. Si no sabemos qué equipo se espera de nosotros, adivinaremos durante mucho tiempo.
Una buena interfaz de voz no debería llevar a una persona a un callejón sin salida. Por lo general, los desarrolladores de habilidades resuelven esto con dos trucos. En primer lugar, las respuestas esperadas se solicitan utilizando los botones en la pantalla. Esta es una buena práctica que recomendamos no ignorar.
Además, los creadores de habilidades intentan dividir las preguntas complejas en una serie de preguntas más simples, cuyas respuestas son más fáciles de predecir. Además, en algunos casos, los usuarios deben pronunciar las palabras estrictamente en una determinada forma y caso. El problema con este enfoque es que ya no puede llamarse comunicación natural. Cuantas más convenciones y limitaciones, menos control de voz difiere del uso de un teclado y botones. Idealmente, el usuario debe comunicarse con el servicio tan libremente como con una persona.
Es bueno cuando el usuario puede decir "¡Gracias! Entregue el pedido a Leo Tolstoi 16 y entrégueselo a Sergey Sergeyev ", en lugar de dividirlo en una serie de preguntas sobre la calle, el número de la casa, el nombre y el apellido. Pero esto requerirá que el desarrollador analice más a fondo las respuestas recibidas. Puede hacer esto manualmente por el operador, pero con un gran flujo de operadores, se necesitará mucho. Y es poco probable que los operadores hagan esto en tiempo real, por lo que la habilidad perderá la oportunidad de aclarar la información que falta de inmediato. Puede desarrollar una tecnología que encontrará automáticamente información importante en el texto, clasificarla, normalizarla y guardarla. Pero esta es una tarea bastante laboriosa.
Para extraer eficientemente entidades útiles del texto y clasificarlas correctamente por tipo, el servicio debe tener experiencia en dos direcciones importantes. En primer lugar, debe ser capaz de recopilar conocimientos sobre qué son los objetos. Si no tiene Leo Tolstoy Street en el "diccionario", al procesar una solicitud, es fácil confundirlo con el nombre de la persona y omitirlo. Por otro lado, es igualmente importante poder encontrar estos objetos en texto sin procesar del usuario. Como mínimo, tenga en cuenta la morfología del idioma ruso para que se encuentre la palabra "Sergey" y se convierta en el nombre "Sergey".
Dio la casualidad de que Yandex tiene mucha experiencia en estas áreas. Las tecnologías de búsqueda se utilizan tanto para buscar nuevos objetos como para analizar consultas de usuarios. Ahora estas tecnologías también están disponibles para los desarrolladores de habilidades para Alice.
Reconocimiento de entidades nombradas en cuadros de diálogo
Después de que un usuario pronuncia un comando, nuestra plataforma reconoce su texto y extrae palabras y frases que describen objetos específicos. Actualmente, los cuadros de diálogo reconocen:
- nombres;
- indicaciones de ubicación;
- fechas y hora;
- números enteros y fraccionarios.
La información sobre los objetos reconocidos se envía al servidor de habilidades junto con el texto de respuesta del usuario. Considere un ejemplo:
“Pide pizza en Leo Tolstoi 16 para Sergey Sergeyev a las 10 pm”
Nuestra plataforma sabe que Leo Tolstoi no es solo una persona, sino también una calle. También tiene en cuenta que en las direcciones junto a los nombres de las calles a menudo se indican los números de las casas. Por lo tanto, la solicitud de habilidad contendrá el siguiente bloque:
{ "type": "YANDEX.GEO", "value": { "house_number": "16", "street": " " } }
Las ubicaciones pueden incluir no solo la calle y la casa, sino también la ciudad, el país o incluso el aeropuerto.
Con nombres, esto funciona de la misma manera. La plataforma puede encontrar el nombre, apellido, segundo nombre y llevarlos al caso nominativo.
{ "type": "YANDEX.FIO", "value": { "first_name": "", "last_name": "" } }
La normalización de datos es una característica importante del reconocimiento de entidades nombradas. Si para direcciones y nombres esta propiedad no es tan obvia, entonces con fechas y horas todo está mucho más claro. "10 pm" se convierte automáticamente en "22". Mañana y pasado mañana explícitamente incrementan las fechas.
{ "type": "YANDEX.DATETIME", "value": { "hour_is_relative": false, "hour": 22 } }
El reconocimiento de números tampoco debe ser subestimado. Por ejemplo, "cuatro punto cinco décimas" en un texto de un usuario se convertirá en:
{ "type": "YANDEX.NUMBER", "value": 4.5 }
¿Interesado en? Te invitamos a la
documentación . Si quedan preguntas, bienvenido a nuestro chat en
Telegram . Es conveniente seguir otras noticias de la plataforma en el
blog .