Snips NLU es una alternativa de código abierto, privada por diseño a Dialogflow, Amazon Lex y otros servicios en la nube de NLU

Integrar una interfaz de voz o chatbot en un producto utilizado para requerir un servicio en la nube de comprensión del lenguaje natural (NLU). Hoy en día, somos Snips NLU de código abierto, un motor NLU privado por diseño que cumple con GDPR. Puede ejecutarse en Edge o en un servidor, con una huella mínima, mientras funciona tan bien o mejor que las soluciones en la nube.

Comprensión del lenguaje natural

Podría decirse que 2017 fue el año del asistente de IA. Desde los 60 millones de mensajes que los bots de Facebook procesan todos los días, hasta las decenas de millones de usuarios que ahora hablan con un dispositivo impulsado por Alexa o Google, el lenguaje natural se ha convertido en un modo preferido de interacción entre personas y máquinas. Se agrega una nueva habilidad a la tienda de habilidades de Amazon Alexa cada 90 minutos, lo que hace que los asistentes de voz crezcan más rápido que las tiendas de aplicaciones para teléfonos inteligentes.

Detrás de cada chatbot y asistente de voz se encuentra una pieza de tecnología común: la comprensión del lenguaje natural (NLU). Cada vez que un usuario interactúa con una IA usando lenguaje natural, sus palabras deben traducirse en una descripción legible por máquina de lo que significan. La voz requiere un paso adicional, que es transcribir la voz del usuario en el texto correspondiente, antes de ejecutar la NLU.

El motor NLU primero detecta cuál es la intención del usuario (también conocida como intención), luego extrae los parámetros (llamados slots) de la consulta. El desarrollador puede usar esto para determinar la acción o respuesta adecuada.

Ejemplo de salida del motor NLU

La mayoría de los chatbots y asistentes de voz confían en los servicios en la nube para su NLU. Los más comunes incluyen Dialogflow (Google, ex API.ai), Amazon Lex, Amazon Alexa, Luis.ai (Microsoft), Wit.ai (Facebook) e IBM Watson.

Una cosa que todas estas soluciones tienen en común es que están totalmente centralizadas y se ejecutan en los servidores del proveedor. Esto significa que pueden acceder a todos los datos que se envían a su servicio y reutilizarlos a voluntad. Ver los términos de servicio muestra exactamente eso, como aquí para Amazon Lex:

Datos y seguridad
P. ¿Amazon Lex procesa las entradas de voz y texto y cómo las utiliza AWS?
Amazon Lex puede almacenar y utilizar entradas de voz y texto procesadas por el servicio únicamente para proporcionar y mantener el servicio y para mejorar y desarrollar la calidad de Amazon Lex y otras tecnologías de aprendizaje automático / inteligencia artificial de Amazon. El uso de su contenido es necesario para la mejora continua de la experiencia del cliente de Amazon Lex, incluido el desarrollo y la capacitación de tecnologías relacionadas. (...)

Retrocedamos un paso. La industria del software tradicionalmente había convergido hacia análisis e informes potenciales de fallas como buenas prácticas generales para fomentar la mejora continua de los productos. Pero siempre se limitó a casos donde las cosas fallaron. La recopilación de datos sistemática y permanente que se ha convertido en la norma en IA es algo nuevo. Supuestamente, la recopilación y el almacenamiento de este contenido se considera necesario para el desarrollo de todas las tecnologías de IA.

Esto es, de hecho, una falsa dicotomía. En Snips, creamos una plataforma de voz para dispositivos conectados que incluye detección de Wakeword, reconocimiento de voz (ASR), comprensión del lenguaje natural (NLU) y diálogo. Lo único de Snips es que todo se ejecuta en Edge, y la voz del usuario se procesa directamente en el dispositivo con el que está hablando. Nunca tocamos, procesamos ni recopilamos datos de usuarios, lo que convierte a nuestra plataforma en la primera alternativa de Private by Design a los asistentes de voz tradicionales.

En un esfuerzo por proporcionar más transparencia y privacidad, estamos abriendo progresivamente los componentes principales de nuestra tecnología, comenzando hoy con Snips NLU.

Snips NLU es una biblioteca de Python que se puede usar para entrenar fácilmente modelos y usar modelos entrenados para hacer predicciones sobre nuevas consultas. Vea la documentación aquí. Además, también estamos comprando Snips NLU-rs de código abierto, una implementación de Rust centrada en la parte de predicción (también conocida como inferencia). Esta biblioteca se puede usar en la mayoría de las arquitecturas modernas: en pequeños dispositivos conectados, en dispositivos móviles, en el escritorio o en un servidor. Actualmente puede manejar 5 idiomas (inglés, francés, alemán, español y coreano), y se agregan más regularmente.

Veamos ahora cómo le va a Snips NLU. Nos centraremos en el rendimiento y la precisión, demostrando que nuestra tecnología funciona a la par o mejor que las soluciones basadas en la nube.

Tiempo de ejecución de inferencia

Un argumento típico para usar los servicios en la nube de aprendizaje automático son los costos de infraestructura. Para eso es la nube, para aliviar a los desarrolladores de operaciones complejas y costosas, para que puedan concentrarse en lo que hacen mejor.

Entendemos que este es un aspecto crítico, en particular porque nuestra plataforma debe ejecutarse en dispositivos pequeños. Hemos optimizado nuestro motor de inferencia Snips NLU-rs para que se ejecute literalmente en cualquier lugar, desde una Raspberry Pi Zero de 5 $ hasta una instancia de nivel gratuito AWS EC2. Este es el tiempo de ejecución promedio para procesar una consulta en un asistente típico:

Tiempo promedio para analizar una consulta con Snips NLU-rs

En promedio, se requieren menos de 2 milisegundos para analizar una consulta en un Macbook Pro 2015 con Core i7 a 2.5 GHz. Debido a que nuestra plataforma está optimizada para el rendimiento y no requiere acceso a la red, la ganancia de tiempo típica puede ser de más de 2 órdenes de magnitud en comparación con el uso de un servicio en la nube.

La memoria también se ha optimizado, desde unos pocos cientos de KB de RAM para casos comunes hasta unos pocos MB para los asistentes más complejos. Esto significa que el asistente puede caber en una Raspberry Pi, una aplicación móvil o una capa gratuita de Amazon. ¡También significa que los servidores más potentes pueden manejar cientos de instancias paralelas del motor NLU!

Para lograr este nivel de rendimiento, tuvimos que repensar por completo cómo construir un motor NLU, tanto en términos de ingeniería como de aprendizaje automático.

Por ejemplo, implementamos en Rust todo lo que aún no estaba escrito en un lenguaje de bajo nivel. En caso de que no esté familiarizado con Rust, es un lenguaje brillante que ofrece seguridad en la memoria mientras funciona tan rápido como C ++.

En el lado del aprendizaje automático, probamos docenas de modelos diferentes, desde CNN hasta bi-LSTM, pero terminamos usando un modelo plano más tradicional llamado Campo aleatorio condicional de cadena lineal (CRF). También reemplazamos las incrustaciones de palabras pesadas por un conjunto de características cuidadosamente diseñadas que capturan señales semánticas y estructurales de la oración. Descubrimos que no había una ganancia significativa al usar el aprendizaje profundo versus los CRF para las tareas de comprensión del lenguaje natural. Sin embargo, esto no es cierto para ASR, donde el aprendizaje profundo es obligatorio para lograr una alta precisión (más sobre eso pronto).

Exactitud

Para verificar que el motor Snips NLU funcionó bien, lo comparamos con los servicios en la nube, incluidos API.ai (ahora DialogFlow, Google), Wit.ai (Facebook), Luis.ai (Microsoft) y Amazon Alexa. Cada solución fue entrenada usando el mismo conjunto de datos y probada en el mismo conjunto de prueba fuera de la muestra. Los resultados mostraron que nuestra NLU es tan precisa o mejor que las soluciones en la nube en las tareas de extracción de slots, independientemente de la cantidad de datos de entrenamiento que se usó.

Evaluación comparativa de los sistemas de comprensión del lenguaje natural (consulte la publicación del blog y los datos originales)

También reproducimos un punto de referencia académico publicado el verano pasado. En este artículo, los autores evaluaron el rendimiento de API.ai (ahora Dialogflow, Google), Luis.ai (Microsoft), IBM Watson y Rasa NLU. Para ser justos, utilizamos la última versión de Rasa NLU y la comparamos con la última versión de Snips NLU (ambas en azul oscuro).

Reproducción de

En todos los puntos de referencia, Snips NLU ocupa el puesto más alto o el segundo más alto, a pesar de ser más rápido y más liviano que cualquier otra solución. Esto muestra que optar por una solución NLU en la nube, y por lo tanto sacrificar la privacidad y el control sobre los datos, ya no es estrictamente necesario. Ya sea que se ejecute en un dispositivo o en un servidor, Snips NLU es una alternativa poderosa a las soluciones existentes.

Madurez y ecosistema

El motor Snips NLU es el resultado de años de investigación e ingeniería, y ha sido probado exhaustivamente. Es el mismo código que utilizamos en nuestra oferta comercial, que se ejecuta dentro de los dispositivos de nuestros clientes.

Además, hicimos nuestra plataforma de voz gratuita para casos de uso no comerciales, y lanzamos una interfaz web que permite a los fabricantes y desarrolladores crear su propio asistente. Desde su lanzamiento el verano pasado, más de 9,000 desarrolladores se han registrado, creando más de 19,000 asistentes de voz.

Un asistente de ejemplo creado en Snips.ai

También lanzamos un servicio de generación de datos único que permite a cualquiera que construya una interfaz de conversación generar miles de muestras sintéticas de entrenamiento con solo unos pocos ejemplos. Esta solución resuelve el problema del arranque en frío imitando meses de datos reales del usuario.

Snips NLU es una alternativa rápida, ligera, precisa y madura a las soluciones de comprensión del lenguaje natural basadas en la nube. El código abierto nos ayudará a mejorar nuestra tecnología, promover los principios de Privacidad por Diseño y llevar la IA al límite. Si quieres saber más, ¡mira el repositorio de Github y comienza a construir tu propio asistente en la consola de Snips!

Si te gustó este artículo y quieres apoyar Snips, ¡compártelo!

Síguenos en Twitter jodureau y recortes.

Para cualquier pregunta o comentario, contáctenos en el Discord.

Si desea trabajar en AI + Privacy, consulte nuestra página de trabajos.