Я работаю с LDA над португальским новостным корпусом (~ 800 тыс. Документов в среднем 28 слов каждый после очистки данных), и я пытаюсь оценить качество темы, используя недоумение. Темы. Использование log_perplexity (corpus_test) может вводить в заблуждение, потому что он не выводит должного вывода распределений с тематическими документами (θ) для невидимых документов. Итак, я переключился на: < /p>
bound = lda_model.bound(corpus_test)
token_total = sum(cnt for doc in corpus_test for _, cnt in doc)
perplexity = np.exp(-bound / token_total)
< /code>
Но я все еще получаю одинаковое странное поведение: модели с большим количеством тем, последовательно имеют более высокую недоумение в данных тестирования, даже если их обучение сбитостью ниже, а их когерентные оценки лучше. Решение)? Спасибо! < /P>
Код: < /p>
df = dataframe.iloc[:100_000].copy()
train_and_test = []
for number_of_topics in [5, 25, 45, 65, 85]:
print(f'\033[1m{number_of_topics} topics.\033[0m')
KF = KFold(n_splits=5, shuffle=True, random_state=42)
iteration = 1
for train_indices, test_indices in KF.split(df):
print(f'K{iteration}...')
print('Preparing the corpora.')
train_df = df.iloc[train_indices].copy()
train_texts = train_df.corpus.apply(str.split).tolist()
train_dictionary = corpora.Dictionary(train_texts)
train_corpus = [train_dictionary.doc2bow(text) for text in train_texts]
test_df = df.iloc[test_indices].copy()
test_texts = test_df.corpus.apply(str.split).tolist()
test_corpus = [train_dictionary.doc2bow(text) for text in test_texts]
print('Running the LDA model!')
lda_model = LdaMulticore(corpus=train_corpus, id2word=train_dictionary,
num_topics=number_of_topics,
workers=mp.cpu_count(), passes=10)
bound = lda_model.bound(test_corpus)
tokens = sum(cnt for doc in test_corpus for _, cnt in doc)
perplexity = np.exp(-bound / tokens)
print(perplexity, '\n')
train_and_test.append([number_of_topics, iteration, perplexity])
iteration += 1
Подробнее здесь: https://stackoverflow.com/questions/795 ... odel-1-top
LDA недоумение с расщеплением тестирования поезда приводит к абсурдным результатам (лучшая модель = 1 тема) ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Работа с расщеплением карт в Блэкджеке без изменения списка во время итерации
Anonymous » » в форуме Python - 0 Ответы
- 5 Просмотры
-
Последнее сообщение Anonymous
-