Asignación de Dirichlet latente

Use la biblioteca Vowpal Wabbit para realizar el VW LDA

Categoría: Text Analytics

Nota

Se aplica a: machine learning Studio (clásico)

Este contenido solo pertenece a Studio (clásico). Se han agregado módulos similares de arrastrar y colocar al diseñador de Azure Machine Learning. Obtenga más información en este artículo comparativa de las dos versiones.

Información general sobre el módulo

En este artículo se describe cómo usar el módulo de asignación Dirichlet latente en Azure machine learning Studio (clásico) para agrupar de otro modo texto no clasificado en varias categorías. La asignación Dirichlet latente (LDA) se utiliza a menudo en el procesamiento de lenguaje natural (NLP) para buscar textos que son 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 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 obtener más información sobre Vowpal Wabbit, vea el repositorio de github , que incluye tutoriales y una explicación del algoritmo.

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

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

Un modelo de alta disponibilidad puede ser preferible porque evita realizar suposiciones fuertes sobre la relación entre el texto y las categorías, y usa solo la distribución de palabras para modelar los temas de forma matemática.

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 de asignación de 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. Para las columnas de destino, elija una o más columnas que contengan el texto que se va a analizar.

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

    En general, como LDA crea una matriz de características de gran tamaño a partir del texto, normalmente se analiza una sola columna de texto.

  4. Para el número de temas que se van a modelar, escriba un entero entre 1 y 1000 que indique el número de categorías o temas que 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 de la salida y del conjunto de información de características se transformarían de la manera siguiente:

    • 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, ESTABLÉZCALO 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 el wiki oficial de Vowpal Wabbit.

    Vea este ejemplo para obtener ejemplos de la versión 8 y el uso de VW en aprendizaje automático de Azure.

    • Parámetro ro. Proporcione una probabilidad anterior para la dispersión de las distribuciones de temas. Corresponde al parámetro del VW lda_rho . Usaría el valor 1 si espera que la distribución de las palabras sea plana; es decir, se supone que todas las palabras son equiprobable. Si cree que la mayoría de las palabras aparecen de forma dispersa, 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 del VW lda_alpha .

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

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

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

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

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

  8. Seleccione la opción Build Dictionary of ngrams or Build Dictionary of NGRAMS Before Lda, si desea crear la lista de n-grama en un paso inicial, antes de clasificar el 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 ngram, escriba el número total de filas que se pueden crear en el Diccionario n-grama.

    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 de cada categoría.

  • Matriz de temas de características: la columna situada más a la izquierda contiene la característica 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 el ejemplo de resultados de LDA.

Transformación de LDA

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

Puede guardar esta transformación y volver a utilizarla para otros conjuntos de valores. Esto puede resultar útil si ha entrenado en un gran corpus y desea volver a usar los coeficientes o las 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 averiguar 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 muy similares?
  • Diversidad: ¿el modelo puede 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 el texto. Por ejemplo, las técnicas siguientes, todas compatibles con Azure 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, consulte preprocesamiento de texto y reconocimiento de entidades con nombre.

En Studio (clásico), también puede usar las bibliotecas de R o Python para el procesamiento de texto: Ejecutar script de 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 de los clientes, consulte Descripción de los resultados de LDA.

Ejemplo de resultados de LDA

Para ilustrar cómo funciona el módulo de asignación de Dirichlet latente , en el ejemplo siguiente se aplica LDA con la configuración predeterminada al conjunto de código de revisión de libro proporcionado en Azure machine learning Studio (clásico).

Conjunto de datos de origen

El conjunto de contenido 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 buenos puntos. Si se trata de algo, le ayudará a incluir lo que desea de un supervisor.
No he terminado este libro. Un amigo me recomendó que me he dado problemas con insomnio...
Mal escrito he intentado leer este libro, pero lo ha encontrado, por lo que turgid y escrito incorrectamente que lo he puesto en frustración. ...
Puesto que nos ha prestado una copia de perro-eared de los amigos que lo superaron hace un número de años, no he podido obtener el libro que se ha convertido en un favorito de Cult de corta duración.
El trazado de este libro era interesante y podría haber sido un buen libro. Desafortunadamente, no fue así. El problema principal para mí es que...

Durante el procesamiento, el módulo de asignación Dirichlet lated limpia y analiza el texto, en función de los parámetros que se especifiquen. Por ejemplo, puede convertir automáticamente en tokens el texto y quitar los signos de puntuación y, al mismo tiempo, buscar las características de texto de cada tema.

Conjunto de LDA transformado

La tabla siguiente contiene el conjunto de elementos transformado , basado en el ejemplo de revisión del libro. 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 buenos puntos 0,001652892 0,001652892 0,001652892 0,001652892 0,9933884
amigo recomendado 0,00198019 0,001980198 0,9920791 0,001980198 0,001980198
se intentó leer este libro 0,002469135 0,002469135 0,9901233 0,002469135 0,002469135
prestado por el amigo 0,9901232 0,002469135 0,002469135 0,002469135 0,002469135
el trazado 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 el número de temas que se van a modelar. Por lo tanto, el módulo LDA crea cinco categorías, que se pueden asumir 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 filas tabular que contiene el texto caracterizar,, en la característica de columna, junto con una puntuación para cada una de las categorías, en el tema de columnas restantes, tema 2,... Tema N. La puntuación representa el coeficiente.

Característica Tema 1 Tema 2 Tema 3 Tema 4 Tema 5
interesantes 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
proba 0.0269724979147211 0.039026263551767 0.00443749106785087 0.0628829816088284 0.0235340728818033
yo 0.0262656945140134 0.0366941302751921 0.00656837975179138 0.0329214576160066 0.0214121851106808
en 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
prestados 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 un conjunto de DataSet y una 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, es posible que el módulo devuelva un tema vacío, que suele deberse a la inicialización pseudoaleatorios del algoritmo. Si esto ocurre, puede intentar cambiar los parámetros relacionados, como el tamaño máximo del diccionario N-grama o el número de bits que se va a usar para el hash de características.

Modelado de LDA y temas

La asignación Dirichlet latente (LDA) se suele usar para el modelado de temas basado en contenido, 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, supongamos que ha proporcionado un corpus de las opiniones de los clientes que incluye muchos de los productos. El texto de las revisiones enviadas por muchos clientes a lo largo del tiempo contendría muchos términos, algunos de los cuales se usan en varios temas.

Un tema que se identifica mediante el proceso LDA puede representar revisiones para un producto individual A, o podría representar un grupo de revisiones del producto. 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 cualquier producto, pero pueden hacer referencia a otros productos o ser términos generales que se aplican a todo ("fantástico", "muy bien"). 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 o comprender cómo se relacionan las palabras, además de las probabilidades de coincidencias. Solo puede agrupar palabras que se usaron en el dominio de destino.

Una vez calculados los índices de términos, se comparan filas de texto individuales mediante una medida de similitud basada en distancia, para determinar si dos partes de texto son iguales. 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á seleccionada 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 del documento en N temas
N-gramas Entero [1;10] Obligatorio 2 Orden de N-gramas generado 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á seleccionada 0,01 Parámetro ro
Parámetro alfa Float [0.00001;1.0] Se aplica cuando la casilla Mostrar todas las opciones está seleccionada 0,01 Parámetro alfa
Número de documentos estimado Entero [1;int.MaxValue] Se aplica cuando la casilla Mostrar todas las opciones está seleccionada 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á seleccionada 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á seleccionada 0 Valor inicial del número de iteraciones usado en la programación de actualización de la tasa 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á seleccionada 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á seleccionada 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á seleccionada True Crea un diccionario de n-gramas antes del cálculo de LDA. Útil para la inspección e interpretación del modelo
Número de bits que se usarán para el hash de características Entero [1;31] Se aplica cuando el Diccionario de compilación de la opción de ngrams es false. 12 Número de bits que se van a usar 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á seleccionada True Crea un diccionario de n-gramas antes de LDA. Útil para la inspección e interpretación del modelo
Número máximo de n-gramas en el diccionario Entero [1;int.MaxValue] Se aplica cuando el Diccionario de compilación Options de ngrams es true y la casilla Mostrar todas las opciones está seleccionada 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 generada por LDA
Transformación de LDA Interfaz ITransform Transformación que aplica LDA al conjunto de

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 los errores específicos de los módulos de Studio (clásico), consulte Machine Learning de los códigos de error.

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

Vea también

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