簡體   English   中英

TypeError:參數“ dictionary”有多個值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM