gpt4 book ai didi

python-3.x - LDA算法的python代码不是很清楚

转载 作者:行者123 更新时间:2023-12-04 10:38:32 27 4
gpt4 key购买 nike

我正在尝试使用带有 Gensim 的 python 来实现 Latent Dirichlet Allocation (LDA),我也指的是来自网站的 LDA 代码,但我对 LDA python 代码仍然不是很清楚。知道LDA的人可以根据下面给出的代码以清晰的方式向我解释。我还在这里上传了 LDA 公式,这是一张来自维基百科的图片。在这种情况下,LDA 用于分析文本文档的集合。

lda_model = gensim.models.ldamodel.LdaModel(corpus=corpus,
id2word=id2word,
num_topics=4,
random_state=100,
update_every=1,
chunksize=10,
passes=10,
alpha='symmetric',
iterations=100,
per_word_topics=True)

LDA formula from wikipedia

最佳答案

LDA 是一个主题建模器。它的作用是获取一个如下所示的语料库:

# the words become numbers and are then counted for frequency
# consider a random row 4310 - it has 27 words word indexed 2 shows up 4 times
# preview the bag of words

bow_corpus = [dictionary.doc2bow(doc) for doc in processed_docs]
bow_corpus[4310]

[(3, 1), (13, 1), (37, 1), (38, 1), (39, 1), (50, 1), (52, 2)]

# same thing in more words

bow_doc_4310 = bow_corpus[4310]
for i in range(len(bow_doc_4310)):
print("Word {} (\"{}\") appears {} time.".format(bow_doc_4310[i][0],
dictionary[bow_doc_4310[i][0]],
bow_doc_4310[i][1]))

单词 3(“协助”)出现 1 次。单词 13(“付款”)出现 1 次。单词 37(“帐户”)出现 1 次。单词 38(“卡片”)出现 1 次。单词 39(“credit”)出现 1 次。单词 50(“联系人”)出现 1 次。单词 52(“rate”)出现了 2 次。

Id2word 将字典中的单词映射到一个索引,因此 3 = 'assist' 这样它就可以稍后打印主题。它使用数字 id,因为 python 处理数字更好更快。因此,句子到单词,单词到数字,计算频率,然后将每个单词与语料库中的所有其他单词进行比较,并根据它们一起出现的频率对它们进行评分。它采用最强的相关性并将其转化为主题。

num_topics 是您希望它生成的主题数。 update_every 是一种可以将 lda 设置为动态运行的方法,这意味着它将在指定的时间间隔内重新运行。 Chuncksize 只需要数据集的一部分,如果你想要一个测试集和一个验证集,它很有用。 Passes 是你的算法寻求分配的次数 - 我会小心维基百科语料库中的更高数字在两次通过后收敛到一个主题。 Alpha 是一个超参数,通常 .1 迭代是它通过数据集的次数。 per_word_topics 告诉你的 LDA 选择它认为合适的单词数量,比如一个主题可能有 70 个单词,另一个 200 个单词。它默认打印 10 个,但你可以更改它。我希望这会有所帮助:)

关于python-3.x - LDA算法的python代码不是很清楚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55476594/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com