问题:如何计算和编码每个主题中单词的频率? 我的目标是从每个主题创建“Word Cloud”。
P.S.>我对wordcloud没有任何问题。
从代码中
burnin <- 4000 #We do not collect this.
iter <- 4000
thin <- 500
seed <-list(2017,5,63,100001,765)
nstart <- 5
best <- TRUE
#Number of topics:
k <- 4
LDA_results <-LDA(DTM,k, method="Gibbs", control=list(nstart=nstart,
seed = seed, best=best,
burnin = burnin, iter = iter, thin=thin))
谢谢 (我尽量使问题尽可能简洁,所以如果你需要更多细节,我可以添加更多。)
答案 0 :(得分:3)
如果您想为每个主题创建一个wordcloud,您想要的是每个主题的首要术语,即从每个主题生成的最可能的单词。这个概率称为beta
;它是每个主题的每个词的概率。 β概率越高,该词从该主题生成的概率就越高。
您可以使用tidytext中的beta
从LDA主题模型中获取整齐数据框中的tidy
概率。让我们看一个示例数据集,并使用两个主题拟合模型。
library(tidyverse)
library(tidytext)
library(topicmodels)
data("AssociatedPress")
ap_lda <- LDA(AssociatedPress, k = 2, control = list(seed = 1234))
你现在适合这个模特!现在,我们可以了解概率。
ap_topics <- tidy(ap_lda, matrix = "beta")
ap_topics
#> # A tibble: 20,946 x 3
#> topic term beta
#> <int> <chr> <dbl>
#> 1 1 aaron 1.686917e-12
#> 2 2 aaron 3.895941e-05
#> 3 1 abandon 2.654910e-05
#> 4 2 abandon 3.990786e-05
#> 5 1 abandoned 1.390663e-04
#> 6 2 abandoned 5.876946e-05
#> 7 1 abandoning 2.454843e-33
#> 8 2 abandoning 2.337565e-05
#> 9 1 abbott 2.130484e-06
#> 10 2 abbott 2.968045e-05
#> # ... with 20,936 more rows
他们都在那里混在一起。让我们使用dplyr来获取每个主题的最可能的术语。
ap_top_terms <- ap_topics %>%
group_by(topic) %>%
top_n(200, beta) %>%
ungroup() %>%
arrange(topic, -beta)
您现在可以使用它来制作wordcloud(进行一些重塑)。 beta
概率是你想要对应的单词大小的概率。
library(wordcloud)
library(reshape2)
ap_top_terms %>%
mutate(topic = paste("topic", topic)) %>%
acast(term ~ topic, value.var = "beta", fill = 0) %>%
comparison.cloud(colors = c("#F8766D", "#00BFC4"),
max.words = 100)
答案 1 :(得分:1)
根据每个主题的单词(public class FirebaseInstanceIDService extends FirebaseInstanceIdService {
private static final String TAG = "FIIDService";
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String refreshedToken = FirebaseInstanceId.getInstance().getToken();
sendRegistrationToServer(refreshedToken);
}
private void sendRegistrationToServer(String token) {
//TODO
}
}
)获取getCompositeDisposable()
.add(productManager.getProductList(authToken))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Consumer<List<Product>>() {
@Override
public void accept(@NonNull List<Product> products) throws Exception {
onProductsLoaded(products);
}
}, new Consumer<Throwable>() {
@Override
public void accept(@NonNull Throwable throwable) throws Exception {
if (!isViewAttached())
return;
getMvpView().hideAlertDialog();
getMvpView().showErrorAlertDialog();
}
}));
的子集,并获取子集文档术语矩阵的列总和(DTM
)。 E.g:
dtm[,topterms]