- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
编辑:我在这里发现了一个有趣的问题。 This link表明 gensim 在训练和推理步骤中都使用了随机性。所以这里建议的是设置一个固定的种子,以便每次都能得到相同的结果。但是,为什么我对每个主题的概率都相同?
我想做的是为每个推特用户找到她的主题,并根据主题的相似性计算推特用户之间的相似度。是否有可能为 gensim 中的每个用户计算相同的主题,或者我是否必须计算主题字典并对每个用户主题进行聚类?
一般来说,基于 gensim 中的主题模型提取来比较两个 Twitter 用户的最佳方法是什么?我的代码如下:
def preprocess(id): #Returns user word list (or list of user tweet)
user_list = user_corpus(id, 'user_'+str(id)+'.txt')
documents = []
for line in open('user_'+str(id)+'.txt'):
documents.append(line)
#remove stop words
lines = [line.rstrip() for line in open('stoplist.txt')]
stoplist= set(lines)
texts = [[word for word in document.lower().split() if word not in stoplist]
for document in documents]
# remove words that appear only once
all_tokens = sum(texts, [])
tokens_once = set(word for word in set(all_tokens) if all_tokens.count(word) < 3)
texts = [[word for word in text if word not in tokens_once]
for text in texts]
words = []
for text in texts:
for word in text:
words.append(word)
return words
words1 = preprocess(14937173)
words2 = preprocess(15386966)
#Load the trained model
lda = ldamodel.LdaModel.load('tmp/fashion1.lda')
dictionary = corpora.Dictionary.load('tmp/fashion1.dict') #Load the trained dict
corpus = [dictionary.doc2bow(words1)]
tfidf = models.TfidfModel(corpus)
corpus_tfidf = tfidf[corpus]
corpus_lda = lda[corpus_tfidf]
list1 = []
for item in corpus_lda:
list1.append(item)
print lda.show_topic(0)
corpus2 = [dictionary.doc2bow(words2)]
tfidf2 = models.TfidfModel(corpus2)
corpus_tfidf2 = tfidf2[corpus2]
corpus_lda2 = lda[corpus_tfidf2]
list2 = []
for it in corpus_lda2:
list2.append(it)
print corpus_lda.show_topic(0)
返回用户语料库的主题概率(当使用用户词列表作为语料库时):
[(0, 0.10000000000000002), (1, 0.10000000000000002), (2, 0.10000000000000002),
(3, 0.10000000000000002), (4, 0.10000000000000002), (5, 0.10000000000000002),
(6, 0.10000000000000002), (7, 0.10000000000000002), (8, 0.10000000000000002),
(9, 0.10000000000000002)]
在我使用用户推文列表的情况下,我会返回每条推文的计算主题。
问题 2:以下是否有意义:使用之前计算的 LDA 模型,使用多个 Twitter 用户训练 LDA 模型并为每个用户(使用每个用户语料库)计算主题?
在提供的示例中,list[0]
返回概率为 0.1 的主题分布。基本上,每一行文本对应一条不同的推文。如果我用 corpus = [dictionary.doc2bow(text) for text in texts]
计算语料库,它会分别给出每条推文的概率。另一方面,如果我像示例一样使用 corpus = [dictionary.doc2bow(words)]
,我将只将所有用户词作为语料库。在第二种情况下,gensim 为所有主题返回相同的概率。因此,对于这两个用户,我得到了相同的主题分布。
用户文本语料库应该是单词列表还是句子列表(推文列表)?
关于twitterRank approach中七和、翁建树的执行情况在第 264 页,它说:我们将各个推特用户发布的推文汇总到一个大文档中。因此,每个文档对应一个 twitterer。好吧,我很困惑,如果文档是所有用户的推文,那么语料库应该包含什么??
最佳答案
根据官方文档 Latent Dirichlet Allocation,LDA 是从词袋计数到低维主题空间的转换。
可以在TFIDF之上使用LSI,但不能使用LDA。如果你在 LDA 上使用 TFIDF,那么它会生成几乎相同的每个主题,你可以打印并查看。
关于python - LDA gensim实现,两个不同文档之间的距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24430238/
我刚刚开始阅读有关潜在狄利克雷分配 LDA 的内容,并希望将其应用到我的项目中。 请问 LDA 是否能够将一个主题分配给多个单词? 例如,文章A谈论“河岸”,而文章B谈论“银行在金融中的作用”。因此,
我刚刚开始阅读有关 Latent Dirichlet Allocation LDA 的内容,并想将其应用到我的项目中。 我可以知道 LDA 是否能够将一个主题分配给多个单词吗? 例如,A 条谈到“河岸
情况: 我有一个 numpy 术语文档矩阵 例如:[[0,1,0,0....],....[......0,0,0,0]]。 我已将上述矩阵插入到 gensim 的 ldamodel 方法中。并且使用
我正在尝试使用 gensim's lda模型。如果我用给定的语料库创建 lda 模型,然后我想用一个新的语料库更新它,其中包含在第一个语料库中看不到的单词,我该怎么做?当我尝试调用 lda_model
library(MASS) example(lda) plot(z) 如何访问 z 中的所有点?我想知道 LD1 和 LD2 上每个点的值,具体取决于它们的 Sp (c,s,v)。 最佳答案 您正在寻
我在 R 中制作了一个 LDA 主题模型,使用 textmineR 包,如下所示。 ## get textmineR dtm dtm2 2] dtm2 2] ###################
我想知道更多关于LDA模型中是否有设置超参数alpha和theta的规则。我运行图书馆提供的 LDA 模型 gensim : ldamodel = gensim.models.ldamodel.Lda
我认为在 LDA 模型中,这些是使用现有模型推断新文档的两种方法。这两种方法有什么区别? 最佳答案 我做了一些测试,我的 ldamodel 有 8 个主题,这里是我的结果:2 个预测主题的文档: li
在阅读有关使用 python 的 LinearDiscriminantAnalysis 的过程中,我有两种不同的方法来实现它,可在此处获得, http://scikit-learn.org/stabl
我有一个通过 Java 中的 Mallet 训练的 LDA 模型。 Mallet LDA 模型生成了三个文件,这使我能够从文件运行模型并推断新文本的主题分布。 现在我想实现一个 Python 工具,它
我正在将 MLlib LDA example 应用于从 enter link description here 下载的各种语料库我正在过滤掉停用词,并排除非常频繁的术语和非常罕见的术语。问题是我总是有
我正在尝试了解潜在狄利克雷分配(LDA)。我有机器学习和概率论的基础知识,并基于这篇博文 http://goo.gl/ccPvE我能够开发 LDA 背后的直觉。但是,我仍然没有完全了解其中的各种计算。
我正在寻找一些适用于大型数据集的主题建模工具。 我当前的训练数据集是 30 GB。我试过 MALLET topic modeling ,但我总是得到 OutOfMemoryError。 如果您有任何提
我正在使用“topicmodels”包在 R 中构建一些主题模型。在预处理并创建文档术语矩阵后,我正在应用以下 LDA Gibbs 模型。这可能是一个简单的答案,但我是 R 的新手,所以就这样吧。有没
我正在尝试为线性判别分析 (LDA) 创建双标图。我正在使用从这里获得的代码的修改版本 https://stats.stackexchange.com/questions/82497/can-the-
是否可以查找某个主题(由 LDA 确定)内的文本? 我有一个包含 5 个主题的列表,每个主题有 10 个单词,是使用 lda 找到的。 我分析了数据框列中的文本。我想选择/过滤某个特定主题中的行/文本
给定一个标准 LDA 模型,其中包含 1000 个主题和数百万个文档,并使用 Mallet/折叠吉布斯采样器进行训练: 在推断新文档时:为什么不直接跳过采样并简单地使用模型的术语主题计数来确定新文档的
我读过 LDA,并且了解当一个人输入一组文档时如何生成主题的数学原理。 引用文献称,LDA 是一种算法,只要给定一个文档集合(无需任何监督),就可以揭示该集合中的文档所表达的“主题”。因此,通过使用
我希望将交叉验证应用于 LDA 算法以确定主题的数量(K)。 我的疑问是关于评估者,因为我希望使用对数似然。创建交叉验证时,我在 .setEvaluator(????) 上设置了什么? // Defi
我希望使用 LDA 将每个文档分配给一个主题。现在我意识到你得到的是来自 LDA 的主题分布。然而,正如您从下面的最后一行中看到的那样,我将其分配给了最可能的主题。 我的问题是这样的。我必须第二次运行
我是一名优秀的程序员,十分优秀!