Указание словарного запаса в LDA - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь понять, как использовать LDA в моем случае. У меня много корпусов документов, и я хочу увидеть, как очень специфический c набор слов и нграмм распределяется по темам. Есть ли способ указать список указанных c слов в качестве словаря для моделирования topi c?

Я работал с реализацией gensim и считаю, что аргумент id2word справляется с этим, но документация мне не ясна. Правильно ли мое понимание?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

для этого вы можете использовать Countvectorizer Scikit learn

from sklearn.feature_extraction.text import CountVectorizer
from gensim import matutils
from gensim.models.ldamodel import LdaModel

text = ['computer time graph', 'survey response eps', 'human system computer','machinelearning is very hot topic','python win the race for simplicity as compared to other programming language']

# suppose this are the word that you want to be used in your vocab 
vocabulary = ['machine','python','learning','human', 'system','hot','time']

vect = CountVectorizer(vocabulary = vocabulary)
x = vect.fit_transform(text)

feature_name = vect.get_feature_names()

# now you can use matutils helper function of gensim
model = LdaModel(matutils.Sparse2Corpus(x),num_topic=3,id2word=dict([(i, s) for i, s in enumerate(feature_name)]))

#printing the topic 
model.show_topics()

enter image description here

 #to see the vocab that use being used 
 print(vect.get_feature_names())
  ['machine', 'python', 'learning', 'human', 'system', 'hot', 'time'] # you will get the feature that you want include
0 голосов
/ 18 февраля 2020

Подход LDA к моделированию topi c заключается в том, что он рассматривает каждый документ как набор тем в определенной пропорции. И каждый топи c как набор ключевых слов, опять же, в определенной пропорции.

После того, как вы укажете алгоритму количество тем, все, что он делает, - это перераспределяет распределение тем в документах и ​​ключевых словах. Распределение по темам для получения хорошей композиции распределения ключевых слов topi c.

Двумя основными входными данными для модели LDA topi c являются словарь или словарь (id2word) и корпус.

Вы можете использовать что-то вроде этого для достижения этого:

import gensim.corpora as corpora

# Create Dictionary/Vocabulary
id2word = corpora.Dictionary(data_lemmatized)

# Create Corpus
texts = data_lemmatized

# Term Document Frequency
corpus = [id2word.doc2bow(text) for text in texts]
...