Как генерировать облака слов из моделей LDA в Python?

Я занимаюсь моделированием тем для газетных статей и реализовал LDA с использованием gensim в Python3. Теперь я хочу создать облако слов для каждой темы, используя 20 лучших слов для каждой темы. Я знаю, что могу распечатать слова и сохранить модель LDA, но есть ли способ просто сохранить лучшие слова для каждой темы, которые я могу использовать для создания облаков слов?

Я пытался погуглить, но ничего подходящего не нашел. Любая помощь приветствуется.


person Mridul Garg    schedule 04.11.2016    source источник
comment
@JulienBernu Да, есть. Объект модели имеет атрибуты для тем, а не слова для каждой темы. Концептуальной сложности нет, я просто не знаю, как извлечь эти слова в другую переменную.   -  person Mridul Garg    schedule 05.11.2016


Ответы (3)


Вы можете получить лучшие слова из модели LDA, используя встроенный в Gensim метод show_topic.

lda = models.LdaModel.load('lda.model')

for i in range(0, lda.num_topics):
    with open('output_file.txt', 'w') as outfile:
        outfile.write('{}\n'.format('Topic #' + str(i + 1) + ': '))
        for word, prob in lda.show_topic(i, topn=20):
            outfile.write('{}\n'.format(word.encode('utf-8')))
        outfile.write('\n')

Это запишет файл в формате, подобном этому:

Topic #69: 
pet
dental
tooth
adopt
animal
puppy
rescue
dentist
adoption
animal
shelter
pet
dentistry
vet
paw
pup
patient
mix
foster
owner

Topic #70: 
periscope
disneyland
disney
snapchat
brandon
britney
periscope
periscope
replay
britneyspear
buffaloexchange
britneyspear
https
meerkat
blab
periscope
kxci
toni
disneyland
location

Вам может потребоваться или не потребоваться настроить это в соответствии с вашими потребностями, т.е. вывести список 20 лучших слов вместо вывода его в текстовый файл.

Ответ в этом посте дает хорошее объяснение того, как использовать необработанный текст для создания облаков слов. Как распечатать модель темы lda и облако слов для каждой из тем

person Kenneth Orton    schedule 05.11.2016
comment
привет, я попробовал приведенные выше коды, они работают, просто я не уверен, что у моего вывода есть b в начале ... пожалуйста, посмотрите на вывод ниже - person School; 12.11.2018
comment
Тема № 5 b'барьер' b'парентеральный' b'короткий' b'соль' b'грипп' b'резюме' b'жизненный' b'принятый' b'поворот' b'снижение' b'исходный уровень' b'сердечный ' б'левый' б'институт' б'место' б'надзор' - person School; 12.11.2018

есть ли способ просто сохранить лучшие слова для каждой темы?

Да, есть. jLDADMM выводит самые популярные слова для каждой темы. В версии 1.0 в выходной файл с верхними словами записываются только самые актуальные слова, без их вероятности с учетом темы.

person NQD    schedule 06.11.2016

Вы также можете использовать пакет pyldavis, который может использоваться для визуализации моделей LDA, созданных с помощью gensim. Пример показан здесь

person oldmonk    schedule 04.10.2017