Pacotes R para executar modelagem de tópicos / LDA: apenas `topicmodels` e` lda` [fechado]


29

Parece-me que apenas dois pacotes R são capazes de executar a Alocação de Dirichlet Latente :

Um é lda, de autoria de Jonathan Chang; e o outro é de topicmodelsautoria de Bettina Grün e Kurt Hornik.

Quais são as diferenças entre esses dois pacotes, em termos de desempenho, detalhes de implementação e extensibilidade?

Respostas:


26

Implementação: O pacote topicmodels fornece uma interface para o código GSL C e C ++ para modelos de tópicos de Blei et al. e Phan et al. Para o anterior, usa EM Variacional, para o último Gibbs Sampling. Consulte http://www.jstatsoft.org/v40/i13/paper . O pacote funciona bem com os utilitários do pacote tm.

O pacote lda usa um Gibbs Sampler recolhido para vários modelos semelhantes aos da biblioteca GSL. No entanto, foi implementado pelos próprios autores do pacote, não por Blei et al. Portanto, essa implementação difere em geral da técnica de estimativa proposta nos artigos originais que introduzem essas variantes de modelo, onde o algoritmo VEM é geralmente aplicado. Por outro lado, o pacote oferece mais funcionalidade que o outro pacote. O pacote também fornece funcionalidade de mineração de texto.

Extensibilidade: em relação à extensibilidade, o código de modelo de tópico, por sua própria natureza, pode ser estendido para fazer interface com outro código de modelo de tópico escrito em C e C ++. O pacote lda parece depender mais da implementação específica fornecida pelos autores, mas o amostrador Gibbs pode permitir especificar seu próprio modelo de tópico. Para problemas de extensibilidade, nota bene, o primeiro é licenciado sob a GPL-2 e o segundo LGPL, portanto, pode depender do que você precisa estender (a GPL-2 é mais rigorosa em relação ao aspecto do código aberto, ou seja, você não pode usá-lo em software proprietário).

Desempenho: não posso ajudá-lo aqui, usei apenas modelos de tópicos até agora.

Conclusão:
Pessoalmente, eu uso topicmodels, como está bem documentado (consulte o artigo JSS acima) e confio nos autores (Grün também implementou o flexmix e Hornik é o membro central do R).


7
Primeiro, tenho certeza de que o topicmodels é um excelente pacote e concordo que esteja muito bem documentado. Com relação a "confiar" nos autores do pacote LDA, Jonathan Chang era meu aluno de doutorado e eu confio totalmente no código dele. Ele é um excelente engenheiro de software e estudioso. Seu pacote é fácil, dimensiona bem para coleções razoavelmente grandes e é bom explorar os resultados em R. (eu gosto e estou acostumado com a representação de matriz de documentos esparsos.) É importante notar que o LDA implementa outros modelos, incluindo modelos relacionais. modelos de tópicos, LDA supervisionado (com GLM) e modelo de bloco estocástico de associação mista.

Obrigado por comentar. Tenho certeza de que o ldapacote é ótimo, não pretendo sugerir que ele ldatenha código de alguma forma inferior. Afirmei minha impressão pessoal (a documentação parecia um pouco desleixada). Como isso foi há> 2 anos, editei a resposta um pouco (os erros de digitação na página CRAN ainda estão lá, acho que seria bom que eles fossem corrigidos, mas esse e-mail parece ter se perdido).
Momo

Eu acho que você tem muita experiência com os dois pacotes e sabe mais sobre o tópico geral. Que tal fornecer uma resposta listando alguns dos prós e contras dos dois pacotes? Eu não usei lda, então não pude dar uma avaliação empírica disso. Desde que isso certamente ajude o OP e todos os demais, bem como corrija quaisquer possíveis injustiças (que não foram intencionais). Obrigado!
Momo

1
Eu também tentei os dois e achei o ldapacote que contém mais opções. No entanto, é difícil entender como formatar seus dados para que eles se ajustem ao modelo. O topicmodelspacote funciona bem com o tmpacote, enquanto o ldapacote solicita uma lista que não está clara como criar.
Omri374

12

+1 para modelos de tópico . A resposta de @ Momo é muito abrangente. Eu apenas acrescentaria que topicmodelsrecebe entradas como matrizes de termo de documento, que são facilmente criadas com o tmpacote ou usando python. O ldapacote usa uma forma mais esotérica de entrada (baseada no LDA-C de Blei) e eu não tive sorte usando as funções internas para converter dtm no ldaformato do pacote (a documentação do lda é muito ruim, como Momo observa).

Eu tenho algum código que começa com o texto bruto, o pré-processa tme o apresenta topicmodels(incluindo encontrar o número ideal de tópicos com antecedência e trabalhar com a saída) aqui . Pode ser útil para quem vem topicmodelspela primeira vez.


3
Para aqueles que ainda não estão usando o tm e que desejam jogar com o lda , o JFreq também coloca textos simples no formato preferido do LDA-C.
conjugateprior

É bom saber sobre o JFreq, eu nunca vi isso antes. Obrigado pela dica!
Ben

1
Acabei de ver a read_dtm_Blei_et_alfunção no tmpacote, que faz a mesma coisa.
23712 Ben

3

O pacote R Structural Topic Model (STM) de Molly Roberts, Brandon Stewart e Dustin Tingley também é uma ótima opção. Construído sobre o pacote tm, é uma estrutura geral para modelagem de tópicos com informações covariáveis ​​em nível de documento.

http://structuraltopicmodel.com/

O pacote STM inclui uma série de métodos (pesquisa em grade) e medidas (coerência semântica, resíduos e exclusividade) para determinar o número de tópicos. Definir o número de tópicos como 0 também permitirá que o modelo determine um número ideal de tópicos.

O pacote stmBrowser é um ótimo complemento de visualização de dados para visualizar a influência de variáveis ​​externas em tópicos. Veja este exemplo relacionado aos debates presidenciais de 2016: http://alexperrier.github.io/stm-visualization/index.html .


0

Eu usei todas as três bibliotecas, entre as 3 viz., Topicmodels, lda, stm; nem todo mundo trabalha com n gramas. A biblioteca topicmodels é boa com sua estimativa e também funciona com n gramas. Mas se alguém estiver trabalhando com uni gramas, o profissional poderá preferir stm, pois fornece resultados estruturados.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.