Python 如何使用一组测试文档评估LDA gensim模型

Python 如何使用一组测试文档评估LDA gensim模型,python,gensim,lda,Python,Gensim,Lda,我用Gensim LDA训练了我的模型。培训进行得很顺利,但对模型的评估没有按预期进行。当我尝试使用文件夹中的测试文件评估模型时,它会输出以下内容 我做错了什么?下面是我的python代码: my_path = "/path/to/files/training folder" files = os.listdir(my_path) doc_set = [] for file in files: newpath = (os.path.join(my_path, f

我用Gensim LDA训练了我的模型。培训进行得很顺利,但对模型的评估没有按预期进行。当我尝试使用文件夹中的测试文件评估模型时,它会输出以下内容

我做错了什么?下面是我的python代码:

my_path = "/path/to/files/training folder"
files = os.listdir(my_path)
doc_set = []


for file in files:
    newpath = (os.path.join(my_path, file)) 
    newpath1 = textract.process(newpath)
    newpath2 = newpath1.decode("utf-8")
    doc_set.append(newpath2)

texts = []
for i in doc_set:
    raw = i.lower()
    tokens = tokenizer.tokenize(raw)
    stopped_tokens = [i for i in tokens if not i in stopwords.words()]
    stemmed_tokens = [p_stemmer.stem(i) for i in stopped_tokens]
texts.append(stemmed_tokens)

dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]


ldamodel = gensim.models.ldamodel.LdaModel(corpus, num_topics=4, random_state=1, id2word = dictionary, passes=60)
print(ldamodel.print_topics(num_topics=4, num_words=25))

#Model evaluation

my_path1 = "/Path/to/file/testing folder"
files1 = os.listdir(my_path1)
doc_set1 = []

for file in files1:
    newpathone = (os.path.join(my_path, file)) 
    newpathtwo = textract.process(newpath)
    newpaththree = newpathtwo.decode("utf-8")
    doc_set1.append(newpaththree)

texts1 = []
for i in doc_set1:
    raw1 = i.lower()
    tokens1 = tokenizer.tokenize(raw1)
    stopped_tokens1 = [i for i in tokens1 if not i in stopwords.words()]
    stemmed_tokens1 = [p_stemmer.stem(i) for i in stopped_tokens1]
    texts1.append(stemmed_tokens1)


dictionary1 = corpora.Dictionary(texts1)
corpus1 = [dictionary1.doc2bow(text) for text in texts1]
print(ldamodel.get_document_topics(corpus1))

如果您按ldamodel.get\u document\u topics(corpus1)返回的顺序打印每个项目会怎么样?@gojomo我可以试试。请您提供一个代码。Thankyou@gojomo我尝试了这个方法,但没有成功:因为texts1:print(ldamodel.get\u document\u topics(corpus1))中的I与您现有的代码完全相同。循环查看ldamodel.get_document_topics(corpus1)的结果,而是打印每个项目。(你为什么要把一个完整的语料库放到
get\u document\u topics()
的第一位?@gojomo不知道怎么做。我试着像这样循环搜索结果,但没有成功:results=ldamodel.get_document_主题(corpus1)对应results:print(results)