Sto usando python gensim
per addestrare un modello Latent Dirichlet Allocation (LDA) da un corpus di 231 frasi. Tuttavia, ogni volta che ripeto il processo, genera diversi argomenti.Il modello LDA genera diversi argomenti ogni volta che mi alleno sullo stesso corpus
Perché gli stessi parametri e il corpus LDA generano argomenti diversi ogni volta?
E come si può stabilizzare la generazione degli argomenti?
sto usando questo corpus (http://pastebin.com/WptkKVF0) e questo elenco di parole non significative (http://pastebin.com/LL7dqLcj) ed ecco il mio codice:
from gensim import corpora, models, similarities
from gensim.models import hdpmodel, ldamodel
from itertools import izip
from collections import defaultdict
import codecs, os, glob, math
stopwords = [i.strip() for i in codecs.open('stopmild','r','utf8').readlines() if i[0] != "#" and i != ""]
def generateTopics(corpus, dictionary):
# Build LDA model using the above corpus
lda = ldamodel.LdaModel(corpus, id2word=dictionary, num_topics=50)
corpus_lda = lda[corpus]
# Group topics with similar words together.
tops = set(lda.show_topics(50))
top_clusters = []
for l in tops:
top = []
for t in l.split(" + "):
top.append((t.split("*")[0], t.split("*")[1]))
top_clusters.append(top)
# Generate word only topics
top_wordonly = []
for i in top_clusters:
top_wordonly.append(":".join([j[1] for j in i]))
return lda, corpus_lda, top_clusters, top_wordonly
#######################################################################
# Read textfile, build dictionary and bag-of-words corpus
documents = []
for line in codecs.open("./europarl-mini2/map/coach.en-es.all","r","utf8"):
lemma = line.split("\t")[3]
documents.append(lemma)
texts = [[word for word in document.lower().split() if word not in stopwords]
for document in documents]
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]
lda, corpus_lda, topic_clusters, topic_wordonly = generateTopics(corpus, dictionary)
for i in topic_wordonly:
print i
Se i dati traing è sufficiente, il risultato dovrebbe convergono in loop limitato. Non è vero? –
Posso sapere come impostare 'numpy.random' su' numpy.random.seed'? potresti mostrarmi un esempio di come chiamare 'ldamodel' con' numpy.random.seed'? – alvas
@ 2er0 Non si imposta 'np.random' * su *' np.random.seed', si imposta seed * con * 'np.random.seed'. –