Ich habe eine vorhandene Gensim Doc2Vec-Modell, und ich versuche, iterative Updates für das Trainingssatz und durch das Modell zu erweitern.Aktualisieren von Schulungsunterlagen für Gensim Doc2Vec Modell
nehme ich die neuen Dokumente und führe als normal preproecssing:
stoplist = nltk.corpus.stopwords.words('english')
train_corpus= []
for i, document in enumerate(corpus_update['body'].values.tolist()):
train_corpus.append(gensim.models.doc2vec.TaggedDocument([word for word in gensim.utils.simple_preprocess(document) if word not in stoplist], [i]))
ich dann das ursprüngliche Modell laden, das Vokabular aktualisieren, und umschulen:
#### Original model
## model = gensim.models.doc2vec.Doc2Vec(dm=0, size=300, hs=1, min_count=10, dbow_words= 1, negative=5, workers=cores)
model = Doc2Vec.load('pvdbow_model_6_06_12_17.doc2vec')
model.build_vocab(train_corpus, update=True)
model.train(train_corpus, total_examples=model.corpus_count, epochs=model.iter)
ich dann den Trainingssatz aktualisieren Pandas Datenframe durch Anhängen der neuen Daten und Zurücksetzen des Indexes.
corpus = corpus.append(corpus_update)
corpus = corpus.reset_index(drop=True)
aber wenn ich versuche, infer_vector zu verwenden() mit dem aktualisiert Modell:
inferred_vector = model1.infer_vector(tokens)
sims = model.docvecs.most_similar([inferred_vector], topn=len(model.docvecs))
die Ergebnisqualität ist schlecht, was darauf hindeutet, dass die Indizes aus dem Modell und der Trainingssatz Datenrahmen nicht längere Übereinstimmung
Wenn ich es mit dem nicht aktualisierten Trainingssatz Datenrahmen (wieder unter Verwendung des aktualisierten Modells) vergleichen, sind die Ergebnisse in Ordnung - obwohl, natürlich, fehlen mir die neuen Dokumente.
Gibt es sowieso beide aktualisiert zu haben, da ich in der Lage sein werde, häufige Aktualisierungen des Modells ohne eine vollständige Umschulung des Modells vornehmen zu können?