标签: dirichlet

使用gensim了解LDA实现

我试图了解Python中的gensim包如何实现Latent Dirichlet Allocation.我正在做以下事情:

定义数据集

documents = ["Apple is releasing a new product", 
             "Amazon sells many things",
             "Microsoft announces Nokia acquisition"]             
Run Code Online (Sandbox Code Playgroud)

删除停用词后,我创建了字典和语料库:

texts = [[word for word in document.lower().split() if word not in stoplist] for document in documents]
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]
Run Code Online (Sandbox Code Playgroud)

然后我定义了LDA模型.

lda = gensim.models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, num_topics=5, update_every=1, chunksize=10000, passes=1)
Run Code Online (Sandbox Code Playgroud)

然后我打印主题:

>>> lda.print_topics(5)
['0.181*things + 0.181*amazon + 0.181*many + 0.181*sells + 0.031*nokia + 0.031*microsoft + 0.031*apple + 0.031*announces + 0.031*acquisition + 0.031*product', '0.077*nokia + …
Run Code Online (Sandbox Code Playgroud)

python dirichlet gensim topic-modeling

26
推荐指数
3
解决办法
3万
查看次数

R监督潜在Dirichlet分配包

我正在使用这个LDA包用于R.特别是我正在尝试进行监督潜在的dirichlet分配(slda).在链接包中,有一个slda.em功能.但令我困惑的是它要求alpha,eta和variance参数.据我了解,我认为这些参数在模型中是未知的.所以我的问题是,包的作者是否意味着这些是参数的初步猜测?如果是,似乎没有办法从运行结果中访问它们slda.em.

除了编码算法中的额外EM步骤之外,是否有建议的方法来猜测这些参数的合理值?

r dirichlet topic-modeling latent-semantic-analysis

13
推荐指数
1
解决办法
2469
查看次数

如何获得N个总和等于M的随机整数

我想制作一个由 N 个随机整数组成的列表,其总和等于 M 个数字。

我在Python中使用了numpy和dirichlet函数,但是这会生成双随机数数组,我想生成整数随机数。

import numpy as np 
np.random.dirichlet(np.ones(n))*m
Run Code Online (Sandbox Code Playgroud)

解决方案可以使用其他发行版,意义上是解决问题。

javascript python numpy dirichlet

6
推荐指数
1
解决办法
1634
查看次数

是否有 R 包用于从计数数据中学习狄利克雷先验

我正在寻找一个R可用于根据计数数据训练狄利克雷先验的包。我正在询问一位正在使用 的同事R,而我自己并没有使用它,所以我不太清楚如何寻找软件包。搜索起来有点困难,因为“R”是一个非特定的搜索字符串。CRAN上好像没有什么,但是还有其他地方可以看吗?

math statistics r dirichlet bayesian

5
推荐指数
1
解决办法
1581
查看次数

文件相似性

我使用tf/idf来计算两个文档之间的相似性.它有一些限制,但表现不佳.

我寻找LDA(潜在的dirichlet分配)来计算文档相似度.我对此并不了解.关于我的问题,我找不到太多东西.

能否请您提供与我的问题相关的任何教程?或者你能给出一些建议,我怎样才能用LDA实现这个任务?

谢谢

PS:还有任何可用于LDA执行此类任务的源代码吗?

java math dirichlet

5
推荐指数
1
解决办法
1717
查看次数

Python包:狄利克雷分布的MLE

我想知道是否有人知道一个 python 包,它实现 MLE 来估计狄利克雷分布的参数。

python statistics dirichlet mle

5
推荐指数
1
解决办法
2024
查看次数

pymc3:具有多维集中因子的狄利克雷

我正在努力实现一个模型,其中狄利克雷变量的集中因子依赖于另一个变量。

情况如下:

系统由于组件故障而失败(共有三个组件,每次测试/观察时只有一个组件失败)。

组件发生故障的概率取决于温度。

这是该情况的(已注释的)简短实现:

import numpy as np
import pymc3 as pm
import theano.tensor as tt


# Temperature data : 3 cold temperatures and 3 warm temperatures
T_data = np.array([10, 12, 14, 80, 90, 95])

# Data of failures of 3 components : [0,0,1] means component 3 failed
F_data = np.array([[0, 0, 1], \
       [0, 0, 1], \
       [0, 0, 1], \
       [1, 0, 0], \
       [1, 0, 0], \
       [1, 0, 0]])

n_component = 3

# When temperature …
Run Code Online (Sandbox Code Playgroud)

python dirichlet bayesian multinomial pymc3

5
推荐指数
1
解决办法
2033
查看次数

关于 alpha 的 LDA Gensim/Mallet 文档

我对 LDA (Gensim) 文档中对 alpha 的评论有点困惑。

在“常规”Gensim LdaModel 中,它说如果设置 alpha = 'asymmetric',Gensim 使用“1.0 / topicno 的固定归一化非对称先验”(topicno 是 num_topics,对吧?!)。但是为什么叫不对称呢?这不是对称的情况吗?(参见https://radimrehurek.com/gensim/models/ldamodel.html

Mallet 使用的 alpha 的默认数字是多少?50?如果是这样,为什么?据我所知,应该选择一些值 <1 以获得良好的结果。(参见https://radimrehurek.com/gensim/models/wrappers/ldamallet.html

dirichlet mallet lda gensim

5
推荐指数
0
解决办法
399
查看次数

Dirichlet-多项式WinBUGS代码

我正在尝试使用BUGS编写Dirichlet多项式模型。基本上我有18个地区,每个地区3个类别。例如,区域1:0.50属于低,0.30属于中,而0.20属于高。该列表当然以不同的比例进入第18区,我得到的唯一代码是

`model  {
 for (i in 1:N) {
 x[1:3] ~ dmulti(p[],n[i])
 p[1:3] ~ ddirch(alpha[])
 }
 for (k in 1:3) {
 alpha[k] <- 1
 }
 }
 DATA list(n=c(38483, 2259, 1900),x=c(29256.42719, 1857.431404, 1548.007808, 29256.42719, 1857.431404, 1548.007808, 29256.42719, 1857.431404, 1548.007808), N=3)`
Run Code Online (Sandbox Code Playgroud)

例如,我首先将其缩短为3个区域。单击“ gen inits”后,其显示“ Dirichlet36”。请帮我编码。

dirichlet bayesian winbugs multinomial

4
推荐指数
1
解决办法
3678
查看次数

如何拟合Dirichlet分布的有限混合

我有一个组合样本,我想拟合Dirichlet分布的有限混合.更准确地说,请考虑以下示例:

library(gtools)
set.seed(1)
PROB = c(0.25, 0.15, 0.60)
ALPHA = list(
  c(1,1,1),
  c(2,1,1),
  c(1,1,20)
)
size = 500

N = sapply(1:3, function(i, z) sum(z == i),
           sample(1:3, size, prob = PROB, replace = TRUE))

X = do.call('rbind', 
            sapply(1:3, function(i, N) 
              rdirichlet(N[i], ALPHA[[i]]), N))[sample(1:size),]
Run Code Online (Sandbox Code Playgroud)

X包含由三部分单形中定义的Dirichlet分布混合生成的样本.该混合物的第一个Dirichlet分量具有参数(1,1,1),第二个分量具有参数(2,1,1)和第三个(1,1,20).混合概率为0.25,0.15,0.60.我想从样本中检索这些参数.

你怎么会找到这个参数?

packages r distribution dirichlet mixture-model

2
推荐指数
1
解决办法
635
查看次数