[英]TypeError: got multiple values for argument 'dictionary'
我更早地閱讀了其他詢問有關此錯誤的問題。但仍然我沒有弄錯我在哪里。當我調用該函數時,我遇到了這個錯誤。 我在這個論壇上是新手,任何解決我的問題的幫助將不勝感激。這是我的代碼
def lda_train(self, documents):
# create dictionary
dictionary= corpora.Dictionary(documents)
dictionary.compactify()
dictionary.save(self.DICTIONARY_FILE) # store the dictionary, for future reference
print ("============ Dictionary Generated and Saved ============")
############# Create Corpus##########################
corpus = [dictionary.doc2bow(text) for text in documents]
print('Number of unique tokens: %d' % len(dictionary))
print('Number of documents: %d' % len(corpus))
return dictionary,corpus
def compute_coherence_values(dictionary,corpus,documents, limit, start=2, step=3):
num_topics = 10
coherence_values = []
model_list = []
for num_topics in range(start, limit, step):
lda_model = gensim.models.ldamodel.LdaModel(corpus=corpus,id2word=dictionary, num_topics=num_topics, random_state=100, alpha='auto')
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
當我通過使用以下代碼在主要調用此函數時:
if __name__ == '__main__':
limit=40
start=2
step=6
obj = LDAModel()
lda_input = get_lda_input_from_corpus_folder('./dataset/TRAIN')
dictionary,corpus =obj.lda_train(lda_input)
model_list, coherence_values = obj.compute_coherence_values(dictionary=dictionary,corpus=corpus, texts=lda_input, start=2, limit=40, step=6)
我收到錯誤消息:
model_list, coherence_values=obj.compute_coherence_values(dictionary=dictionary,corpus=corpus, texts=lda_input, start=2, limit=40, step=6)
TypeError: compute_coherence_values() got multiple values for argument 'dictionary'
TL; DR
更改
def compute_coherence_values(dictionary, corpus, documents, limit, start=2, step=3)
至
def compute_coherence_values(self, dictionary, corpus, documents, limit, start=2, step=3)
您忘記將self
作為第一個參數傳遞,因此將實例作為dictionary
參數傳遞,但是您也將dictionary
作為顯式關鍵字參數傳遞。
此行為可以很容易地重現:
class Foo:
def bar(a):
pass
Foo().bar(a='a')
TypeError: bar() got multiple values for argument 'a'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.