Irgendwie ist das ... Es scheint, als könnten Sie mit Pässen oder Iterationen spielen Ich habe große Angst, weil ich den Inhalt wie die Parameteranpassung der numerischen Berechnung nicht kenne.
Wo der Fehler ist
model_lda = LdaModel(corpus=corpus, num_topics=30, id2word=corpus.id2word)
WARNING:gensim.models.ldamodel:too few updates, training might not converge; consider increasing the number of passes or iterations to improve accuracy
Schauen Sie sich [Quellcode] an (https://github.com/piskvorky/gensim/blob/develop/gensim/models/ldamodel.py) Das Problem ist die letzte Aktualisierungsmethode
In der Update-Methode_In der Nähe der Linie 616
if updates_per_pass * passes < 10:
logger.warning("too few updates, training might not converge; consider "
"increasing the number of passes or iterations to improve accuracy")
passt verwendet die Init-Parameter-Übergänge von LdaModel so wie sie sind. 1 ist standardmäßig zugewiesen. updates_per_pass ... Mmm ...
In der Update-Methode_Zeile 607
updates_per_pass = max(1, lencorpus / updateafter)
Für lencorpus wird der Wert von len (Korpus) in der Nähe der Zeile 585 der Aktualisierungsmethode zugewiesen. Der Punkt ist die Anzahl der Dokumente. Die Anzahl der Sätze, wenn diese Warnung ausgegeben wird, beträgt 4019. updateafter...
In der Update-Methode_Um die Linie 599
if update_every:
updatetype = "online"
updateafter = min(lencorpus, update_every * self.numworkers * chunksize)
else:
updatetype = "batch"
updateafter = lencorpus
Wenn für die Aktualisierungsmethode kein Argument angegeben ist, Der init-Parameter update_every wird update_every zugewiesen. Der Anfangswert ist 1. Wenn Sie nichts getan haben, ist der Aktualisierungstyp online. self.numworkers enthält 1, wenn der verteilte init-Parameter False bleibt.
Chunksize ist ...
In der Update-Methode_595 Zeilen
chunksize = min(lencorpus, self.chunksize)
self.chunksize entspricht dem init-Parameter chunksize. Der Standardwert ist 2000.
Mit anderen Worten ... updateafter = min(4019, 112000) = 2000 updates_per_pass = max(1, 4019 / 2000) ≒ 2 Die Bewertungsformel links von if lautet also 2 * 1. Out.
Maße ・ Erhöhen Sie die Pässe. In diesem Fall ist Pässe = 5 und Sie werden nicht wütend.
Ich habe diesen Parameter satt und werde ihn an einem anderen Tag nachschlagen.