Si vous êtes en colère contre "trop peu de mises à jour ~" lors de l'exécution de LdaModel

D'une manière ou d'une autre, cela ... Il semble que vous puissiez jouer avec des passes ou des itérations J'ai vraiment peur car je ne connais pas le contenu tel que l'ajustement des paramètres du calcul numérique.

Où est l'erreur


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

Jetez un œil à Code source Le problème est de lancer la dernière méthode de mise à jour

Dans la méthode de mise à jour_Près de la ligne 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")

passes utilise le paramètre init passe de LdaModel tel quel. 1 est attribué par défaut. updates_per_pass ... Mmm ...

Dans la méthode de mise à jour_Ligne 607


updates_per_pass = max(1, lencorpus / updateafter)

Pour lencorpus, la valeur de len (corpus) est attribuée près de la ligne 585 de la méthode de mise à jour. Le point est le nombre de documents. Le nombre de phrases lorsque cet avertissement est émis est de 4019. updateafter...

Dans la méthode de mise à jour_Autour de la ligne 599


if update_every:
    updatetype = "online"
    updateafter = min(lencorpus, update_every * self.numworkers * chunksize)
else:
    updatetype = "batch"
    updateafter = lencorpus

S'il n'y a pas d'argument spécifié pour la méthode de mise à jour, La même chose que le paramètre init update_every est affecté à update_every. La valeur initiale est 1. Si vous n'avez rien fait, le type de mise à jour sera en ligne. self.numworkers contient 1 si le paramètre init distribué reste False.

chunksize est ...

Dans la méthode de mise à jour_595 lignes


chunksize = min(lencorpus, self.chunksize)

self.chunksize est identique au paramètre init chunksize. La valeur par défaut est 2000.

En d'autres termes ... updateafter = min(4019, 112000) = 2000 updates_per_pass = max(1, 4019 / 2000) ≒ 2 Ainsi, la formule d'évaluation à gauche de if est 2 * 1. Out.

Les mesures ・ Augmentez les passes. Dans ce cas, passe = 5 et vous ne vous fâchez pas. -Reduce updatfter = diminuer update_every ou chunksize. _ Dans ce cas, si vous ne modifiez que la taille du morceau, vous ne vous fâcherez pas si vous la définissez à environ 400.

Je suis fatigué de ce paramètre, alors je le chercherai un autre jour.

Recommended Posts

Si vous êtes en colère contre "trop peu de mises à jour ~" lors de l'exécution de LdaModel
[python] [vscode] Lorsque vous vous fâchez avec space-tab-mixed
J'obtiens une UnicodeDecodeError lors de l'exécution avec mod_wsgi
Si vous vous perdez avec les redirections HTTP 301 et 302
swapon failed: Que faire si vous vous fâchez contre l'opération non autorisée
Que faire si vous obtenez une erreur lors de l'installation de python avec pyenv
Si vous obtenez une longue erreur lors de la tabulation d'un shell interactif avec Anaconda
Si vous êtes bloqué lors de la construction de pycocoapi sous Windows
Que faire si vous obtenez une erreur OpenSSL lors de l'installation de Python 2 avec pyenv
Que faire si vous obtenez une erreur d'importation lors de l'importation de matplotlib avec Jupyter
Que faire si vous obtenez une erreur lors de l'exécution de "certbot renouveler" dans l'environnement CakePHP
Que faire si vous obtenez une erreur non définie lorsque vous essayez d'utiliser pip avec pyenv
Que faire si vous vous mettez en colère si vous n'avez pas libxml / xmlversion.h lors de l'installation de lxml sur CentOS
Lisez ceci si vous obtenez des erreurs liées au SSL avec l'installation de pip! !! !!
Que faire si vous obtenez un avertissement "Mauvaise plateforme Python" lors de l'utilisation de Python avec l'EDI NetBeans
Que faire lorsque vous vous fâchez avec "Value Error: unknown local: UTF-8" dans python manage.py syncdb
Que faire lorsque vous vous fâchez que libxml / xmlversion.h n'existe pas lorsque vous mettez lxml avec pip
Je veux me mettre en colère contre ma mère quand la mémoire est serrée
Que faire si vous vous perdez dans la référence de fichier avec FileNotFoundError
Que faire si vous vous fâchez avec TensorFlow v2 sans l'attribut "app"
Si vous souhaitez obtenir plusieurs statistiques avec groupby of pandas v1
Que faire lorsque TypeError se produit au minimum et au maximum de numpy
Que faire si vous obtenez une erreur lors du chargement de mnist
Que faire si vous obtenez Impossible de récupérer l'URL 443 avec pip