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).
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.
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.
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 .
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.
lda
pacote é ótimo, não pretendo sugerir que elelda
tenha 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).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!lda
pacote que contém mais opções. No entanto, é difícil entender como formatar seus dados para que eles se ajustem ao modelo. Otopicmodels
pacote funciona bem com otm
pacote, enquanto olda
pacote solicita uma lista que não está clara como criar.+1 para modelos de tópico . A resposta de @ Momo é muito abrangente. Eu apenas acrescentaria que
topicmodels
recebe entradas como matrizes de termo de documento, que são facilmente criadas com otm
pacote ou usando python. Olda
pacote 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 nolda
formato 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
tm
e o apresentatopicmodels
(incluindo encontrar o número ideal de tópicos com antecedência e trabalhar com a saída) aqui . Pode ser útil para quem vemtopicmodels
pela primeira vez.fonte
read_dtm_Blei_et_al
função notm
pacote, que faz a mesma coisa.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 .
fonte
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.
fonte