对gensim中ldaseqmodel的评价

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

是否有可能在困惑度和主题一致性的值中评估动态模型(ldaseqmodel),如“普通”lda模型?我知道这些值会打印到logging.INFO中,因此另一种方法是将logging.INFO保存到文本文件中,以便在模拟后搜索这些评估值。如果方法1(评估ldaseqmodel的代码)不存在,是否可以将logging.INFO保存到文本文件中?这是我生成ldaseqmodel的代码:

from gensim import models, corpora
import csv
import logging
logging.basicConfig(format='%(asctime)s : %(levelname)s : %(message)s', level=logging.INFO)

Anzahl_Topics1      = 10                

Zeitabschnitte      = [16, 19, 44, 51, 84, 122, 216, 290, 385, 441, 477, 375, 390, 408, 428, 192, 38]

TDM_dateipfad = './1gramm/TDM_1gramm_1998_2014.csv'

dateiname_corpus = "./1gramm/corpus_DTM_1gramm.mm"

dateiname1_dtm  = "./1gramm/DTM_1gramm_10.model"

ids = {} 
corpus = [] 

with open(TDM_dateipfad, newline='') as csvfile:
    reader = csv.reader(csvfile, delimiter=';', quotechar='|') 
    for rownumber, row in enumerate(reader): 
        for index, field in enumerate(row):
            if index == 0:
                if rownumber > 0:
                    ids[rownumber-1] = field 
            else:
                if rownumber == 0:
                    corpus.append([])
                else:
                    corpus[index-1].append((rownumber-1, int(field))) 

corpora.MmCorpus.serialize(dateiname_corpus, corpus)

dtm1 = models.ldaseqmodel.LdaSeqModel(corpus=corpus, time_slice = Zeitabschnitte, id2word=ids, num_topics = Anzahl_Topics1, passes=1, chunksize=10000) 
dtm1.save(dateiname1_dtm)
python-3.x gensim lda
1个回答
1
投票

你问两个非常不同的问题。

是否可以将logging.INFO保存到文本文件中?

是。您可以使用此代码将日志发送到文件而不是控制台。 DEBUG级别日志记录为您提供比INFO更详细的信息。

import logging
logging.basicConfig(level=logging.DEBUG, file='yourlogname.log')

您可能还希望设置文件处理程序以在控制台中具有INFO日志,并将DEBUG级别日志设置为文件。有关更多信息,请参阅python文档here

是否有可能使用困惑和主题一致性来评估DTM?

是的,使用dtm_coherence - 参见gensim documentation here - 一致性通常是一个更有用的措施(就“人类理解这个”而言)而不是困惑。但是,您必须分别为每个时间片分别这样做。我的建议,如果你想比较两个模型,比如一个10对20主题的模型,将循环遍历每个模型的时间片,并绘制相干性分数,以查看是否一致性更好,例如。这个DTM example from the gensim devs有一个很好的教程。

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