Migración de Language Understanding (LUIS) a reconocimiento del lenguaje conversacional (CLU)

Reconocimiento del lenguaje conversacional (CLU) es una oferta de inteligencia artificial basada en la nube de Lenguaje de Azure AI. Es la generación más reciente de Language Understanding (LUIS) y ofrece compatibilidad con aplicaciones de LUIS creadas anteriormente. CLU emplea inteligencia de aprendizaje automático de última generación para permitir a los usuarios crear un modelo de comprensión del lenguaje natural personalizado con el fin de predecir intenciones y entidades en expresiones conversacionales.

CLU ofrece las siguientes ventajas sobre LUIS:

  • Precisión mejorada con modelos de aprendizaje automático de última generación para mejorar la clasificación de intenciones y la extracción de entidades. En LUIS eran necesarios más ejemplos para generalizar ciertos conceptos en intenciones y entidades, mientras que el aprendizaje automático más avanzado de CLU reduce la carga de los clientes al requerir muchos menos datos.
  • Compatibilidad multilingüe con el aprendizaje y el entrenamiento de modelos. Puede entrenar proyectos en un idioma y predecir inmediatamente intenciones y entidades en 96 idiomas.
  • Integración fácil con diferentes proyectos de respuesta a preguntas personalizada y CLU mediante el flujo de trabajo de orquestación.
  • Posibilidad de agregar datos de prueba dentro de la experiencia mediante Language Studio y las API para la evaluación del rendimiento del modelo antes de la implementación.

Para empezar, puede crear un nuevo proyecto o migrar la aplicación de LUIS.

Comparación entre LUIS y CLU

En la tabla siguiente se presenta una comparación en paralelo entre las características de LUIS y CLU. También se resaltan los cambios en la aplicación de LUIS después de migrar a CLU. Seleccione el concepto vinculado para más información sobre los cambios.

Características de LUIS Características de CLU Después de la migración
Entidades de aprendizaje automático estructurado y con aprendizaje automático Componentes de entidad aprendidos Las entidades con aprendizaje automático sin subentidades se transferirán como entidades de CLU. Las entidades de aprendizaje automático estructurado solo transferirán nodos hoja (subentidades de nivel más bajo que no tienen sus propias subentidades) como entidades de CLU. El nombre de la entidad en CLU será el nombre de la subentidad concatenada con la entidad principal. Por ejemplo, Order.Size
Entidades de lista, expresión regular y precompiladas Componentes de entidad de lista, expresión regular y precompilada Las entidades de lista, expresión regular y precompiladas se transferirán como entidades en CLU con un componente de entidad rellenado basado en el tipo de entidad.
Entidades Pattern.Any No está disponible actualmente Las entidades Pattern.Any se quitarán.
Referencia cultural única para cada aplicación Los modelos multilingües permiten varios idiomas en cada proyecto. El idioma principal del proyecto se establecerá como referencia cultural de la aplicación de LUIS. El proyecto se puede entrenar para extenderse a diferentes idiomas.
Roles de entidad Los roles ya no son necesarios. Los roles de entidad se transferirán como entidades.
Configuración para: normalizar puntuación, normalizar diacríticos, normalizar formato de palabras, usar todos los datos de entrenamiento Ya no se necesita configuración. La configuración no se transferirá.
Patrones y características de listas de frases Ya no se necesitan patrones ni características de lista de frases. No se transferirán patrones ni características de lista de frases.
Características de entidad Componentes de la entidad Las entidades precompiladas o de lista agregadas como características a una entidad se transferirán como componentes agregados a esa entidad. Las características de entidad no se transferirán para las intenciones.
Intenciones y expresiones Intenciones y expresiones Todas las intenciones y expresiones se transferirán. Las expresiones se etiquetarán con sus entidades transferidas.
GUID de aplicación Nombres de proyecto Se creará un proyecto para cada aplicación de migración con el nombre de la aplicación. Los caracteres especiales de los nombres de aplicación se quitarán en CLU.
Control de versiones Cada vez que se realiza un entrenamiento, se crea un modelo que actúa como una versión del proyecto. Se creará un proyecto para la versión de aplicación seleccionada.
Evaluación mediante pruebas por lotes Evaluación mediante conjuntos de pruebas Será necesario agregar el conjunto de datos de prueba.
Control de acceso basado en rol (RBAC) para recursos de LUIS Control de acceso basado en rol (RBAC) disponible para los recursos de Lenguaje RBAC para recursos de lenguaje se debe agregar manualmente después de la migración.
Modo de entrenamiento único Modos de entrenamiento estándar y avanzado Después de la migración de la aplicación, será necesario el entrenamiento.
Dos ranuras de publicación y publicación de versiones Diez ranuras de implementación con nomenclatura personalizada Después de la migración y el entrenamiento de la aplicación, será necesaria la implementación.
Compatibilidad con el SDK y las API de creación de LUIS en .NET, Python, Java y Node.js API REST de creación de LUIS Para más información sobre las API de creación de CLU, consulte el artículo de inicio rápido. Para usar las API de creación de CLU, será necesaria la refactorización.
Compatibilidad con el SDK y las API de tiempo de ejecución de LUIS en .NET, Python, Java y Node.js API de tiempo de ejecución de CLU. Compatibilidad con el SDK de tiempo de ejecución de CLU en .NET y Python. Para más información, consulte cómo llamar a la API. Para usar la respuesta de la API de tiempo de ejecución de CLU, será necesaria la refactorización.

Migración de las aplicaciones de LUIS

Siga estos pasos para migrar la aplicación de LUIS mediante el portal de LUIS o la API REST.

Migración de las aplicaciones de LUIS mediante el portal de LUIS

Siga estos pasos para comenzar la migración mediante el portal de LUIS:

  1. Después de iniciar sesión en el portal de LUIS, haga clic en el botón del mensaje emergente situado en la parte superior de la pantalla para iniciar el Asistente para la migración. La migración solo copia las aplicaciones de LUIS seleccionadas en CLU.

    A screenshot showing the migration banner in the LUIS portal.

    La pestaña de información general sobre la migración proporciona una breve explicación de la característica de reconocimiento del lenguaje conversacional y sus ventajas. Haga clic en Next para continuar.

    A screenshot showing the migration overview window.

  2. Determine el recurso de Lenguaje al que quiere migrar la aplicación de LUIS. Si ya ha creado el recurso de Lenguaje, seleccione la suscripción de Azure seguida del recurso de Lenguaje y, luego, seleccione Siguiente. Si no tiene un recurso de Lenguaje, haga clic en el vínculo para crear uno. Después, seleccione el recurso y seleccione Siguiente.

    A screenshot showing the resource selection window.

  3. Seleccione todas las aplicaciones de LUIS que quiera migrar y especifique cada una de sus versiones. Seleccione Siguiente. Después de seleccionar la aplicación y la versión, aparecerá un mensaje que le informa de las características que no se transferirán desde la aplicación de LUIS.

    Nota

    El reconocimiento del lenguaje conversacional no admite caracteres especiales. Los caracteres especiales de los nombres de aplicación de LUIS seleccionados se quitarán en las nuevas aplicaciones migradas. A screenshot showing the application selection window.

  4. Revise las selecciones de recursos de Lenguaje y aplicaciones de LUIS. Seleccione Finalizar para migrar las aplicaciones.

  5. Una ventana emergente le permitirá realizar un seguimiento del estado de migración de las aplicaciones. Las aplicaciones que no han iniciado la migración tendrán el estado Not started. Las aplicaciones que han comenzado la migración tendrán el estado In progress y, cuando hayan terminado de migrarse, su estado será Succeeded. Una aplicación Failed significa que debe repetir el proceso de migración. Una vez completada la migración de todas las aplicaciones, seleccione Done.

    A screenshot showing the application migration progress window.

  6. Cuando las aplicaciones se hayan migrado, puede realizar los pasos siguientes:

Preguntas más frecuentes

¿Qué versión JSON de LUIS es compatible con CLU?

CLU admite el modelo JSON versión 7.0.0. Si el formato JSON es anterior, primero tendría que importarlo a LUIS y, luego, exportarlo desde LUIS con la versión más reciente.

¿Qué diferencias presentan las entidades en CLU?

En CLU, una sola entidad puede tener varios componentes de entidad, que son diferentes métodos de extracción. Estos componentes se combinan luego juntos mediante reglas que se pueden definir. Los componentes disponibles son:

  • Aprendidos: de forma equivalente a las entidades de aprendizaje automático en LUIS, se usan etiquetas para entrenar un modelo con aprendizaje automático a fin de predecir una entidad en función del contenido y el contexto de las etiquetas proporcionadas.
  • Lista: al igual que las entidades de lista de LUIS, los componentes de lista coinciden exactamente con un conjunto de sinónimos y se asignan de nuevo a un valor normalizado denominado clave de lista.
  • Precompilados: los componentes precompilados permiten definir una entidad con los extractores precompilados para los tipos comunes disponibles tanto en LUIS como en CLU.
  • Expresión regular: los componentes de expresión regular usan expresiones regulares para capturar patrones definidos personalizados, exactamente como las entidades de expresión regular de LUIS.

Las entidades de LUIS se transferirán como entidades del mismo nombre en CLU con los componentes equivalentes transferidos.

Después de la migración, los nodos hoja con aprendizaje automático estructurado y las subentidades de nivel inferior se transferirán al nuevo modelo de CLU, mientras que todas las entidades principales y las entidades de nivel superior se omitirán. El nombre de la entidad será el nombre de la entidad de nivel inferior concatenado con su entidad principal.

Ejemplo:

Entidad de LUIS:

  • Pizza Order
    • Topping
    • Size

Entidad de LUIS migrada en CLU:

  • Pizza Order.Topping
  • Pizza Order.Size

Tampoco puede etiquetar dos entidades diferentes en CLU para el mismo intervalo de caracteres. Los componentes aprendidos de CLU son mutuamente excluyentes y no proporcionan predicciones superpuestas solo para componentes aprendidos. Al migrar la aplicación de LUIS, las etiquetas de entidad que se superponen conservan la etiqueta más larga y omiten cualquier otra.

Para más información sobre los componentes de entidad, consulte Componentes de entidad.

¿Cómo se transfieren los roles de entidad a CLU?

Los roles se transferirán como entidades distintas junto con sus expresiones etiquetadas. El tipo de entidad de cada rol determinará qué componente de entidad se rellenará. Por ejemplo, un rol de entidad de lista se transferirá como una entidad con el mismo nombre que el rol, con un componente de lista rellenado.

¿Cómo se transfieren las características de entidad en CLU?

Las entidades usadas como características en las intenciones no se transferirán. Las entidades usadas como características en otras entidades rellenarán el componente pertinente de la entidad. Por ejemplo, si se usó una entidad de lista denominada SizeList como característica para una entidad con aprendizaje automático denominada Size, la entidad Size se transferirá a CLU con los valores de lista de SizeList agregados a su componente de lista. Lo mismo se aplica a las entidades precompiladas y de expresión regular.

¿Qué diferencias presentan las puntuaciones de confianza de las entidades en CLU?

Cualquier entidad extraída tiene una puntuación de confianza del 100 % y, por tanto, las puntuaciones de confianza de la entidad no deben usarse para tomar decisiones entre entidades.

¿Cómo es el reconocimiento del lenguaje conversacional multilingüe?

Los proyectos de reconocimiento del lenguaje conversacional aceptan expresiones en distintos idiomas. Además, puede entrenar el modelo en un idioma y ampliarlo para realizar predicciones en otros idiomas.

Ejemplo:

Expresión de entrenamiento (inglés): How are you?

Intención etiquetada: Saludo

Expresión en tiempo de ejecución (francés): Comment ça va?

Intención prevista: Saludo

¿Por qué es mejor la precisión de CLU que la de LUIS?

CLU usa modelos de última generación para mejorar el rendimiento del aprendizaje automático de diferentes modelos de clasificación de intenciones y extracción de entidades.

Estos modelos no distinguen variaciones menores, lo que elimina la necesidad de la siguiente configuración: normalizar puntuación, normalizar diacríticos, normalizar formato de palabra y usar todos los datos de entrenamiento.

Además, los nuevos modelos no admiten características de lista de frases, ya que ya no requieren información complementaria del usuario para proporcionar palabras semánticamente similares de cara a mejorar la precisión. También se usaban patrones para mejorar la clasificación de intenciones mediante técnicas de coincidencia basadas en reglas que no son necesarias en el nuevo paradigma del modelo. En la siguiente pregunta se explica este aspecto con más detalle.

¿Qué hago si las características que uso en LUIS ya no existen?

Hay varias características que existían en LUIS que ya no estarán disponibles en CLU. Por ejemplo, la posibilidad de realizar ingeniería de características, tener patrones y entidades pattern.any, así como entidades estructuradas. Si tenía dependencias de estas características en LUIS, use la guía siguiente:

  • Patrones: los patrones se agregaron en LUIS para ayudar a la clasificación de intenciones mediante la definición de expresiones plantilla de expresiones regulares. Esto incluía la posibilidad de definir intenciones solo de patrón (sin ejemplos de expresiones). CLU es capaz de generalizar aprovechando los modelos de última generación. Puede proporcionar algunas expresiones que coincidan con un patrón específico a la intención en CLU y es probable que se clasifiquen los distintos patrones como la intención principal sin necesidad de la expresión del patrón plantilla. De esta forma, se simplifica el requisito de formular estos patrones, que era limitado en LUIS, y se proporciona una mejor experiencia de clasificación de intenciones.

  • Características de lista de frases: la posibilidad de asociar características se produjo principalmente para ayudar a la clasificación de intenciones al resaltar los elementos o características principales que se usarían. Esto ya no es necesario, ya que los modelos profundos usados en CLU ya poseen la capacidad de identificar los elementos inherentes al idioma. A su vez, la eliminación de estas características no tendrá ningún efecto en la capacidad de clasificación del modelo.

  • Entidades estructuradas: la posibilidad de definir entidades estructuradas era principalmente para permitir el análisis multinivel de expresiones. Con las diferentes posibilidades de las subentidades, en LUIS era necesario que todas las diferentes combinaciones de entidades se definieran y se presentaran al modelo como ejemplos. En CLU, estas entidades estructuradas ya no se admiten, ya que no se admite la superposición de componentes aprendidos. Hay algunos enfoques posibles para controlar estas extracciones estructuradas:

    • Extracciones no ambiguas: en la mayoría de los casos, la detección de las entidades hoja es suficiente para comprender los elementos necesarios dentro de un intervalo completo. Por ejemplo, una entidad estructurada, como Trip, que abarca completamente un origen y un destino (London to New York o Home to work) se puede identificar con los intervalos individuales previstos para el origen y el destino. Su presencia como predicciones individuales le informaría de la entidad Trip.
    • Extracciones ambiguas: cuando los límites de diferentes subentidades no son muy claros. Para ilustrarlo, tome el ejemplo "I want to order a pepperoni pizza and an extra cheese vegetarian pizza". Aunque se pueden extraer los diferentes tipos de pizza, así como las modificaciones de ingrediente, si se extraen sin contexto, habría un grado de ambigüedad de dónde se agrega el queso adicional. En este caso, la extensión del intervalo se basa en el contexto y requeriría aprendizaje automático para determinar esto. En las extracciones ambiguas, puede usar uno de los enfoques siguientes:
  1. Combinar las subentidades en distintos componentes de entidad dentro de la misma entidad.

Ejemplo:

Implementación de LUIS:

  • Pizza Order (entidad)
    • Size (subentidad)
    • Quantity (subentidad)

Implementación de CLU:

  • Pizza Order (entidad)
    • Size (componente de entidad de lista: small, medium, large)
    • Quantity (componente de entidad precompilado: number)

En CLU, etiquetaría el intervalo completo de Pizza Order, incluidos el tamaño y la cantidad, lo que devolvería el pedido de pizza con una clave de lista para el tamaño y un valor numérico para la cantidad en el mismo objeto de entidad.

  1. En el caso de problemas más complejos en los que las entidades contienen varios niveles de profundidad, puede crear un proyecto para cada uno en la estructura de entidades. Esto le ofrece la opción de:
  • Pasar la expresión a cada proyecto.
  • Combinar los análisis de cada proyecto en la etapa que precede a CLU.

Para ver un ejemplo detallado sobre este concepto, consulte los proyectos de ejemplo de pizza disponibles en GitHub.

¿Cómo se administran las versiones en CLU?

CLU guarda los recursos de datos usados para entrenar el modelo. Puede exportar los recursos de un modelo o volver a cargarlos en el proyecto en cualquier momento. Por lo tanto, los modelos funcionan como versiones diferentes del proyecto.

Puede exportar los proyectos de CLU con Language Studio o mediante programación y almacenar diferentes versiones de los recursos localmente.

¿Por qué la clasificación de CLU es diferente de la de LUIS? ¿Cómo funciona la ausencia de clasificación?

CLU presenta un enfoque diferente para entrenar los modelos que se basa en la clasificación múltiple en lugar de la clasificación binaria. Como resultado, la interpretación de las puntuaciones es diferente y también varía entre las opciones de entrenamiento. Aunque es probable que obtenga mejores resultados, debe observar la diferencia en las puntuaciones y determinar un nuevo umbral para aceptar predicciones de intención. Puede agregar fácilmente un umbral de puntuación de confianza para None intent en la configuración del proyecto. Esto devolverá None como intención principal si la intención principal no superó el umbral de puntuación de confianza proporcionado.

¿Necesito más datos para los modelos de CLU que para los de LUIS?

Los nuevos modelos de CLU tienen un mejor reconocimiento semántico del lenguaje que en LUIS y, a su vez, ayudan a que los modelos se generalicen con una reducción significativa de datos. Aunque el objetivo no debe ser reducir la cantidad de datos que tiene, cabría esperar un mejor rendimiento y resistencia a las variaciones y sinónimos en CLU que en LUIS.

Si no migro mis aplicaciones de LUIS, ¿se eliminarán?

Las aplicaciones de LUIS existentes estarán disponibles hasta el 1 de octubre de 2025. Después de ese tiempo ya no podrá usar esas aplicaciones, los puntos de conexión de servicio ya no funcionarán y las aplicaciones se eliminarán permanentemente.

¿Los archivos .LU son compatibles con CLU?

CLU solo admite el formato JSON. Puede importar los archivos .LU a LUIS y exportarlos en formato JSON, o bien puede seguir los pasos de migración anteriores con la aplicación.

¿Cuáles son los límites de servicio de CLU?

Para más información, consulte el artículo sobre límites del servicio.

¿Tengo que refactorizar el código si migro mis aplicaciones de LUIS a CLU?

Los objetos de API de las aplicaciones de CLU son diferentes a los de LUIS y, por tanto, será necesario refactorizar el código.

Si usa las API de programación y de tiempo de ejecución, puede remplazarlas por sus API equivalentes.

API de creación de CLU: en lugar de las API CRUD específicas de LUIS para acciones individuales, como agregar expresión, eliminar entidad y cambiar el nombre de la intención, CLU ofrece una API de importación que reemplaza el contenido completo de un proyecto con el mismo nombre. Si el servicio usó las API de programación de LUIS para proporcionar una plataforma para otros clientes, debe tener en cuenta este nuevo paradigma de diseño. Todas las demás API, como: enumeración de proyectos, entrenamiento, implementación y eliminación están disponibles. Las API para acciones como importar e implementar son operaciones asincrónicas en lugar de sincrónicas como lo eran en LUIS.

API de tiempo de ejecución de CLU: la nueva solicitud y respuesta de API incluye muchos de los mismos parámetros, como: query, prediction, top intent, intents, entities y sus valores. El objeto de respuesta de CLU ofrece un enfoque más sencillo. Las predicciones de entidad se proporcionan como están dentro del texto de la expresión, y cualquier información adicional, como la resolución o las claves de lista, se proporcionan en parámetros adicionales llamados extraInformation y resolution.

Puede usar el SDK de tiempo de ejecución de CLU para .NET o Python para reemplazar el SDK de tiempo de ejecución de LUIS. Actualmente no hay ningún SDK de creación disponible para CLU.

¿Qué diferencias presentan los tiempos de entrenamiento en CLU? ¿En qué se diferencia el entrenamiento estándar del entrenamiento avanzado?

CLU ofrece entrenamiento estándar, que entrena y aprende en inglés y es comparable al tiempo de entrenamiento de LUIS. También ofrece entrenamiento avanzado, que tarda mucho más tiempo, ya que amplía el entrenamiento a todos los demás idiomas admitidos. La API de entrenamiento seguirá siendo un proceso asincrónico, y deberá evaluar el cambio en el proceso de DevOps que emplea para la solución.

¿Cómo ha cambiado la experiencia en CLU en comparación con LUIS? ¿Qué diferencias presenta el ciclo de vida de desarrollo?

En LUIS, la secuencia de acciones sería compilar, entrenar, probar y publicar, mientras que en CLU es compilar, entrenar, evaluar, implementar y probar.

  1. Compilar: en CLU, puede definir sus intenciones, entidades y expresiones antes del entrenamiento. CLU ofrece además la posibilidad de especificar datos de prueba a medida que se compila la aplicación que se van a usar para la evaluación del modelo. La evaluación valora el rendimiento del modelo sobre los datos de prueba y proporciona métricas de precisión, recuperación y F1.
  2. Entrenar: puede crear un modelo con un nombre cada vez que lo entrene. También puede sobrescribir un modelo ya entrenado. Puede especificar entrenamiento estándar o avanzado y determinar si quiere usar los datos de prueba para la evaluación o dejar un porcentaje de los datos fuera del entrenamiento y usarlos como datos de prueba. Una vez completado el entrenamiento, puede evaluar el funcionamiento del modelo en el exterior.
  3. Implementar: después de que ha finalizado el entrenamiento y tiene un modelo con un nombre, se puede implementar para realizar predicciones. La implementación también recibe un nombre y tiene un modelo asignado. Podría tener varias implementaciones para el mismo modelo. Una implementación se puede sobrescribir con un modelo diferente o puede intercambiar modelos con otras implementaciones del proyecto.
  4. Probar: una vez completada la implementación, puede usarla para realizar predicciones mediante el punto de conexión de implementación. También puede probarla en el estudio en la página de implementación de pruebas.

Este proceso es diferente en LUIS, donde el identificador de aplicación se adjunta a todo, y se implementa una versión de la aplicación en las ranuras de ensayo o de producción.

Esto influirá en los procesos de DevOps que use.

¿CLU tiene compatibilidad con contenedores?

No, no puede exportar CLU a contenedores.

¿Cómo se nombrarán mis aplicaciones de LUIS en CLU después de la migración?

Se quitarán los caracteres especiales del nombre de la aplicación de LUIS. Si la longitud del nombre borrada es superior a 50 caracteres, se quitarán los caracteres adicionales. Si, después de quitar los caracteres especiales, el nombre está vacío (por ejemplo, si el nombre de la aplicación de LUIS era @@), el nuevo nombre será sin título. Si ya hay un proyecto de reconocimiento del lenguaje conversacional con el mismo nombre, a la aplicación de LUIS migrada se le anexará _1 con el primer duplicado, que aumentará en 1 con cada duplicado adicional. En caso de que la longitud del nuevo nombre sea de 50 caracteres y deba cambiarse el nombre, se quitarán los últimos 1 o 2 caracteres para poder concatenar el número y seguir estando dentro del límite de 50 caracteres.

Preguntas y respuestas sobre la migración desde LUIS

Si tiene alguna pregunta que no se haya respondido en este artículo, puede dejarla en nuestro hilo de preguntas y respuestas de Microsoft.

Pasos siguientes