如何在LDA模型中指定随机状态进行主题建模?

问题描述 投票:0回答:1

我看了gensim LDA模型文档中关于random_state的说明。

random_state ({np.random.RandomState, int}, optional) 

- 要么是一个随机状态对象,要么是一个产生随机状态的种子。对重现性很有用。

我一直在尝试把 random_state=42 或

random_seed=42
state=np.random.RandomState(random_seed)
state.randn(1)
random_state=state.randn(1) 

其中没有工作。谁能建议我应该怎么做

model=ldaModel(corpus=语料库, id2word=dictionary, num_topics=num_topics, random_state=None)

我在没有使用random_state的情况下使用该函数,它可以工作,但使用random_state时,我得到了错误信息,说LDA模型没有定义。

def compute_coherence_values(dictionary, corpus, texts, limit, random_state, start=2, step=3)。

coherence_values = []
model_list = []
for num_topics in range(start, limit, step):
    #model=LdaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics)
    model=ldaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics, 
                                                  random_state)
    model_list.append(model)
    coherencemodel = CoherenceModel(model=model, texts=texts, dictionary=dictionary, coherence='c_v')
    coherence_values.append(coherencemodel.get_coherence())

return model_list, coherence_values
python text model word
1个回答
0
投票

你代码中的错误在这里。

 model=ldaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics, 
                                                  random_state)

你不能只传递变量 random_state 而不指定标签。仅仅是用一个int号将变量传给方法,对于 ldaModel 方法,因为该方法不取位置参数。该方法采用命名参数。所以应该是这样的。

model=ldaModel(corpus=corpus, id2word=dictionary, num_topics=num_topics, 
                                                  random_state = random_state)

我有一个LDA的实现,它使用的是 LatentDirichletAllocationsklearn.decomposition以及 random_state 它需要一个整数。下面是一个例子。

lda_model = LatentDirichletAllocation(n_components=10,        
                                  max_iter=10,               
                                  learning_method='online',   
                                  random_state=100,          
                                  batch_size=128,            
                                  evaluate_every = -1,       
                                  n_jobs = -1 )

这里有一个很好的教程 如何执行和LDA

© www.soinside.com 2019 - 2024. All rights reserved.