Я создаю приложение на основе Java для вычисления показателя когерентности, полученного с помощью модели topi c. Я использую Маллет, и документация для этого процесса доступна в
https://www.machinelearningplus.com/nlp/topic-modeling-gensim-python#14computemodelperplexityandcoherencescore
# Compute Coherence Score
coherence_model_lda = CoherenceModel(model=lda_model, texts=data_lemmatized, dictionary=id2word, coherence='c_v')
coherence_lda = coherence_model_lda.get_coherence()
print('\nCoherence Score: ', coherence_lda)
Приложение запускает модель для 1-10 тем и использует этот показатель когерентности, помогающий пользователю определить оптимальное количество тем для создания окончательной модели.
#n_array[1,2,3,4,5,6,7,8,9,10]
for num_topics in n_array:
model = gensim.models.wrappers.LdaMallet(mallet_path, corpus=corpus, num_topics = num_topics, id2word=dictionary)
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
Согласно документации исходного кода , класс CoherenceModel является реализацией четырехэтапного конвейера когерентности topi c из статьи Майкл Редер, Андреас Бот и Александр Хиннебург: «Исследование пространства топографических c мер когерентности»
The Четыре этапа конвейера в основном:
- Сегментация
- Оценка вероятности
- Мера подтверждения
- Агрегация
Я пытался читать статью, чтобы разработать решение, но для меня слишком сложно следовать
. Есть ли какая-либо реализация java для этого конвейера, которую можно использовать для получения оценки когерентности? Модель Маллета?
или
Может ли любой из файлов вывода команды train-model
Маллет (-diagnostics-file, --output-topi c -keys, --output- Можно ли использовать c -topics, --word-topi c -counts-file) для получения оценки когерентности модели?