Alocação Latente de Dirichlet
Importante
O suporte para o Estúdio de ML (clássico) terminará a 31 de agosto de 2024. Recomendamos a transição para o Azure Machine Learning até essa data.
A partir de 1 de dezembro de 2021, não poderá criar novos recursos do Estúdio de ML (clássico). Até 31 de agosto de 2024, pode continuar a utilizar os recursos existentes do Estúdio de ML (clássico).
- Consulte informações sobre projetos de machine learning em movimento de ML Studio (clássico) para Azure Machine Learning.
- Saiba mais sobre Azure Machine Learning.
A documentação do Estúdio de ML (clássico) está a ser descontinuada e poderá não ser atualizada no futuro.
Utilize a biblioteca Vowpal Wabbit para executar o VW LDA
Categoria: Análise de Texto
Nota
Aplica-se a: Machine Learning Studio (clássico) apenas
Módulos semelhantes de arrasto e queda estão disponíveis em Azure Machine Learning designer.
Visão geral do módulo
Este artigo descreve como usar o módulo de atribuição de Dirichlet Latent no 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 características, 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.
A teoria é discutida neste artigo, disponível como um download PDF: Latent Dirichlet Alocação: Blei, Ng e Jordan
A implementação neste módulo baseia-se na biblioteca Vowpal Wabbit (versão 8) para LDA.
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.
Adicione o módulo de atribuição de Dirichlet Latent à sua experiência.
Como entrada para o módulo, forneça um conjunto de dados contendo uma ou mais colunas de texto.
Para 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.
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 obter do texto de entrada.
Por padrão, são criados 5 tópicos.
Para N-gramas, especifique o comprimento máximo de N-gramas gerados durante o hashing.
O padrão é 2, o que significa que tanto os bigrams como os unigramas são gerados.
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 de 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)
.
Selecione a opção, mostre todas as opções e, 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 da implementação do Vowpal Wabbit da LDA. Existem alguns bons tutoriais sobre lDA em Vowpal Wabbit on-line, bem como o Vowpal Wabbit Wiki oficial.
Consulte esta amostra por exemplo na versão 8 e a utilização da 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 hash 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.
Selecione a opção, Construa o dicionário de ngramas ou construa dicionário de ngramas antes da LDA, se quiser 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.
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-gram.
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.
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 recurso: 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 detalhes, 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 em 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 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 script R, executar script python
Exemplos
Por exemplo, análise de texto, consulte estas experiências na Galeria Azure AI:
- Executar o Python Script: Utiliza o processamento de linguagem natural em Python para limpar e transformar texto.
Para obter detalhes e um exemplo baseado no texto de revisão do cliente, consulte os Resultados da LDA compreensivas.
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 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 turva 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 favorito de 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 de Livros. 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ópicos de recurso. Este é um conjunto de dados tabular que contém o texto aporado, 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 |
points | 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 à medida que 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 dada 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 classificar 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 têm sido submetidas por muitos clientes ao longo do tempo conteria muitos termos, alguns dos quais são usados 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 do termo índices, 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 | Description |
---|---|---|
Conjunto de dados | Tabela de Dados | Conjunto de dados de entrada |
Parâmetros do módulo
Nome | Tipo | Intervalo | Opcional | Predefinição | Description |
---|---|---|---|---|---|
Número de bits hash | Número inteiro | [1;31] | Aplica-se quando a caixa de verificação de todas as opçõesnão é selecionada | 12 | Número de bits para usar para hashing de recurso |
Colunas-alvo(s) | Seleção de Colunas | Necessário | CordaFeature | Nome ou índice da coluna-alvo | |
Número de tópicos para modelar | Número inteiro | [1;1000] | Necessário | 5 | Modele 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 hash |
Normalizar | Booleano | Necessário | true | Normalizar a saída para probabilidades. O conjunto de dados transformado será P(tópico|document) e a matriz de tópico de recurso será P (palavra|topic). | |
Mostrar todas as opções | Booleano | Verdadeiro ou Falso | Necessário | Falso | Apresenta parâmetros adicionais específicos da Vowpal Wabbit LDA on-line |
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 on-line (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çõesnã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 para usar 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 para usar durante o hashing de recurso |
Tamanho máximo do dicionário 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 ngrams. 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 | Description |
---|---|---|
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 | Description |
---|---|
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 Machine Learning Códigos de Erro.
Para obter uma lista de exceções da API, consulte Machine Learning CÓDIGOs de Erro da API REST.
Ver também
Análise de Texto
Hashing de Funcionalidade
Reconhecimento de Entidades Nomeadas
Pontuação Vowpal Wabbit 7-4 Modelo
Modelo Wabbit 7-4 do comboio
Modelo Vowpal Wabbit 8 do comboio