- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我是 python 新手。我刚开始从事一个项目,在推文上使用 LDA 主题建模。我正在尝试以下代码:
此示例使用在线数据集。我有一个 csv 文件,其中包含我需要使用的推文。谁能告诉我如何使用我的本地文件?我应该如何制作自己的词汇和标题?
我找不到说明如何为 LDA 准备 Material 的教程。他们都假设你已经知道如何去做。
from __future__ import division, print_function
import numpy as np
import lda
import lda.datasets
# document-term matrix
X = lda.datasets.load_reuters()
print("type(X): {}".format(type(X)))
print("shape: {}\n".format(X.shape))
# the vocab
vocab = lda.datasets.load_reuters_vocab()
print("type(vocab): {}".format(type(vocab)))
print("len(vocab): {}\n".format(len(vocab)))
# titles for each story
titles = lda.datasets.load_reuters_titles()
print("type(titles): {}".format(type(titles)))
print("len(titles): {}\n".format(len(titles)))
doc_id = 0
word_id = 3117
print("doc id: {} word id: {}".format(doc_id, word_id))
print("-- count: {}".format(X[doc_id, word_id]))
print("-- word : {}".format(vocab[word_id]))
print("-- doc : {}".format(titles[doc_id]))
model = lda.LDA(n_topics=20, n_iter=500, random_state=1)
model.fit(X)
topic_word = model.topic_word_
print("type(topic_word): {}".format(type(topic_word)))
print("shape: {}".format(topic_word.shape))
for n in range(5):
sum_pr = sum(topic_word[n,:])
print("topic: {} sum: {}".format(n, sum_pr))
n = 5
for i, topic_dist in enumerate(topic_word):
topic_words = np.array(vocab)[np.argsort(topic_dist)][:-(n+1):-1]
print('*Topic {}\n- {}'.format(i, ' '.join(topic_words)))
doc_topic = model.doc_topic_
print("type(doc_topic): {}".format(type(doc_topic)))
print("shape: {}".format(doc_topic.shape))
最佳答案
我知道这有点晚了,但希望它能有所帮助。您首先必须了解 LDA 仅适用于 DTM(文档术语矩阵)。因此,我建议您执行以下步骤:
在这里,可以提供这段代码来帮助你入门-
token_dict = {}
for i in range(len(txt1)):
token_dict[i] = txt1[i]
len(token_dict)
print("\n Build DTM")
%time tf = CountVectorizer(stop_words='english')
print("\n Fit DTM")
%time tfs1 = tf.fit_transform(token_dict.values())
# set the number of topics to look for
num = 8
model = lda.LDA(n_topics=num, n_iter=500, random_state=1)
# we fit the DTM not the TFIDF to LDA
print("\n Fit LDA to data set")
%time model.fit_transform(tfs1)
print("\n Obtain the words with high probabilities")
%time topic_word = model.topic_word_ # model.components_ also works
print("\n Obtain the feature names")
%time vocab = tf.get_feature_names()
关于python - LDA主题建模输入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32055071/
我刚刚开始阅读有关潜在狄利克雷分配 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 的主题分布。然而,正如您从下面的最后一行中看到的那样,我将其分配给了最可能的主题。 我的问题是这样的。我必须第二次运行
我是一名优秀的程序员,十分优秀!