Alocação Latente de Dirichlet

Utilize a biblioteca Vowpal Wabbit para executar o VW LDA

Categoria: Análise de Texto

Nota

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

Este conteúdo diz respeito apenas ao Studio (clássico). Módulos semelhantes de arrasto e queda foram adicionados ao designer de Aprendizagem automática Azure. Saiba mais neste artigo comparando as duas versões.

Visão geral do módulo

Este artigo descreve como usar o módulo de atribuição de Dirichlet Latent no Azure Machine Learning Studio (clássico), para agrupar textos não classificados em várias categorias. A atribuição de dirichlet latente (LDA) é frequentemente usada no processamento de linguagem natural (NLP) para encontrar textos semelhantes. Outro termo comum é modelação de tópicos.

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

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

  • Uma matriz de recurso, contendo termos e coeficientes extraídos para cada categoria

  • Uma transformação, que pode guardar e reaplicar para novo texto usado como entrada

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

Mais sobre a atribuição de Dirichlet Latent (LDA)

De um modo geral, a LDA não é um método de classificação em si, mas utiliza uma abordagem geradora. O que isto significa é que você não precisa fornecer rótulos de classe conhecidos e, em seguida, inferir os padrões. Em vez disso, o algoritmo gera um modelo probabilístico que é usado para identificar grupos de tópicos. Pode utilizar o modelo probabilístico para classificar os casos de treino existentes ou os novos casos que fornece ao modelo como entrada.

Um modelo gerador 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 tópicos matematicamente modelo.

Para mais informações, consulte a secção de notas técnicas.

Como configurar a atribuição de Dirichlet Latent

Este módulo requer um conjunto de dados que contenha uma coluna de texto, crua ou pré-processada.

  1. Adicione o módulo de atribuição de Dirichlet Latent à sua experiência.

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

  3. Para as colunas Target, escolha uma ou mais colunas que contenham texto para analisar.

    Pode escolher várias colunas, mas devem ser do tipo de dados de cadeia.

    Em geral, como a LDA cria uma grande matriz de recurso a partir do texto, normalmente analisa uma única coluna de texto.

  4. Para o Número de tópicos a modelar, digite um número inteiro entre 1 e 1000 que indique quantas categorias ou tópicos pretende derivar do texto de entrada.

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

  5. No que diz n-gramas, especifique o comprimento máximo de N-gramas geradas durante o haxixe.

    O padrão é 2, o que significa que tanto os bigrams como os 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 número inteiros, os valores no conjunto de dados de saída e recurso seriam transformados da seguinte forma:

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

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

  7. Selecione a opção, mostre todas as opçõese, em seguida, desacione-a para TRUE se quiser ver e, em seguida, definir parâmetros avançados adicionais.

    Estes parâmetros são específicos para a implementação do Vowpal Wabbit da LDA. Existem alguns bons tutoriais sobre lDA em Vowpal Wabbit on-line, bem como o Vowpal Wabbit Wikioficial.

    Consulte esta amostra por exemplo na versão 8 e a utilização de VW em Azure ML.

    • Parâmetro rho. Fornecer uma probabilidade prévia para a esparsidade das distribuições de tópicos. Corresponde ao parâmetro da lda_rho VW. Usaria o valor 1 se esperasse que a distribuição das palavras fosse plana; ou seja, todas as palavras são assumidas como equipróbíveis. Se acha que a maioria das palavras aparece escassamente, pode defini-la para um valor muito mais baixo.

    • Parâmetro alfa. Especifique uma probabilidade prévia para a esparsidade dos pesos tópicos por documento. Corresponde ao parâmetro da lda_alpha VW.

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

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

    • Valor inicial da iteração utilizada na programação de atualização de aprendizagem. Especificar o valor inicial para a taxa de aprendizagem. Corresponde ao initial_t parâmetro em Vowpal Wabbit.

    • Potência aplicada à iteração durante as atualizações. Indicar o nível de potência aplicado à contagem de iterações durante as atualizações online. Corresponde ao power_t parâmetro em Vowpal Wabbit.

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

  8. Selecione a opção, Construa o dicionário de ngramas ou construa dicionário de ngramas antes da LDA, se pretender criar a lista de n-gramas num passe inicial, antes de classificar o texto.

    Se criar previamente o dicionário inicial, poderá utilizar o dicionário ao rever o modelo. Ser capaz de mapear resultados para texto em vez de índices numéricos é geralmente mais fácil de interpretar. No entanto, salvar o dicionário demorará mais tempo e utilizará armazenamento adicional.

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

    Esta opção é útil para controlar o tamanho do dicionário. No entanto, se o número de ngramas na entrada exceder este tamanho, podem ocorrer colisões.

  10. Execute a experimentação. O módulo LDA usa o teorema de Bayes para determinar que tópicos podem estar associados a palavras individuais. As palavras não estão exclusivamente associadas a quaisquer tópicos ou grupos; 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ópico de características: A coluna mais à esquerda contém a função de texto extraído, e há uma coluna para cada categoria contendo a pontuação para essa característica nessa categoria.

Para mais informações, consulte exemplo dos resultados da LDA.

Transformação LDA

Este módulo também produz a transformação que aplica LDA ao conjunto de dados, como interface ITransform.

Pode guardar esta transformação e reutilizá-la para outros conjuntos de dados. Isto pode ser útil se você tiver treinado em um corpus grande e quiser reutilizar os coeficientes ou categorias.

Refinação de um modelo ou resultados LDA

Normalmente não é possível criar um único modelo LDA que satisfaça todas as necessidades, e mesmo um modelo projetado para uma tarefa pode requerer muitas iterações para melhorar a precisão. Recomendamos que experimente todos estes métodos para melhorar o seu modelo:

  • Alterar os parâmetros do modelo
  • Usando a visualização para entender os resultados
  • Obter o feedback dos especialistas em assuntos 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 de modelação de tópicos, considere:

  • Precisão - Os itens similares são realmente semelhantes?
  • Diversidade - O modelo pode discriminar itens semelhantes quando necessário para o problema do negócio?
  • Escalabilidade - Funciona numa vasta gama de categorias de texto ou apenas num domínio de alvo estreito?

A precisão dos modelos baseados na LDA pode muitas vezes ser melhorada utilizando o processamento natural da linguagem para limpar, resumir e simplificar, ou categorizar texto. Por exemplo, as seguintes técnicas, todas suportadas no Azure Machine Learning, podem melhorar a precisão da classificação:

  • Parar a remoção de palavras

  • Normalização de casos

  • Lematização ou desarmamento

  • Reconhecimento de entidades nomeadas

Para obter mais informações, consulte O Texto pré-processamento e o reconhecimento de entidades nomeadas.

No Studio (clássico), também pode usar bibliotecas R ou Python para processamento de texto: Executar R Script, Executar Script Python

Exemplos

Por exemplo, análise de texto, consulte estas experiências na Galeria Azure AI:

Para obter detalhes e um exemplo baseado no texto de revisão do cliente, consulte os resultados da LDA compreensiva.

Exemplo dos resultados da LDA

Para ilustrar como funciona o módulo de atribuição de Dirichlet Latent, o exemplo a seguir aplica LDA com as definições padrão do conjunto de dados de Revisão de Livros fornecido no Azure Machine Learning Studio (clássico).

Conjunto de dados de origem

O conjunto de dados contém uma coluna de classificação, bem como o texto de comentário completo fornecido pelos utilizadores.

Esta tabela apresenta apenas alguns exemplos representativos.

texto
Este livro tem os seus pontos positivos. Ajuda-te a pôr em palavras o que queres de um supervisor...
Admito que ainda não terminei este livro. Um amigo recomendou-mo porque tenho tido problemas com insónias...
Mal escrito, tentei ler este livro, mas achei-o tão túrgido e mal escrito que o coloquei em frustração. ...
Desde que pedi uma cópia de orelhas de cão de amigos que o passavam há alguns anos, não consegui pôr as mãos neste livro que se tornou um dos favoritos do culto de curta duração.
O enredo deste livro era 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 atribuição de Dirichlet Latent limpa e analisa o texto, com base nos parâmetros especificados. Por exemplo, pode automaticamente tokenizar o texto e remover pontuação, e ao mesmo tempo encontrar as funcionalidades de texto para cada tópico.

Conjunto de dados transformado lDA

A tabela seguinte contém o conjunto de dados transformado, baseado na amostra de Revisão do Livro. A saída contém o texto de entrada e um número especificado de categorias descobertas, juntamente 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 os seus pontos bons 0.001652892 0.001652892 0.001652892 0.001652892 0.9933884
amigo recomendou-me 0.00198019 0.001980198 0.9920791 0.001980198 0.001980198
tentou ler este livro 0.002469135 0.002469135 0.9901233 0.002469135 0.002469135
pediu emprestado de amigo 0.9901232 0.002469135 0.002469135 0.002469135 0.002469135
enredo deste livro foi interessante 0.001652892 0.001652892 0.9933884 0.001652892 0.001652892

Neste exemplo, usamos o valor padrão de 5 para Número de tópicos para modelar. Portanto, o módulo LDA cria cinco categorias, que podemos presumir 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 tópicos. Uma pontuação indica a probabilidade de a linha ser atribuída a uma determinada categoria.

Matriz de tópico de recurso

A segunda saída do módulo é a matriz de tópico de recurso. Trata-se de um conjunto de dados tabular que contém o texto apor, na coluna Feature, juntamente com uma pontuação para cada uma das categorias, nas restantes colunas Tópico 1, Tópico 2, ... Tópico N. A pontuação representa o coeficiente.

Funcionalidade Tópico 1 Tópico 2 Tópico 3 Tópico 4 Tópico 5
interessante 0.0240282071983144 0.0354678954779375 0.363051866576914 0.0276637824315893 0.660663576149515
foi 0.0171478729532397 0.0823969031108669 0.00452966877950789 0.0408714510319233 0.025077322689733
De 0.0148224220349217 0.0505086981492109 0.00434423322461094 0.0273389126293824 0.0171484355106826
enredo 0.0227415889348212 0.0408709456489325 0.182791041345191 0.086937090812819 1 0.0169680136708971
leitura 0.0227415889348212 0.0408709456489325 0.182791041345191 0.0869370908128191 0.0169680136708971
tentou 0.0269724979147211 0.039026263551767 0.00443749106785087 0.0628829816088284 0.0235340728818033
me 0.0262656945140134 0.0366941302751921 0.00656837975179138 0.0329214576160066 0.0214121851106808
para 0.0141026103224462 0.043359976919215 0.00388640531859447 0.0305925953440055 0.0228993750526364
que 0.0264490547105951 0.0356674440311847 0.00541759897864314 0.0314539386250293 0.0140606468587681
amigo 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
sua 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
livro 0.0143157047920681 0.069145948535052 0.184036340170983 0.0548757337823903 0.0156837976985903
recomendado 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372
este tráfego 0.0161486848419689 0.0399143326399534 0.00550113530229642 0.028637149142764 0.0147675139039372

Notas técnicas

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

Detalhes de implementação

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

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

  • A matriz de tópico de recurso é normalizada como a probabilidade condicional de palavras dadas a um tópico. Neste caso, a soma de cada coluna é igual a 1.

Dica

Ocasionalmente, o módulo pode devolver um tópico vazio, que é mais frequentemente causado pela in inicialização pseudoaleatória do algoritmo. Se isso acontecer, pode tentar alterar parâmetros relacionados, como o tamanho máximo do dicionário N-grama ou o número de bits a utilizar para o hashing da funcionalidade.

LDA e modelação de tópicos

A atribuição de Dirichlet Latent (LDA) é frequentemente utilizada para modelação de tópicos baseados em conteúdo, o que basicamente significa categorias de aprendizagem a partir de textos não classificados. Na modelação de tópicos baseada em conteúdo, um tópico é uma distribuição sobre palavras.

Por exemplo, assuma que forneceu um corpus de avaliações de clientes que inclui muitos, muitos produtos. O texto das avaliações que foram submetidas por muitos clientes ao longo do tempo conteria muitos termos, alguns dos quais são utilizados em vários tópicos.

Um tópico que seja identificado pelo processo LDA pode representar revisões para um produto A individual, ou pode representar um grupo de avaliaçõ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 de qualquer produto, mas podem referir-se a outros produtos, ou ser termos gerais que se aplicam a tudo ("grande", "horrível"). 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 de probabilidades de coocorrência. Só pode agrupar palavras que foram usadas no domínio alvo.

Após a cálculo dos índices do termo, as linhas individuais de texto são comparadas usando uma medida de semelhança baseada à distância, para determinar se duas peças de texto são iguais uma à outra. Por exemplo, pode descobrir que o produto tem vários nomes fortemente correlacionados. Ou, pode descobrir que termos fortemente negativos estão geralmente associados a um determinado produto. Pode utilizar a medida de semelhança tanto para identificar termos relacionados como para criar recomendações.

Entradas esperadas

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

Parâmetros do módulo

Nome Tipo Intervalo Opcional Predefinição Descrição
Número de bits de haxixe Número inteiro [1;31] Aplica-se quando a caixa de verificação de todas as opções não é selecionada 12 Número de bits a utilizar para hashing de recurso
Colunas-alvo(s) Seleção de Colunas Necessário CadeiaFeature Nome ou índice da coluna-alvo
Número de tópicos para modelar Número inteiro [1;1000] Necessário 5 Modelar a distribuição do documento contra os tópicos N
N-gramas Número inteiro [1;10] Necessário 2 Ordem de N-gramas gerada durante o haxixe
Normalizar Booleano Necessário true Normalizar a saída para as probabilidades. O conjunto de dados transformado será P (tópico|documento) e a matriz de tópicos de recurso será P (palavra|tópico).
Mostrar todas as opções Booleano Verdadeiro ou Falso Necessário Falso Apresenta parâmetros adicionais específicos da Vowpal Wabbit online LDA
Parâmetro rho Float [0.00001;1.0] Aplica-se quando o Show todas as opções checkbox são selecionadas 0.01 Parâmetro rho
Parâmetro alfa Float [0.00001;1.0] Aplica-se quando o Show todas as opções checkbox são selecionadas 0.01 Parâmetro alfa
Número estimado de documentos Número inteiro [1;int. MaxValue] Aplica-se quando o Show todas as opções checkbox são selecionadas 1000 Número estimado de documentos (corresponde a lda_D parâmetro)
Tamanho do lote Número inteiro [1;1024] Aplica-se quando o Show todas as opções checkbox são selecionadas 32 Tamanho do lote
Valor inicial da iteração utilizado no calendário de atualização da taxa de aprendizagem Número inteiro [0;int. MaxValue] Aplica-se quando o Show todas as opções checkbox são selecionadas 0 Valor inicial da contagem de iteração utilizada no calendário de atualização da taxa de aprendizagem (corresponde ao parâmetro initial_t)
Potência aplicada à iteração durante as atualizações Float [0.0;1.0] Aplica-se quando o Show todas as opções checkbox são selecionadas 0,5 Potência aplicada à contagem de iteração durante atualizações online (Corresponde ao power_t parâmetro)
Número de iterações de formação Número inteiro [1;1024] Aplica-se quando o Show todas as opções checkbox são selecionadas 25 Número de iterações de formação
Construir dicionário de ngramas Booleano Verdadeiro ou Falso Aplica-se quando a caixa de verificação de todas as opções não é selecionada Verdadeiro Constrói um dicionário de ngramas antes de computar a LDA. Útil para inspeção e interpretação de modelos
Número de bits a utilizar para hashing de recurso Número inteiro [1;31] Aplica-se quando a opção Construir dicionário de ngramas é falso 12 Número de bits a utilizar durante o hashing da funcionalidade
Tamanho máximo do dicionário de ngram Número inteiro [1;int. MaxValue] Aplica-se quando a opção Construir dicionário de ngramas é verdadeiro 20 000 Tamanho máximo do dicionário ngramas. Se o número de fichas na entrada exceder este tamanho, podem ocorrer colisões
Construir dicionário de ngramas antes da LDA Booleano Verdadeiro ou Falso Aplica-se quando o Show todas as opções checkbox são selecionadas Verdadeiro Constrói um dicionário de ngramas antes da LDA. Útil para inspeção e interpretação de modelos
Número máximo de ngramas no dicionário Número inteiro [1;int. MaxValue] Aplica-se quando a opção Construir dicionário de ngramas é verdadeiro e o Show todas as opções checkbox são selecionadas 20 000 Tamanho máximo do dicionário. Se o número de fichas na entrada exceder este tamanho, podem ocorrer colisões

Saídas

Nome Tipo Descrição
Conjunto de dados transformado Tabela de Dados Conjunto de dados de saída
Matriz de tópico de recurso Tabela de Dados Matriz de tópico de recurso produzida pela LDA
Transformação LDA Interface ITransform Transformação que aplica LDA ao conjunto de dados

Exceções

Exceção Descrição
Erro 0002 A exceção ocorre se uma ou mais colunas especificadas de conjunto de dados não puderem ser encontradas.
Erro 0003 A exceção ocorre se uma ou mais entradas forem nulas ou vazias.
Erro 0004 A exceção ocorre se o parâmetro for inferior ou igual ao valor específico.
Erro 0017 A exceção ocorre se uma ou mais colunas especificadas tiverem o tipo não suportado pelo módulo atual.

Para obter uma lista de erros específicos dos módulos Studio (clássicos), consulte códigos de erro de aprendizagem automática.

Para obter uma lista de exceções da API, consulte códigos de erro da API de aprendizagem automática.

Ver também

Análise de Texto
Hashing de recurso
Reconhecimento de Entidades Nomeadas
Pontuação Vowpal Wabbit 7-4 Modelo
Modelo Wabbit 7-4 do comboio Vowpal
Modelo Vowpal Wabbit 8 do comboio