Модель LDA: почему топи c "слова" числа? - PullRequest
1 голос
/ 06 апреля 2020

У меня есть набор триграмм (см. файл рассола ). Имя столбца - триграмма; каждая ячейка представляет документ; записи в ячейках обозначают вхождение (двоичное).

Затем я предварительно обработал триграммы и обучил модель LDA, используя приведенный ниже код. Однако, будучи новичком в LDA Mallet, я делаю что-то не так - и слова, напечатанные из облака слов, - это просто цифры. Я заблудился и не могу понять, где потеряна связь слов с представлением числа / как его восстановить.

with open('small_trigrams.pkl', 'rb') as file:
    small_trigrams = pickle.load(file)

small_mydict = gensim.corpora.Dictionary()    
small_trigrams_collection = []

for col in small_trigrams.columns:
    trigram = col.replace("(", "").replace("'", "").replace(" ", "").replace(")", "").strip().split(",", 3)
    value = small_trigrams[col].sum() # trigram occurrences
    for i in range(int(value)):
        small_trigrams_collection.append(trigram)            
small_mycorp = [small_mydict.doc2bow(trigram, allow_update=True) for trigram in small_trigrams_collection] # create corpus


# Train LDA on the trigrams features, assess topic coherence
small_topics_coherence = {} # dict with topics: coherence score
small_models = {} # collection of models

# train LDA on trigrams features
model = LdaMallet(path_to_mallet_binary,corpus=small_mycorp, num_topics=i, id2word=small_mydict) # train model

for t in range(model.num_topics)[:6]:
    plt.figure()
    plt.imshow(WordCloud().fit_words(dict(lda.show_topic(t, 200))))
    plt.axis("off")
    plt.title("Topic #" + str(t))
    plt.show()

Может ли кто-нибудь указать мне на мою ошибку?

...