Если у вас есть предопределенное распределение слов в предварительно обученной модели, вы можете просто пропустить bow_corpus через это распределение как функцию. Обе Gensims LDA и LDAMallet могут быть обучены один раз, после чего вы можете передать новый набор данных для распределения без изменения тем.
Шаги:
- Импорт ваших данных
- Очистите ваши данные: знаки препинания, цифры, лемматизируйте, удалите стоп-слова и основа
Создать словарь
dictionary = gensim.corpora.Dictionary(processed_docs[:])
dictionary.filter_extremes(no_below=15, no_above=0.5, keep_n=100000)
Определить корпус лука
bow_corpus = [dictionary.doc2bow(doc) for doc in processed_docs]
Тренируйте свою модель - пропустите, если она уже обучена
ldamallet = gensim.models.wrappers.LdaMallet(mallet_path,
corpus=bow_corpus, num_topics=15, id2word=dictionary)
Импортируйте новые данные и выполните шаги 1-4
Передайте ваши новые данные через вашу модель следующим образом:
ldamallet[bow_corpus_new[:len(bow_corpus_new)]]
Ваши новые данные распределены сейчас, и вы можете поместить их в CSV