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).
- Confira informações sobre como mover projetos de machine learning do ML Studio (clássico) para o Azure Machine Learning.
- Saiba mais sobre o Azure Machine Learning.
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.
A teoria é discutida neste documento, disponível como um download em PDF: Alocação de Dirichlet latente: Blei, Ng e Dra
A implementação neste módulo baseia-se na biblioteca Vowpal Wabbit (versão 8) para LDA.
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.
Adicione o módulo Alocação de Dirichlet Latente ao seu experimento.
Como entrada para o módulo, forneça um conjunto de dados que contenha uma ou mais colunas de texto.
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.
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.
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.
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)
.
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.
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.
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.
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:
- Executar script Python: usa o processamento de idioma natural no Python para limpar e transformar texto.
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