Определение log_perplexity с использованием ldamulticore для оптимального количества тем

Я пытаюсь определить оптимальное количество тем для моей модели LDA, используя логику в python. То есть я строю график сложности журнала для ряда тем и определяю минимальную степень сложности. Однако график, который я получил, имеет отрицательные значения для логарифмического недоумения, когда он должен иметь положительные значения между 0 и 1.

#calculating the log perplexity per word as obtained by gensim code 
##https://radimrehurek.com/gensim/models/atmodel.html
#parameters: pass in trained corpus
#return: graph of perplexity per word for varying number of topics
parameter_list = range(1, 500, 100)
grid ={}

for parameter_value in parameter_list:
model = models.LdaMulticore(corpus=corpus, workers=None, id2word=None, 
                            num_topics=parameter_value, iterations=10)
grid[parameter_value]=[]

perplex=model.log_perplexity(corpus, total_docs=len(corpus))
grid[parameter_value].append(perplex)


df = pd.DataFrame(grid)
ax = plt.figure(figsize=(7, 4), dpi=300).add_subplot(111)
df.iloc[0].transpose().plot(ax=ax,  color="#254F09")
plt.xlim(parameter_list[0], parameter_list[-1])
plt.ylabel('Perplexity')
plt.xlabel('topics')
plt.show()     

1 ответ

Недоумение должно быть от 0 до 1. Вы вычисляете лог- сложность. Он отрицательный, потому что логарифм числа в диапазоне (0,1) ниже нуля.

Другие вопросы по тегам