获取新文档的主题概率分布
Get topic probability distribution for new document
我有一个名为 model
的工作主题模型,具有以下设置:
model = LdaModel(corpus=corpus,
id2word=id2word,
num_topics=10,
random_state=100,
update_every=1,
chunksize=100,
passes=50,
alpha='auto',
per_word_topics=True)
这个模型是在 data_words
上训练的,一个包含列表的列表,每个列表中有一个文本字符串,例如:
data_words = [['This is the first text'],['This is another text'], ['Here is the very last text']]
在这种情况下,len(data_words)
是三,但根据我的实际数据,它是(大约)4000。
基于经过训练的主题模型,我想将 data_words
中的 4000 个文档中的每一个都表示为主题概率分布。对于每个文档,这将是一个 num_topics-dimensional 向量,其中每个单元格表示该文档中出现主题的概率。
根据 documentation,我采取了以下步骤:
from gensim.corpora.dictionary import Dictionary
common_dictionary = Dictionary(data_words)
common_corpus = [common_dictionary.doc2bow(text) for text in data_words]
为了获得分布,我 运行:
model[common_corpus[0]]
这里的输出是一个元组。其中第一个元素model[common_corpus[0]][0]
如下所示:
[(0, 0.26094702),
(1, 0.29876992),
(3, 0.3244001),
(7, 0.045543537),
(8, 0.03196496),
(9, 0.031232798)]
这是第一个文档的主题分布并且主题 2、4、5 和 6 的概率等于零是否正确?或者我应该用不同的方式解释吗?
最终,我想要一个 4000xnum_topics 矩阵,其中每个单元格代表文档中某个主题的概率。假设 model[common_corpus[0]][0]
是我所怀疑的,我可以编写一个函数来从 model[common_corpus[0]][i]
中为每个文档 i
获取该矩阵。有没有更快的方法来获得这个矩阵?
https://radimrehurek.com/gensim/models/ldamodel.html之后,概率低于参数minimum_probability的所有主题将被丢弃(默认值:0.01)。如果你设置minimum_probability=0,你将得到文档的整个主题概率分布(以元组的形式)。
关于你的第二个问题,我相信只有上面的方法可以让你获得主题文档分布。因此,您需要遍历数据集中的所有文档以获得文档主题矩阵。
我有一个名为 model
的工作主题模型,具有以下设置:
model = LdaModel(corpus=corpus,
id2word=id2word,
num_topics=10,
random_state=100,
update_every=1,
chunksize=100,
passes=50,
alpha='auto',
per_word_topics=True)
这个模型是在 data_words
上训练的,一个包含列表的列表,每个列表中有一个文本字符串,例如:
data_words = [['This is the first text'],['This is another text'], ['Here is the very last text']]
在这种情况下,len(data_words)
是三,但根据我的实际数据,它是(大约)4000。
基于经过训练的主题模型,我想将 data_words
中的 4000 个文档中的每一个都表示为主题概率分布。对于每个文档,这将是一个 num_topics-dimensional 向量,其中每个单元格表示该文档中出现主题的概率。
根据 documentation,我采取了以下步骤:
from gensim.corpora.dictionary import Dictionary
common_dictionary = Dictionary(data_words)
common_corpus = [common_dictionary.doc2bow(text) for text in data_words]
为了获得分布,我 运行:
model[common_corpus[0]]
这里的输出是一个元组。其中第一个元素model[common_corpus[0]][0]
如下所示:
[(0, 0.26094702),
(1, 0.29876992),
(3, 0.3244001),
(7, 0.045543537),
(8, 0.03196496),
(9, 0.031232798)]
这是第一个文档的主题分布并且主题 2、4、5 和 6 的概率等于零是否正确?或者我应该用不同的方式解释吗?
最终,我想要一个 4000xnum_topics 矩阵,其中每个单元格代表文档中某个主题的概率。假设 model[common_corpus[0]][0]
是我所怀疑的,我可以编写一个函数来从 model[common_corpus[0]][i]
中为每个文档 i
获取该矩阵。有没有更快的方法来获得这个矩阵?
https://radimrehurek.com/gensim/models/ldamodel.html之后,概率低于参数minimum_probability的所有主题将被丢弃(默认值:0.01)。如果你设置minimum_probability=0,你将得到文档的整个主题概率分布(以元组的形式)。
关于你的第二个问题,我相信只有上面的方法可以让你获得主题文档分布。因此,您需要遍历数据集中的所有文档以获得文档主题矩阵。