Compartilhar via


Alocação de Dirichlet latente

Importante

O suporte para o Machine Learning Studio (clássico) terminará em 31 de agosto de 2024. É recomendável fazer a transição para o Azure Machine Learning até essa data.

A partir de 1º de dezembro de 2021, você não poderá criar recursos do Machine Learning Studio (clássico). Até 31 de agosto de 2024, você pode continuar usando os recursos existentes do Machine Learning Studio (clássico).

A documentação do ML Studio (clássico) está sendo desativada e pode não ser atualizada no futuro.

Usar a biblioteca Vowpal Wabbit para executar o LDA do VW

Categoria: Análise de Texto

Observação

Aplica-se a: Machine Learning Studio (clássico) somente

Módulos semelhantes do tipo "arrastar e soltar" estão disponíveis no designer do Azure Machine Learning.

Visão geral do módulo

Este artigo descreve como usar o módulo Alocação de Dirichlet Latente no Machine Learning Studio (clássico) para agrupar texto não classificado em várias categorias. A LDA (Alocação de Dirichlet Latente) geralmente é usada no NLP (processamento de idioma natural) para encontrar textos semelhantes. Outro termo comum é modelagem de tópico.

Este módulo pega uma coluna de texto e gera estas saídas:

  • O texto de origem, junto com uma pontuação para cada categoria

  • Uma matriz de recursos que contém termos e coeficientes extraídos para cada categoria

  • Uma transformação, que você pode salvar e reaplicar ao novo texto usado como entrada

Como este módulo usa a biblioteca Vowpal Wabbit, ele é muito rápido. Para obter mais informações sobre Vowpal Wabbit, consulte o repositório GitHub que inclui tutoriais e uma explicação do algoritmo.

Mais sobre a LDA (Alocação de Dirichlet Latente)

Em termos gerais, o LDA não é um método para classificação em si, mas usa uma abordagem generativa. Isso significa que você não precisa fornecer rótulos de classe conhecidos e inferir os padrões. Em vez disso, o algoritmo gera um modelo probabilístico usado para identificar grupos de tópicos. Você pode usar o modelo probabilístico para classificar os casos de treinamento existentes ou novos casos que você fornecer ao modelo como entrada.

Um modelo generativo pode ser preferível porque evita fazer suposições fortes sobre a relação entre o texto e as categorias e usa apenas a distribuição de palavras para modelar tópicos matematicamente.

Para obter mais informações, consulte a seção Observações técnicas.

Como configurar a Alocação de Dirichlet Latente

Este módulo requer um conjunto de dados que contém uma coluna de texto, seja bruto ou pré-processado.

  1. Adicione o módulo Alocação de Dirichlet Latente ao seu experimento.

  2. Como entrada para o módulo, forneça um conjunto de dados que contenha uma ou mais colunas de texto.

  3. Para Colunas de destino, escolha uma ou mais colunas que contenham texto a ser analisado.

    Você pode escolher várias colunas, mas elas devem ser do tipo de dados de cadeia de caracteres.

    Em geral, como o LDA cria uma matriz de recursos grande com base no texto, você normalmente analisará uma única coluna de texto.

  4. Para Número de tópicos a modelar, digite um inteiro entre 1 e 1000 que indica quantas categorias ou tópicos você deseja derivar do texto de entrada.

    Por padrão, são criados 5 tópicos.

  5. Para N-grams, especifique o comprimento máximo de N-grams gerados durante o hashing.

    O padrão é 2, o que significa que bigramas e unigramas são gerados.

  6. Selecione a opção Normalizar para converter valores de saída em probabilidades. Portanto, em vez de representar os valores transformados como inteiros, os valores na saída e no conjuntos de dados de recursos seriam transformados da seguinte forma:

    • Os valores no conjunto de dados serão representados como uma probabilidade onde P(topic|document).

    • Os valores na matriz de tópicos de recursos serão representados como uma probabilidade onde P(word|topic).

  7. Selecione a opção Mostrar todas as opções e, em seguida, de defini-la como TRUE se você quiser exibir e, em seguida, definir parâmetros avançados adicionais.

    Esses parâmetros são específicos para a implementação vowpal Wabbit do LDA. Há alguns bons tutoriais sobre o LDA no Vowpal Wabbit online, bem como o Wiki oficial do Vowpal Wabbit.

    Consulte este exemplo para ver exemplos na versão 8 e uso do VW no Azure ML.

    • Parâmetro Rho. Forneça uma probabilidade anterior para a dispersão de distribuições de tópico. Corresponde ao parâmetro do lda_rho VW. Você usaria o valor 1 se esperasse que a distribuição de palavras fosse simples; Ou seja, todas as palavras são assumidas como viáveis. Se você achar que a maioria das palavras aparece esparsamente, poderá defini-la com um valor muito menor.

    • Parâmetro Alfa. Especifique uma probabilidade anterior para a dispersão de pesos de tópico por documento. Corresponde ao parâmetro do lda_alpha VW.

    • Número estimado de documentos. Digite um número que representa sua melhor estimativa do número de documentos (linhas) que serão processados. Isso permite que o módulo aloce uma tabela de hash de tamanho suficiente. Corresponde ao parâmetro lda_D em Vowpal Wabbit.

    • O tamanho do lote. Digite um número que indica quantas linhas incluir em cada lote de texto enviado para Vowpal Wabbit. Corresponde ao parâmetro batch_sz em Vowpal Wabbit.

    • Valor inicial da iteração usada no agendamento da atualização de aprendizagem. Especifique o valor inicial para a taxa de aprendizado. Corresponde ao parâmetro initial_t em Vowpal Wabbit.

    • Energia aplicada à iteração durante as atualizações. Indique o nível de energia aplicado à contagem de iteração durante atualizações online. Corresponde ao parâmetro power_t em Vowpal Wabbit.

    • Número de passagens sobre os dados. Especifique o número de vezes que o algoritmo fará o ciclo sobre os dados. Corresponde ao parâmetro epoch_size em Vowpal Wabbit.

  8. Selecione a opção Criar dicionário de ngrams ou Criar dicionário de ngrams antes do LDA, se você quiser criar a lista n-gram em uma passagem inicial, antes de classificar o texto.

    Se você criar o dicionário inicial antecipadamente, poderá usar posteriormente o dicionário ao revisar o modelo. Ser capaz de mapear os resultados para texto em vez de índices numéricos é geralmente mais fácil de interpretar. No entanto, salvar o dicionário levará mais tempo e usará armazenamento adicional.

  9. Para Tamanho máximo do dicionário ngram, digite o número total de linhas que podem ser criadas no dicionário n-gram.

    Essa opção é útil para controlar o tamanho do dicionário. No entanto, se o número de ngrams na entrada exceder esse tamanho, poderão ocorrer colisões.

  10. Execute o experimento. O módulo LDA usa o teorema de Bayes para determinar quais tópicos podem ser associados a palavras individuais. As palavras não estão associadas exclusivamente a nenhum tópico ou grupo; em vez disso, cada n-gram tem uma probabilidade aprendida de ser associado a qualquer uma das classes descobertas.

Resultados

O módulo tem duas saídas:

  • Conjunto de dados transformado: contém o texto de entrada e um número especificado de categorias descobertas, juntamente com as pontuações de cada exemplo de texto para cada categoria.

  • Matriz de tópicos de recurso: a coluna mais à esquerda contém o recurso de texto extraído e há uma coluna para cada categoria que contém a pontuação desse recurso nessa categoria.

Para obter detalhes, consulte Exemplo de resultados LDA.

Transformação da LDA

Este módulo também saída da transformação que aplica o LDA ao conjuntos de dados, como uma interface ITransform.

Você pode salvar essa transformação e rea usá-la para outros conjuntos de dados. Isso pode ser útil se você treinou em um corpus grande e deseja reutilizar os coeficientes ou categorias.

Refinando um modelo de LDA ou resultados

Normalmente, você não pode criar um único modelo LDA que atenderá a todas as necessidades e até mesmo um modelo projetado para uma tarefa pode exigir muitas i iterações para melhorar a precisão. Recomendamos que você experimente todos estes métodos para melhorar seu modelo:

  • Alterar os parâmetros do modelo
  • Usar a visualização para entender os resultados
  • Obter os comentários dos especialistas no assunto para verificar se os tópicos gerados são úteis.

As medidas qualitativas também podem ser úteis para avaliar os resultados. Para avaliar os resultados da modelagem do tópico, considere:

  • Exatidão – são itens semelhantes realmente semelhantes?
  • Diversidade – o modelo discriminar várias entre itens semelhantes quando necessário para o problema de negócios?
  • Escalabilidade-funciona em uma grande variedade de categorias de texto ou apenas em um domínio de destino estreito?

A precisão dos modelos baseados em LDA geralmente pode ser melhorada usando o processamento de linguagem natural para limpar, resumir e simplificar ou categorizar o texto. por exemplo, as técnicas a seguir, todas com suporte no Machine Learning, podem melhorar a precisão da classificação:

  • Remoção de palavra irrelevante (stop word)

  • Normalização de caso

  • Lematização

  • Reconhecimento de entidade nomeada

Para obter mais informações, consulte pré-processar texto e reconhecimento de entidade nomeada.

No Studio (clássico), você também pode usar bibliotecas R ou Python para processamento de texto: Executar script r, Executar script do Python

Exemplos

Para obter exemplos de análise de texto, consulte esses experimentos na Galeria de ia do Azure:

Para obter detalhes e um exemplo com base no texto de revisão do cliente, consulte Understanding Lda Results.

Exemplo de resultados de LDA

para ilustrar como o módulo de alocação de Dirichlet latente funciona, o exemplo a seguir aplica LDA com as configurações padrão ao conjunto de registros de revisão de livros fornecido no Machine Learning Studio (clássico).

Conjunto de dados de origem

O conjunto de conteúdo contém uma coluna de classificação, bem como o texto de comentário completo fornecido pelos usuários.

Esta tabela mostra apenas alguns exemplos representativos.

text
Este livro tem seus bons pontos. Se for algo, ele o ajudará a colocar em palavras o que você deseja em um supervisor...
Eu admito que eu não terminei este livro. Um amigo é recomendado para mim, pois tenho problemas com o insônia...
Mal escrito, tentei ler este livro, mas encontrá-lo tão turgid e mal escrito que o coloco em frustração. ...
Desde o empréstimo de uma cópia de cachorro-eared de amigos que estavam passando por vários anos atrás, eu não consegui fazer minhas mãos neste livro que se tornou um favorito culto de curta duração
O gráfico deste livro foi interessante e poderia ter sido um bom livro. Infelizmente, não era. O principal problema para mim foi que...

Durante o processamento, o módulo de alocação Dirichlet latence limpa e analisa o texto, com base nos parâmetros especificados. Por exemplo, ele pode indexar automaticamente o texto e remover a pontuação e, ao mesmo tempo, localizar os recursos de texto para cada tópico.

Conjunto de LDA transformado

A tabela a seguir contém o conjunto de registros transformados , com base no exemplo de análise de livros. A saída contém o texto de entrada e um número especificado de categorias descobertas, junto com as pontuações para cada categoria.

Nome do filme Tópico 1 Tópico 2 Tópico 3 Tópico 4 Tópico 5
Este livro tem seus bons pontos 0, 1652892 0, 1652892 0, 1652892 0, 1652892 0,9933884
amigo recomendado para mim 0, 198019 0, 1980198 0,9920791 0, 1980198 0, 1980198
tentativa de ler este livro 0, 2469135 0, 2469135 0,9901233 0, 2469135 0, 2469135
emprestado de Friend 0,9901232 0, 2469135 0, 2469135 0, 2469135 0, 2469135
o gráfico deste livro foi interessante 0, 1652892 0, 1652892 0,9933884 0, 1652892 0, 1652892

Neste exemplo, usamos o valor padrão de 5 para o número de tópicos a serem modelados. Portanto, o módulo LDA cria cinco categorias, que podemos pressupor que corresponderão aproximadamente ao sistema original de classificação de cinco escalas.

O módulo também atribui uma pontuação a cada entrada para cada uma das cinco categorias que representam os tópicos. Uma pontuação indica a probabilidade de que a linha deve ser atribuída a uma determinada categoria.

Matriz de tópicos de recursos

A segunda saída do módulo é a matriz de tópicos de recursos. Este é um conjunto de tabelas que contém o texto destacados,, no recursode coluna, junto com uma pontuação para cada uma das categorias, no tópico restante das colunas 1, tópico 2,... Tópico N. A pontuação representa o coeficiente.

Recurso Tópico 1 Tópico 2 Tópico 3 Tópico 4 Tópico 5
interessado 0.0240282071983144 0.0354678954779375 0.363051866576914 0.0276637824315893 0.660663576149515
é 0.0171478729532397 0.0823969031108669 0.00452966877950789 0.0408714510319233 0.025077322689733
de 0.0148224220349217 0.0505086981492109 0.00434423322461094 0.0273389126293824 0.0171484355106826
plot 0.0227415889348212 0.0408709456489325 0.182791041345191 0.086937090812819 1 0.0169680136708971
leitura 0.0227415889348212 0.0408709456489325 0.182791041345191 0.0869370908128191 0.0169680136708971
Tentei 0.0269724979147211 0.039026263551767 0.00443749106785087 0.0628829816088284 0.0235340728818033
eu 0.0262656945140134 0.0366941302751921 0.00656837975179138 0.0329214576160066 0.0214121851106808
como 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
pontos 0.0227415889348212 0.0396233855719081 0.00404663601474112 0.0381156510019025 0.0337788009496797
Bom 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
Emprestado 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
tem 0.0171416780245647 0.0559361180418586 0.0100633904544953 0.087093930106723 0.0182573833869842
agendar 0.0143157047920681 0.069145948535052 0.184036340170983 0.0548757337823903 0.0156837976985903
recomendável 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372
this 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372

Observações técnicas

Esta seção contém detalhes de implementação, dicas e respostas para perguntas frequentes.

Detalhes de implementação

Por padrão, as distribuições de saídas para o conjuntos de dados transformado e a matriz de tópicos de recursos são normalizadas como probabilidades.

  • O conjunto de dados transformado é normalizado como a probabilidade condicional de tópicos de um documento. Nesse caso, a soma de cada linha é igual a 1.

  • A matriz de tópico de recursos é normalizada como a probabilidade condicional de palavras em um tópico. Nesse caso, a soma de cada coluna é igual a 1.

Dica

Ocasionalmente, o módulo pode retornar um tópico vazio, que geralmente é causado pela inicialização pseudo-aleatória do algoritmo. Se isso acontecer, você poderá tentar alterar parâmetros relacionados, como o tamanho máximo do dicionário N-gram ou o número de bits a ser usado para hash de recursos.

LDA e modelagem de tópico

A LDA (Alocação de Dirichlet Latente) geralmente é usada para modelagem de tópico baseada em conteúdo, o que basicamente significa aprender categorias de texto não classificado. Na modelagem de tópicos baseada em conteúdo, um tópico é uma distribuição de palavras.

Por exemplo, suponha que você tenha fornecido um corpus de revisões de clientes que inclui muitos, muitos produtos. O texto de revisões que foram enviadas por muitos clientes ao longo do tempo conteria muitos termos, alguns dos quais são usados em vários tópicos.

Um tópico identificado pelo processo LDA pode representar revisões para um Produto A individual ou pode representar um grupo de revisões de produtos. Para a LDA, o tópico em si é apenas uma distribuição de probabilidade ao longo do tempo para um conjunto de palavras.

Os termos raramente são exclusivos para qualquer produto, mas podem se referir a outros produtos ou ser termos gerais que se aplicam a tudo ("ótimo", "mal-estar"). Outros termos podem ser palavras de ruído. No entanto, é importante entender que o método LDA não pretende capturar todas as palavras no universo ou entender como as palavras estão relacionadas, além das probabilidades de co-ocorrência. Ele só pode agrupar palavras que foram usadas no domínio de destino.

Após a computação do termo índices, linhas individuais de texto são comparadas usando uma medida de similaridade baseada em distância, para determinar se duas partes de texto são semelhantes umas às outras. Por exemplo, você pode achar que o produto tem vários nomes que estão fortemente correlacionados. Ou talvez você ache que termos fortemente negativos geralmente são associados a um produto específico. Você pode usar a medida de similaridade para identificar termos relacionados e criar recomendações.

Entradas esperadas

Nome Tipo Descrição
Dataset Tabela de Dados Conjunto de dados de entrada

Parâmetros do módulo

Nome Tipo Intervalo Opcional Padrão Descrição
Número de bits de hash Integer [1;31] Aplica-se quando a caixa de seleção Mostrar todas as opções não está selecionada 12 Número de bits a ser usado para hash de recursos
Coluna(s) de destino Seleção de coluna Obrigatório StringFeature Nome ou índice da coluna de destino
Número de tópicos a serem modelados Integer [1;1000] Obrigatório 5 Modelar a distribuição de documentos em relação a N tópicos
N-grams Integer [1;10] Obrigatório 2 Ordem de N-grams gerados durante o hash
Normalizar Boolean Obrigatório true Normalize a saída para probabilidades. O conjunto de dados transformado será P(topic|document) e a matriz do tópico do recurso será P(word|topic).
Mostrar todas as opções Boolean Verdadeiro ou Falso Obrigatório Falso Apresenta parâmetros adicionais específicos ao Vowpal Wabbit online LDA
Parâmetro Rho Float [0,00001;1,0] Aplica-se quando a caixa de seleção Mostrar todas as opções está marcada 0,01 Parâmetro Rho
Parâmetro alfa Float [0,00001;1,0] Aplica-se quando a caixa de seleção Mostrar todas as opções está marcada 0,01 Parâmetro alfa
Número estimado de documentos Integer [1;int.MaxValue] Aplica-se quando a caixa de seleção Mostrar todas as opções está marcada 1000 Número estimado de documentos (corresponde ao lda_D parâmetro)
O tamanho do lote Integer [1;1024] Aplica-se quando a caixa de seleção Mostrar todas as opções está marcada 32 O tamanho do lote
Valor inicial da iteração usada no agendamento da atualização da taxa de aprendizagem Integer [0;int.MaxValue] Aplica-se quando a caixa de seleção Mostrar todas as opções está marcada 0 Valor inicial da contagem de iterações usado no agendamento de atualização da taxa de aprendizagem (corresponde ao parâmetro initial_t)
Energia aplicada à iteração durante as atualizações Float [0,0;1,0] Aplica-se quando a caixa de seleção Mostrar todas as opções está marcada 0,5 Energia aplicada à contagem de iteração durante atualizações online (corresponde a power_t parâmetro)
Número de iterações de treinamento Integer [1;1024] Aplica-se quando a caixa de seleção Mostrar todas as opções está marcada 25 Número de iterações de treinamento
Criar dicionário de n-grams Boolean Verdadeiro ou Falso Aplica-se quando a caixa de seleção Mostrar todas as opçõesnão está marcada Verdadeiro Cria um dicionário de n-grams antes de computar a LDA. Útil para inspeção e interpretação de modelo
Número de bits a serem usados para o hash de recurso Integer [1;31] Aplica-se quando o dicionário de compilação de opção de ngrams é false 12 Número de bits a serem usados durante o hash de recurso
Tamanho máximo do dicionário de n-grams Integer [1;int.MaxValue] Aplica-se quando a opção Criar dicionário de n-grams é Verdadeiro 20000 Tamanho máximo do dicionário de n-grams. Se o número de tokens na entrada exceder esse tamanho, poderão ocorrer colisões
Criar dicionário de n-grams antes da LDA Boolean Verdadeiro ou Falso Aplica-se quando a caixa de seleção Mostrar todas as opções está marcada Verdadeiro Cria um dicionário de n-grams antes da LDA. Útil para inspeção e interpretação de modelo
Número máximo de n-grams no dicionário Integer [1;int.MaxValue] Aplica-se quando o dicionário de compilação de opção de ngrams é true e a caixa de seleção Mostrar todas as opções está marcada 20000 Tamanho máximo do dicionário. Se o número de tokens na entrada exceder esse tamanho, poderão ocorrer colisões

Saídas

Nome Tipo Descrição
Conjunto de dados transformados Tabela de Dados Conjunto de dados de saída
Matriz de tópicos de recursos Tabela de Dados Matriz de tópicos de recursos produzida por LDA
Transformação da LDA Interface ITransform Transformação que aplica LDA ao conjunto de os

Exceções

Exceção Descrição
Erro 0002 Ocorrerá uma exceção se uma ou mais das colunas especificadas do conjunto de dados não puder ser encontrada.
Erro 0003 Ocorrerá uma exceção se uma ou mais das entradas for nula ou estiver vazia.
Erro 0004 Ocorrerá uma exceção se o parâmetro for inferior ou igual ao valor específico.
Erro 0017 Ocorrerá uma exceção se uma ou mais das colunas especificadas tiver um tipo sem suporte por módulo atual.

para obter uma lista de erros específicos para módulos do Studio (clássicos), consulte Machine Learning códigos de erro.

para obter uma lista de exceções de api, consulte Machine Learning códigos de erro da api REST.

Confira também

Análise de Texto
Hash de Recursos
Reconhecimento de entidade nomeada
Pontuar o modelo Vowpal Wabbit 7-4
Treinar o modelo Vowpal Wabbit 7-4
Treinar o modelo Vowpal Wabbit 8