,使用R text2vec包和LDAvis在shinyApp LDA主题模型(LDA topic m

2019-09-30 01:18发布

下面是在R text2vec包LDA主题建模的代码:

library(text2vec)

tokens = docs$text %>%  # docs$text: a colection of text documents
  word_tokenizer

it = itoken(tokens, ids = docs$id, progressbar = FALSE)
v = create_vocabulary(it) %>%   
    prune_vocabulary(term_count_min = 10, doc_proportion_max = 0.2)
vectorizer = vocab_vectorizer(v)
dtm = create_dtm(it, vectorizer, type = "dgTMatrix")

lda_model = text2vec::LDA$new(n_topics = 10, doc_topic_prior = 0.1, topic_word_prior = 0.01)

doc_topic_distr = lda_model$fit_transform(x = dtm, n_iter = 1000, 
                          convergence_tol = 0.001, n_check_convergence = 25, 
                          progressbar = FALSE)

据我了解有两组变量,命名为公共和私人,请参见下面的图片:

我想知道我怎么能有机会获得“doc_len”的私有变量。 我试图lda_model $ doc_len和lda_model $私人$ doc_len,但他们返回 “NULL”。

我需要的原因是命令“lda_model $图()”中的R控制台地块LDAvis,但我需要绘制它在我自己的闪亮的应用页面。 要做到这一点,我想提取所有参数以下功能在以下链接讨论:“ https://github.com/cpsievert/LDAvis/issues/27 ”。

我很欣赏你的反应,并帮助无论是提取LDA模型或如何的私人参数与绘制LDAvis“lda_model $图()”在自己全新的应用程序页面。

谢谢,山姆

Answer 1:

私人领域是私人为了一个目的 - 它们是专门为墙根用户,而不是公共API(将来可以很容易地更改或删除)。 嵌入LDAvis到一个闪亮的应用程序的正确方法是在磁盘上存储LDAvis JSON,然后在闪亮的应用程序打开它。 喜欢的东西应该工作:

lda_model$plot(out.dir = "SOME_DIR", open.browser = FALSE)

而在闪亮:

output$myChart <- renderVis(readLines("SOME_DIR/lda.json"))

这样做是因为...传递给LDAvis::createJSONLDAvis::serVis (如文档说):

$plot(lambda.step = 0.1, reorder.topics = FALSE, ...)

使用绘制LDA模型https://cran.r-project.org/package=LDAvis包。 ...将被传递给LDAvis :: createJSON和LDAvis :: SERVIS功能



文章来源: LDA topic model using R text2vec package and LDAvis in shinyApp