Asignación de Dirichlet latente

Importante

El soporte técnico de Machine Learning Studio (clásico) finalizará el 31 de agosto de 2024. Se recomienda realizar la transición a Azure Machine Learning antes de esa fecha.

A partir del 1 de diciembre de 2021 no se podrán crear recursos de Machine Learning Studio (clásico). Hasta el 31 de agosto de 2024, puede seguir usando los recursos de Machine Learning Studio (clásico) existentes.

La documentación de ML Studio (clásico) se está retirando y es posible que no se actualice en el futuro.

Uso de la biblioteca Vowpal Wabbit para realizar VW LDA

Categoría: Text Analytics

Nota:

Solo se aplica a: Machine Learning Studio (clásico)

Hay módulos para arrastrar y colocar similares en el diseñador de Azure Machine Learning.

Información general sobre el módulo

En este artículo se describe cómo usar el módulo Asignación dirichlet latente en Machine Learning Studio (clásico) para agrupar texto sin clasificar en varias categorías. La asignación latente de Dirichlet (LDA) se suele usar en el procesamiento de lenguaje natural (NLP) para buscar textos similares. Otro término común es modelado de temas.

Este módulo toma una columna de texto y genera estas salidas:

  • El texto de origen, junto con una puntuación para cada categoría.

  • Una matriz de características, que contiene los términos y coeficientes extraídos para cada categoría.

  • Una transformación, que se puede guardar y volver a aplicar al nuevo texto que se usa como una entrada.

Dado que este módulo usa la biblioteca Vowpal Wabbit, es muy rápido. Para más información sobre Vowpal Wabbit, consulte el repositorio GitHub que incluye tutoriales y una explicación del algoritmo.

Más información sobre la asignación latente de Dirichlet (LDA)

Por lo general, LDA no es un método para la clasificación por se, pero usa un enfoque generativo. Esto significa que no es necesario proporcionar etiquetas de clase conocidas y, a continuación, deducir los patrones. En su lugar, el algoritmo genera un modelo probabilístico que se usa para identificar grupos de temas. Puede usar el modelo probabilístico para clasificar los casos de entrenamiento existentes o los nuevos casos que proporcione al modelo como entrada.

Un modelo generativo puede ser preferible porque evita realizar suposiciones sólidas sobre la relación entre el texto y las categorías, y usa solo la distribución de palabras para modelar temas matemáticamente.

Para más información, consulte la sección Notas técnicas.

Configuración de la Asignación de Dirichlet latente

Este módulo requiere un conjunto de datos que contenga una columna de texto, ya sea sin formato o preprocesada.

  1. Agregue el módulo Asignación dirichlet latente al experimento.

  2. Como entrada para el módulo, proporcione un conjunto de datos que contenga una o varias columnas de texto.

  3. En Columnas de destino, elija una o varias columnas que contengan texto que se analizará.

    Puede elegir varias columnas, pero deben ser del tipo de datos de cadena.

    En general, dado que LDA crea una matriz de características grande a partir del texto, normalmente analizará una sola columna de texto.

  4. En Number of topics to model (Número de temas que se va a modelar), escriba un entero entre 1 y 1000 que indique cuántas categorías o temas desea derivar del texto de entrada.

    De forma predeterminada, se crean 5 temas.

  5. En N-grams (N-gramas), especifique la longitud máxima de los n-gramas generados durante la operación de hash.

    El valor predeterminado es 2, lo que significa que se generan bigramas y unigramas.

  6. Seleccione la opción Normalizar para convertir los valores de salida en probabilidades. Por lo tanto, en lugar de representar los valores transformados como enteros, los valores del conjunto de datos de características y de salida se transformarían de la siguiente manera:

    • Los valores del conjunto de datos se representarán como una probabilidad en la que P(topic|document).

    • Los valores de la matriz de temas de características se representarán como una probabilidad en la que P(word|topic).

  7. Seleccione la opción Mostrar todas las opciones y, a continuación, esta establezca esta opción en TRUE si desea ver y, a continuación, establezca parámetros avanzados adicionales.

    Estos parámetros son específicos de la implementación de Vowpal Wabbit de LDA. Hay algunos buenos tutoriales sobre LDA en Vowpal Wabbit online, así como la wiki oficial de Vowpal Wabbit.

    Consulte este ejemplo para obtener ejemplos de la versión 8 y el uso de VW en Azure ML.

    • Parámetro ro. Proporcione una probabilidad anterior para la dispersión de las distribuciones de temas. Corresponde al parámetro de lda_rho VW. Usaría el valor 1 si espera que la distribución de palabras sea plana; Es decir, todas las palabras se asumen como equiparables. Si cree que la mayoría de las palabras aparecen dispersamente, puede establecerla en un valor mucho menor.

    • Parámetro alfa. Especifique una probabilidad anterior para la dispersión de las ponderaciones de tema por documento. Corresponde al parámetro de lda_alpha VW.

    • Número de documentos estimado. Escriba un número que represente la mejor estimación del número de documentos (filas) que se procesarán. Esto permite al módulo asignar una tabla hash de tamaño suficiente. Corresponde al parámetro lda_D de Vowpal Wabbit.

    • Tamaño del lote. Escriba un número que indique cuántas filas se incluirán en cada lote de texto enviado a Vowpal Wabbit. Corresponde al parámetro batch_sz de Vowpal Wabbit.

    • Valor inicial de la iteración usada en la programación de actualización de aprendizaje. Especifique el valor inicial de la velocidad de aprendizaje. Corresponde al parámetro initial_t de Vowpal Wabbit.

    • Energía aplicada a la iteración durante las actualizaciones. Indique el nivel de energía aplicado al recuento de iteraciones durante las actualizaciones en línea. Corresponde al parámetro power_t de Vowpal Wabbit.

    • Número de pases sobre los datos. Especifique el número de veces que el algoritmo recorrerá los datos. Corresponde al parámetro epoch_size de Vowpal Wabbit.

  8. Seleccione la opción Build dictionary of ngrams (Compilar diccionario de ngrams) o Build dictionary of ngrams (Compilar diccionario de ngrams) antes de LDA, si desea crear la lista de n-gramas en un paso inicial, antes de clasificar texto.

    Si crea el diccionario inicial de antemano, puede usarlo más adelante al revisar el modelo. La capacidad de asignar resultados a texto en lugar de índices numéricos suele ser más fácil de interpretar. Sin embargo, el proceso de guardar el diccionario tardará más tiempo y usará almacenamiento adicional.

  9. En Tamaño máximo del diccionario de ngramas, escriba el número total de filas que se pueden crear en el diccionario de n-gramas.

    Esta opción es útil para controlar el tamaño del diccionario. Sin embargo, si el número de ngrams de la entrada supera este tamaño, pueden producirse colisiones.

  10. Ejecute el experimento. El módulo LDA usa el teorema de Bayes para determinar qué temas pueden asociarse a palabras individuales. Las palabras no están asociadas exclusivamente a ningún tema o grupo; en su lugar, cada n-grama tiene una probabilidad aprendida de asociarse a cualquiera de las clases detectadas.

Results

El módulo tiene dos salidas:

  • Conjunto de datos transformado: contiene el texto de entrada y un número especificado de categorías detectadas, junto con las puntuaciones de cada ejemplo de texto para cada categoría.

  • Matriz de temas de características: la columna situada más a la izquierda contiene la característica de texto extraído y hay una columna para cada categoría que contiene la puntuación de esa característica en esa categoría.

Para obtener más información, vea Ejemplo de resultados de LDA.

Transformación de LDA

Este módulo también genera la transformación que aplica LDA al conjunto de datos, como una interfaz ITransform.

Puede guardar esta transformación y volver a usarla para otros conjuntos de datos. Esto puede ser útil si ha entrenado en un corpus grande y desea reutilizar los coeficientes o categorías.

Perfeccionamiento de resultados o un modelo de LDA

Normalmente no se puede crear un único modelo LDA que satisfaga todas las necesidades, e incluso un modelo diseñado para una tarea podría requerir muchas iteraciones para mejorar la precisión. Se recomienda probar todos estos métodos para mejorar el modelo:

  • Cambiar los parámetros del modelo
  • Usar la visualización para comprender los resultados
  • Obtener los comentarios de expertos en la materia para determinar si los temas generados son útiles.

Las medidas cualitativas también pueden ser útiles para evaluar los resultados. Para evaluar los resultados del modelado de temas, tenga en cuenta lo siguiente:

  • Precisión: ¿son elementos similares realmente similares?
  • Diversidad: ¿puede el modelo discriminar entre elementos similares cuando sea necesario para el problema empresarial?
  • Escalabilidad: ¿funciona en una amplia gama de categorías de texto o solo en un dominio de destino estrecho?

La precisión de los modelos basados en LDA a menudo se puede mejorar mediante el procesamiento de lenguaje natural para limpiar, resumir y simplificar o clasificar texto. Por ejemplo, las técnicas siguientes, todas admitidas en Machine Learning, pueden mejorar la precisión de la clasificación:

  • Detención de la eliminación de palabras

  • Normalización de mayúsculas

  • Lematización

  • Reconocimiento de entidades con nombre

Para obtener más información, vea Preprocesar textoy Reconocimiento de entidades con nombre.

En Studio (clásico), también puede usar bibliotecas de R o Python para el procesamiento de texto: Ejecutar script R, Ejecutar script de Python

Ejemplos

Para obtener ejemplos de análisis de texto, consulte estos experimentos en el Azure AI Gallery:

Para obtener más información y un ejemplo basado en el texto de revisión del cliente, consulte Descripción de los resultados de LDA.

Ejemplo de resultados de LDA

Para ilustrar cómo funciona el módulo Asignación de Dirichlet latente, en el ejemplo siguiente se aplica LDA con la configuración predeterminada al conjunto de datos book review proporcionado en Machine Learning Studio (clásico).

Conjunto de datos de origen

El conjunto de datos contiene una columna de clasificación, así como el texto de comentario completo proporcionado por los usuarios.

En esta tabla se muestran solo algunos ejemplos representativos.

text
Este libro tiene sus buenos puntos. En cualquier caso, le ayuda a poner en palabras lo que quiere de un supervisor...
Admito que no he terminado este libro. Un amigo me lo ha recomendado, ya que he tenido problemas con el corazón...
He intentado leer este libro mal escrito, pero lo he encontrado tan turgid y mal escrito que lo he puesto frustrado. ...
Desde que he tomado prestada una copia con oído de perro de amigos que la estaban pasando hace varios años, no he podido obtener mis manos en este libro que se ha convertido en un favorito de breve duración.
El trazado de este libro era interesante y podría haber sido un buen libro. Desafortunadamente, no lo era. El problema principal para mí era que...

Durante el procesamiento, el módulo Asignación dirichlet latente limpia y analiza el texto, en función de los parámetros especificados. Por ejemplo, puede tokenizar automáticamente el texto y quitar los signos de puntuación y, al mismo tiempo, buscar las características de texto de cada tema.

Conjunto de datos transformado de LDA

La tabla siguiente contiene el conjunto de datos transformado , basado en el ejemplo de revisión de libros. La salida contiene el texto de entrada y un número especificado de categorías detectadas, junto con las puntuaciones de cada categoría.

Nombre de la película Tema 1 Tema 2 Tema 3 Tema 4 Tema 5
este libro tiene sus buenos puntos 0.001652892 0.001652892 0.001652892 0.001652892 0.9933884
friend me lo ha recomendado 0.00198019 0.001980198 0.9920791 0.001980198 0.001980198
intentó leer este libro 0.002469135 0.002469135 0.9901233 0.002469135 0.002469135
la tomó prestada de friend 0.9901232 0.002469135 0.002469135 0.002469135 0.002469135
gráfico de este libro era interesante 0.001652892 0.001652892 0.9933884 0.001652892 0.001652892

En este ejemplo, se usa el valor predeterminado de 5 para Number of topics to model (Número de temas que se va a modelar). Por lo tanto, el módulo LDA crea cinco categorías, que podemos suponer que se corresponderán aproximadamente con el sistema de clasificación de cinco escalas original.

El módulo también asigna una puntuación a cada entrada para cada una de las cinco categorías que representan temas. Una puntuación indica la probabilidad de que la fila se asigne a una categoría determinada.

Matriz de temas de características

La segunda salida del módulo es la matriz de temas de características. Se trata de un conjunto de datos tabular que contiene el texto caracterizado , , en la columna Característica, junto con una puntuación para cada una de las categorías, en las columnas restantes Tema 1, Tema 2, ... Tema N. La puntuación representa el coeficiente.

Característica Tema 1 Tema 2 Tema 3 Tema 4 Tema 5
Interesante 0.0240282071983144 0.0354678954779375 0.363051866576914 0.0276637824315893 0.660663576149515
gustaba 0.0171478729532397 0.0823969031108669 0.00452966877950789 0.0408714510319233 0.025077322689733
desde 0.0148224220349217 0.0505086981492109 0.00434423322461094 0.0273389126293824 0.0171484355106826
trazado 0.0227415889348212 0.0408709456489325 0.182791041345191 0.086937090812819 1 0.0169680136708971
lectura 0.0227415889348212 0.0408709456489325 0.182791041345191 0.0869370908128191 0.0169680136708971
Intentó 0.0269724979147211 0.039026263551767 0.00443749106785087 0.0628829816088284 0.0235340728818033
yo 0.0262656945140134 0.0366941302751921 0.00656837975179138 0.0329214576160066 0.0214121851106808
to 0.0141026103224462 0.043359976919215 0.00388640531859447 0.0305925953440055 0.0228993750526364
it 0.0264490547105951 0.0356674440311847 0.00541759897864314 0.0314539386250293 0.0140606468587681
friend 0.0135971322960941 0.0346118171467234 0.00434999437350706 0.0666507321888536 0.018156863779311
puntos 0.0227415889348212 0.0396233855719081 0.00404663601474112 0.0381156510019025 0.0337788009496797
good (bien) 0.651813073836783 0.0598646397444108 0.00446809691985617 0.0358975694646062 0.0138989124411206
its 0.0185385588647078 0.144253986783184 0.00408876416453866 0.0583049240441475 0.015442805566858
de 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
Prestado 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
has 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
libro 0.0143157047920681 0.069145948535052 0.184036340170983 0.0548757337823903 0.0156837976985903
recomendado 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372
this 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372

Notas técnicas

Esta sección contiene detalles de implementación, sugerencias y respuestas a las preguntas más frecuentes.

Detalles de la implementación

De forma predeterminada, las distribuciones de salidas para el conjunto de datos transformado y la matriz de temas de características se normalizan como probabilidades.

  • El conjunto de datos transformado se normaliza como la probabilidad condicional de los temas dado un documento. En este caso, la suma de cada fila es igual a 1.

  • La matriz de temas de características se normaliza como la probabilidad condicional de las palabras dado un tema. En este caso, la suma de cada columna es igual a 1.

Sugerencia

En ocasiones, el módulo podría devolver un tema vacío, que suele deberse a la inicialización pseudo aleatoria del algoritmo. Si esto sucede, puede intentar cambiar los parámetros relacionados, como el tamaño máximo del diccionario de N-gramas o el número de bits que se usarán para el hash de características.

Modelado de temas y LDA

La asignación latente de Dirichlet (LDA) se suele usar para el modelado de temas basado en contenido, lo que básicamente significa categorías de aprendizaje de texto sin clasificar. En el modelado de temas basado en contenido, un tema es una distribución de palabras.

Por ejemplo, suponga que ha proporcionado un corpus de revisiones de clientes que incluye muchos, muchos productos. El texto de las revisiones enviadas por muchos clientes a lo largo del tiempo contendrá muchos términos, algunos de los cuales se usan en varios temas.

Un tema identificado por el proceso de LDA podría representar revisiones para un producto A individual o podría representar un grupo de revisiones de productos. Para LDA, el tema en sí es solo una distribución de probabilidades con el tiempo para un conjunto de palabras.

Los términos rara vez son exclusivos de un producto, pero pueden hacer referencia a otros productos o ser términos generales que se aplican a todo ("excelente", "afición"). Otros términos podrían ser palabras irrelevantes. Sin embargo, es importante comprender que el método LDA no pretende capturar todas las palabras del universo, ni comprender cómo se relacionan las palabras, además de las probabilidades de repetición compartida. Solo puede agrupar las palabras que se usaron en el dominio de destino.

Una vez calculados los índices de términos, las filas individuales de texto se comparan mediante una medida de similitud basada en la distancia, para determinar si dos fragmentos de texto son similares entre sí. Por ejemplo, podría encontrar que el producto tiene varios nombres que están estrechamente correlacionados. O bien, puede que términos extremadamente negativos estén asociados normalmente a un producto determinado. Puede usar la medida de similitud para identificar los términos relacionados y para crear recomendaciones.

Entradas esperadas

Nombre Tipo Descripción
Dataset Tabla de datos Conjunto de datos de entrada

Parámetros del módulo

Nombre Tipo Intervalo Opcional Valor predeterminado Descripción
Número de bits de hash Entero [1;31] Se aplica cuando la casilla Mostrar todas las opciones no está activada 12 Número de bits que se usarán para el hash de características
Columnas de destino Selección de columnas Obligatorio StringFeature Nombre o índice de la columna de destino
Número de temas que se van a modelar Entero [1;1000] Obligatorio 5 Modelar la distribución de documentos con N temas
N-gramas Entero [1;10] Obligatorio 2 Orden de N-gramas generados durante el hash
Normalizar Boolean Obligatorio true Normalice la salida a las probabilidades. El conjunto de datos transformado será P(tema|documento) y la matriz de temas de características será P(palabra|tema).
Mostrar todas las opciones Boolean Verdadero o falso Obligatorio False Presenta parámetros adicionales específicos de Vowpal Wabbit online LDA
Parámetro ro Float [0.00001;1.0] Se aplica cuando la casilla Mostrar todas las opciones está activada 0,01 Parámetro ro
Parámetro alfa Float [0.00001;1.0] Se aplica cuando la casilla Mostrar todas las opciones está activada 0,01 Parámetro alfa
Número de documentos estimado Entero [1;int.MaxValue] Se aplica cuando la casilla Mostrar todas las opciones está activada 1000 Número estimado de documentos (corresponde a lda_D parámetro)
Tamaño del lote Entero [1;1024] Se aplica cuando la casilla Mostrar todas las opciones está activada 32 Tamaño del lote
Valor inicial de la iteración usada en la programación de actualización de la velocidad de aprendizaje Entero [0;int.MaxValue] Se aplica cuando la casilla Mostrar todas las opciones está activada 0 Valor inicial del recuento de iteraciones usado en la programación de actualización de velocidad de aprendizaje (corresponde a initial_t parámetro)
Energía aplicada a la iteración durante las actualizaciones Float [0.0;1.0] Se aplica cuando la casilla Mostrar todas las opciones está activada 0.5 Energía aplicada al recuento de iteraciones durante las actualizaciones en línea (corresponde a power_t parámetro)
Número de iteraciones de entrenamiento Entero [1;1024] Se aplica cuando la casilla Mostrar todas las opciones está activada 25 Número de iteraciones de entrenamiento
Crear diccionario de n-gramas Boolean Verdadero o falso Se aplica cuando la casilla Mostrar todas las opciones no está activada True Crea un diccionario de n-gramas antes del cálculo de LDA. Útil para la inspección e interpretación de modelos
Número de bits que se usarán para el hash de características Entero [1;31] Se aplica cuando la opción Compilar diccionario de ngrams es False 12 Número de bits que se usarán durante el hash de características
Tamaño máximo del diccionario de n-gramas Entero [1;int.MaxValue] Se aplica cuando la opción Crear diccionario de n-gramas es True 20000 Tamaño máximo del diccionario de n-gramas. Si el número de tokens de la entrada supera este tamaño, pueden producirse colisiones.
Crear diccionario de n-gramas antes de LDA Boolean Verdadero o falso Se aplica cuando la casilla Mostrar todas las opciones está activada True Crea un diccionario de n-gramas antes de LDA. Útil para la inspección e interpretación de modelos
Número máximo de n-gramas en el diccionario Entero [1;int.MaxValue] Se aplica cuando la opción Build dictionary of ngrams (Compilar diccionario de ngrams ) es True y la casilla Mostrar todas las opciones está activada 20000 Tamaño máximo del diccionario. Si el número de tokens de la entrada supera este tamaño, pueden producirse colisiones.

Salidas

Nombre Tipo Descripción
Conjunto de datos transformado Tabla de datos Conjunto de datos de salida
Matriz de temas de características Tabla de datos Matriz de temas de características producida por LDA
Transformación de LDA Interfaz ITransform Transformación que aplica LDA al conjunto de datos

Excepciones

Excepción Descripción
Error 0002 Se produce una excepción si no se encontraron una o más columnas especificadas del conjunto de datos.
Error 0003 Se produce una excepción si una o varias de las entradas son NULL o están vacías.
Error 0004 Se produce una excepción si el parámetro es menor o igual que el valor especificado.
Error 0017 Se produce una excepción si una o varias columnas especificadas tienen un tipo no compatible con el módulo actual.

Para obtener una lista de errores específicos de los módulos de Studio (clásico), consulte Machine Learning códigos de error.

Para obtener una lista de excepciones de API, consulte Machine Learning códigos de error de la API REST.

Consulte también

Text Analytics
Hash de características
Reconocimiento de entidades con nombre
Puntuación del modelo 7-4 de Vowpal Wabbit
Entrenar el modelo 7-4 de Vowpal Wabbit
Entrenar el modelo 8 de Vowpal Wabbit