Estou tentando entender qual é a semelhança entre Alocação de Dirichlet Latente e word2vec para calcular a similaridade de palavras.
Pelo que entendi, o LDA mapeia palavras para um vetor de probabilidades de tópicos latentes , enquanto o word2vec as mapeia para um vetor de números reais (relacionado à decomposição de valores singulares de informações mútuas pontuais, consulte O. Levy, Y. Goldberg, "Neural Word Embedding como fatoração implícita da matriz " ; consulte também Como funciona o word2vec? ).
Estou interessado tanto em relações teóricas (pode uma ser considerada uma generalização ou variação da outra) quanto prática (quando usar uma, mas não a outra).
Palavras-chave:
machine-learning
self-study
natural-language
latent-variable
word2vec
Piotr Migdal
fonte
fonte
Respostas:
Uma resposta aos modelos de tópicos e aos métodos de co-ocorrência de palavras abrange a diferença (ignorar grama word2vec é compactação de informações mútuas pointwise (PMI) ).
Tão:
Alguma diferença é discutida nos slides word2vec, LDA e introdução de um novo algoritmo híbrido: lda2vec - Christopher Moody .
fonte
Os dois algoritmos diferem bastante em sua finalidade.
O LDA visa principalmente descrever documentos e coleções de documentos, atribuindo-lhes distribuições de tópicos, que por sua vez têm distribuições de palavras designadas, como você mencionou.
O word2vec procura incorporar palavras em um espaço vetorial de fatores latentes, uma idéia originada nas representações distribuídas de Bengio et al. Também pode ser usado para descrever documentos, mas não foi realmente projetado para a tarefa.
fonte
Além disso, você encontrará em seu interior algumas frases como:
"probabilidade não é a melhor escolha para representação de características"
e
"A LDA prefere descrever a relação estatística das ocorrências em vez de informações semânticas reais incorporadas em palavras, tópicos e documentos"
o que ajudará você a entender melhor os diferentes modelos.
fonte
Outras respostas aqui cobrem as diferenças técnicas entre esses dois algoritmos, no entanto, acho que a principal diferença é o seu objetivo: esses dois algoritmos foram projetados para fazer coisas diferentes:
word2vec
em última análise, gera um mapeamento entre palavras e um vetor de comprimento fixo. Se comparássemos com outra abordagem bem conhecida, faria mais sentido fazê-lo usando outra ferramenta projetada para a mesma intenção, como o Bag of Words (modelo BOW). Este faz o mesmo, mas faltam algumas características desejadas,word2vec
como usar a ordem das palavras e atribuir significado semântico às distâncias entre representações de palavras.LDA
por outro lado, cria um mapeamento de um documento de comprimento variado para um vetor. Este documento pode ser uma frase, parágrafo ou arquivo de texto completo, mas não é uma única palavra. Faria mais sentido compará-lo com odoc2vec
que faz o mesmo trabalho e é apresentado por Tomas Mikolov aqui (o autor usa o termoparagraph vectors
). Ou comLSI
esse assunto.Então, para responder diretamente às suas duas perguntas:
word2vec
para mapear uma palavra para um vetor de comprimento fixo. Da mesma forma, você pode usar esses vetores para alimentar os modelos ML, onde as entradas são palavras, por exemplo, ao desenvolver um autocompletor que se alimenta de palavras anteriores e tenta prever o próximo.fonte
Do ponto de vista prático ...
O LDA começa com uma entrada de palavras que considera quais palavras co-ocorrem nos documentos, mas não presta atenção ao contexto imediato das palavras. Isso significa que as palavras podem aparecer em qualquer lugar do documento e em qualquer ordem, o que retira um certo nível de informação. Em contrapartida, o word2vec trata do contexto em que uma palavra é usada - embora talvez não seja uma ordem exata.
Os "tópicos" da LDA são uma construção matemática e você não deve confundi-los com tópicos humanos reais. Você pode terminar com tópicos que não têm interpretação humana - eles são mais artefatos do processo do que tópicos reais - e pode terminar com tópicos em diferentes níveis de abstração, incluindo tópicos que cobrem basicamente o mesmo tópico humano. É como ler folhas de chá.
Eu achei o LDA útil para explorar dados, mas não tão útil para fornecer uma solução, mas sua milhagem pode variar.
O Word2vec não cria tópicos diretamente. Ele projeta palavras em um espaço de alta dimensão com base em usos semelhantes, para que possa ter suas próprias surpresas em termos de palavras que você considera distintas - ou até opostas - que podem estar próximas no espaço.
Você pode usar para determinar se as palavras são "semelhantes". Com o LDA: as palavras têm pesos semelhantes nos mesmos tópicos. Com o word2vec: eles estão próximos (de alguma forma) no espaço de incorporação.
Você pode usar para determinar se os documentos são semelhantes. Com o LDA, você procuraria uma mistura semelhante de tópicos e, com o word2vec, faria algo como adicionar os vetores das palavras do documento. ("Documento" pode ser uma frase, parágrafo, página ou um documento inteiro.) Doc2vec é uma versão modificada do word2vec que permite a comparação direta de documentos.
Embora a LDA jogue fora algumas informações contextuais com sua abordagem de saco de palavras, ela possui tópicos (ou "tópicos"), os quais o word2vec não possui. Portanto, é fácil usar o doc2vec para dizer "Mostre-me documentos semelhantes a este", enquanto que com o LDA é fácil dizer: "Mostre-me documentos onde o tópico A é proeminente". (Novamente, sabendo que o "tópico A" emerge de um processo matemático em seus documentos e você descobre a quais tópicos humanos ele mais corresponde.)
fonte