Exemples d’utilisation¶
Entraînez un modèle LDA à l’aide d’un corpus Gensim
>>> from gensim.test.utils import common_texts>>> from gensim.corpora.dictionary import Dictionary>>>>>> # Create a corpus from a list of texts>>> common_dictionary = Dictionary(common_texts)>>> common_corpus = >>>>>> # Train the model on the corpus.>>> lda = LdaModel(common_corpus, num_topics=10)
Enregistrez un modèle sur le disque ou rechargez un modèle pré-entraîné
>>> from gensim.test.utils import datapath>>>>>> # Save model to disk.>>> temp_file = datapath("model")>>> lda.save(temp_file)>>>>>> # Load a potentially pretrained model from disk.>>> lda = LdaModel.load(temp_file)
Requête, le modèle utilisant de nouveaux documents invisibles
>>> # Create a new corpus, made of previously unseen documents.>>> other_texts = ,... ,... ... ]>>> other_corpus = >>>>>> unseen_doc = other_corpus>>> vector = lda # get topic probability distribution for a document
Mettre à jour le modèle en s’entraînant progressivement sur le nouveau corpus
>>> lda.update(other_corpus)>>> vector = lda
De nombreux paramètres peuvent être réglés pour optimiser l’entraînement pour votre cas spécifique
>>> lda = LdaModel(common_corpus, num_topics=50, alpha='auto', eval_every=5) # learn asymmetric alpha from data
classgensim.models.ldamodel.
LdaModel
(corpus=None, num_topics=100, id2word=None, distributed=False, chunksize=2000, passes=1, update_every=1, alpha=’symmetric’, eta=None, decay=0.5, offset=1.0, eval_every=10, iterations=50, gamma_threshold=0.001, minimum_probability=0.01, random_state=None, ns_conf=None, minimum_phi_value=0.01, per_word_topics=False, callbacks=None, dtype=<class ‘numpy.float32’>)¶
Bases: gensim.interfaces.TransformationABC
gensim.models.basemodel.BaseTopicModel
Entraînez et utilisez des modèles d’Allocation de Dirichlet Latent en ligne (OLDA) tels que présentés Dansoffman et al. : « Apprentissage en ligne pour l’Allocation de Dirichlet Latente”.
Exemples
Initialisez un modèle à l’aide d’un corpus Gensim
>>> from gensim.test.utils import common_corpus>>>>>> lda = LdaModel(common_corpus, num_topics=10)
Vous pouvez ensuite déduire des distributions de sujet sur de nouveaux documents invisibles.
>>> doc_bow = >>> doc_lda = lda
Le modèle peut être mis à jour (entraîné) avec de nouveaux documents.
>>> # In practice (corpus =/= initial training corpus), but we use the same here for simplicity.>>> other_corpus = common_corpus>>>>>> lda.update(other_corpus)
La persistance du modèle est obtenue grâce aux méthodes load()
et save()
.
Parameters
-
corpus (itérable de la liste de (int, float), facultatif) – Flux de vecteurs de document ou de matrice de forme clairsemée (num_documents, num_terms).Si vous avez une matrice en mémoire CSC, vous pouvez la convertir en corpus écrit à l’aide de gensim.matutils.Sparse2Corpus.S’il n’est pas donné, le modèle n’est pas formé (probablement parce que vous souhaitez appeler
update()
manuellement). -
num_topics(int, optionnel) – Le nombre de sujets latents demandés à extraire du corpus de formation.
-
id2word({dict of(int, str),
gensim.corpora.dictionary.Dictionary
}) – Mappage des ID de mots aux mots. Il est utilisé pour déterminer la taille du vocabulaire, ainsi que pourdébuggage et impression de sujet. -
distribué (bool, facultatif) – Si l’informatique distribuée doit être utilisée pour accélérer la formation.
-
chunksize(int, facultatif) – Nombre de documents à utiliser dans chaque bloc de formation.
-
passes (int, optionnel) – Nombre de passes à travers le corpus pendant l’entraînement.
-
update_every(int, facultatif) – Nombre de documents à parcourir pour chaque mise à jour.Défini sur 0 pour l’apprentissage par lots, >1 pour l’apprentissage itératif en ligne.
-
alpha({numpy.ndarray, str}, facultatif) –
Peut être défini sur un tableau 1D de longueur égale au nombre de sujets attendus qui exprime notre croyance a priori pour la probabilité de chaque sujet.Alternativement, des stratégies de sélection préalable par défaut peuvent être utilisées en fournissant une chaîne:
-
’symmetric’: Default; utilise un prior symétrique fixe par sujet,
-
’asymmetric’: Utilise un prior asymétrique normalisé fixe de 1.0/(topic_index+sqrt(num_topics)),
-
’auto’ : Apprend un prior asymétrique du corpus (non disponible si distribué == True).
-
-
eta({float, np.tableau, str }, facultatif) –
Croyance a priori sur la probabilité des mots, cela peut être:
-
scalaire pour une probabilité symétrique sur sujet/mot,
-
vecteur de longueur num_words pour désigner une probabilité asymétrique définie par l’utilisateur pour chaque mot,
-
matrice de forme (num_topics, num_words) pour attribuer une probabilité à chaque combinaison mot-sujet,
-
la chaîne ‘auto’ pour apprendre le prior asymétrique à partir des données.
-
-
decay(float, facultatif) – Un nombre compris entre (0.5, 1] pour pondérer quel pourcentage de la valeur lambda précédente est oublié lors de l’examen de chaque nouveau document. Correspond à Kappa fromMatthew D. Hoffman, David M. Blei, Francis Bach: « Apprentissage en ligne pour l’Allocation latente de Dirichlet NIPS ’10”.
-
offset(float, facultatif) –
Hyper-paramètre qui contrôle combien nous allons ralentir les premières étapes les premières itérations.Correspond à Tau_0 de Matthew D. Hoffman, David M. Blei, Francis Bach: « Apprentissage en ligne pour l’Allocation latente de Dirichlet NIPS ’10”.
-
eval_every(int, facultatif) – La perplexité du journal est estimée à chaque mise à jour. Définir ceci à un ralentit l’entraînement de ~ 2x.
-
itérations (int, facultatif) – Nombre maximal d’itérations dans le corpus lors de l’inférence de la distribution de sujet d’un corpus.
-
gamma_threshold(float, facultatif) – Modification minimale de la valeur des paramètres gamma pour continuer l’itération.
-
minimum_probability(float, facultatif) – Les sujets dont la probabilité est inférieure à ce seuil seront filtrés.
-
random_state({np.aléatoire.RandomState, int}, facultatif) – Soit un objet randomState, soit une graine pour en générer un. Utile pour la reproductibilité.
-
ns_conf(dict of(str, object), optionnel) – Paramètres de mots clés propagés à
gensim.utils.getNS()
pour obtenir un nom Pyro4 Desservi.Utilisé uniquement si distribué est défini sur True. -
minimum_phi_value(float, facultatif) – si per_word_topics vaut True, cela représente une borne inférieure sur les probabilités du terme.
-
per_word_topics–bool) – Si True, le modèle calcule également une liste de sujets, triés par ordre décroissant des sujets les plus probables pour chaque mot, ainsi que leurs valeurs phi multipliées par la longueur de la fonctionnalité (c’est-à-dire le nombre de mots).
-
callbacks (liste des
Callback
) – Rappels de métriques pour enregistrer et visualiser les métriques d’évaluation du modèle pendant l’entraînement. -
dtype({numpy.float16, numpy.float32, numpy.float64}, facultatif) – Type de données à utiliser lors des calculs à l’intérieur du modèle. Toutes les entrées sont également converties.
add_lifecycle_event
(event_name, log_level= 20, ** event)¶
Ajoute un événement à l’attribut lifecycle_events de cet objet, et enregistre également l’événement de manière facultative à log_level.
Les événements sont des moments importants de la vie de l’objet, tels que « modèle créé”, « modèle enregistré”, « modèle chargé », etc.
L’attribut lifecycle_events est conservé dans les opérations save()
et load()
de l’objet. Cela n’a aucun impact sur l’utilisation du modèle, mais est utile lors du débogage et du support.
Définir soi-même.lifecycle_events =None pour désactiver ce comportement. Les appels à add_lifecycle_event() n’enregistreront pas les événements dans self.lifecycle_events alors.
Parameters
-
event_name(str) – Nom de l’événement. Peut être n’importe quelle étiquette, par exemple « créé”, « stocké”, etc.
-
event(dict) –
Mappage clé-valeur à ajouter à self.événements de cycle de vie. Devrait être sérialisable en JSON, alors restez simple.Peut être vide.
Cette méthode ajoutera automatiquement les valeurs clés suivantes à l’événement, vous n’avez donc pas à les spécifier :
-
datetime: la date actuelle &heure
-
gensim: la version actuelle de Gensim
-
python: la version actuelle de Python
-
plate–forme: la plate-forme actuelle
-
événement: le nom de cet événement
-
-
log_level(int) – Enregistre également le dict d’événement complet, au niveau de journal spécifié. Défini sur False pour ne pas se connecter du tout.
bound
(corpus, gamma=None, subsample_ratio=1.0)¶
Estimez la limite variationnelle des documents du corpus comme E_q-E_q.
Parameters
-
corpus (itérable de la liste de (int, float), facultatif) – Flux de vecteurs de document ou de matrice de forme clairsemée (num_documents, num_terms) utilisé pour estimer les limites variables.
-
gamma(numpy.ndarray, facultatif) – Paramètres variationnels du poids du sujet pour chaque document. S’il n’est pas fourni, il sera déduit du modèle.
-
subsample_ratio(float, facultatif) – Pourcentage de l’ensemble du corpus représenté par l’argument corpus passé (dans le cas où il s’agissait d’un échantillon).Défini sur 1.0 si l’ensemble du corpus a été passé.Ceci est utilisé comme facteur multiplicatif pour mettre à l’échelle la probabilité appropriée.
Renvoie
Le score lié variationnel calculé pour chaque document.
Type de retour
numpy.ndarray
clear
()¶
Efface l’état du modèle pour libérer de la mémoire. Utilisé dans l’implémentation distribuée.
diff
(other, distance=’kullback_leibler’, num_words=100, n_ann_terms=10, diagonal=False, annotation=True, normed=True)¶
Calculez la différence dans les distributions de sujet entre deux modèles : self et other.
Paramètres
-
autres (
LdaModel
) – Le modèle qui sera comparé à l’objet courant. -
distance({‘kullback_leibler’, ‘hellinger’, ‘jaccard’, ‘jensen_shannon’}) – La métrique de distance avec laquelle calculer la différence.
-
num_words(int, facultatif) – Le nombre de mots les plus pertinents utilisés si distance == ’jaccard’. Également utilisé pour annoter des sujets.
-
n_ann_terms(int, facultatif) – Nombre maximum de mots dans la différence d’intersection / symétrique entre les sujets. Utilisé pour l’annotation.
-
diagonal(bool, facultatif) – Si nous avons besoin de la différence entre des sujets identiques (la diagonale de la matrice de différence).
-
annotation (bool, facultatif) – Si l’intersection ou la différence de mots entre deux sujets doit être renvoyée.
-
normed(bool, facultatif) – Si la matrice doit être normalisée ou non.
Renvoie
-
numpy.ndarray – Une matrice de différence. Chaque élément correspond à la différence entre les deux sujets, shape(self.num_topics, autres.num_topics)
-
numpy.ndarray, matrice d’annotation facultative où pour chaque paire, nous incluons le mot de l’intersection des deux sujets et le mot de la différence symétrique des deux sujets. Seulement inclus si l’annotation == True.Forme (soi-même.num_topics, other_model.num_topics, 2).
Exemples
Obtenir les différences entre chaque paire de sujets déduites par deux modèles
>>> from gensim.models.ldamulticore import LdaMulticore>>> from gensim.test.utils import datapath>>>>>> m1 = LdaMulticore.load(datapath("lda_3_0_1_model"))>>> m2 = LdaMulticore.load(datapath("ldamodel_python_3_5"))>>> mdiff, annotation = m1.diff(m2)>>> topic_diff = mdiff # get matrix with difference for each topic pair from `m1` and `m2`
do_estep
(chunk, state=None)¶
Effectuer une inférence sur un morceau de documents, et accumulez les statistiques suffisantes collectées.
Parameters
-
chunk(list of list of(int, float)– – Le morceau de corpus sur lequel l’étape d’inférence sera effectuée.
-
state(
LdaState
, facultatif) – L’état à mettre à jour avec les statistiques suffisantes nouvellement accumulées. Si aucun, les modèles eux-mêmes.l’état est mis à jour.
Renvoie
Paramètres Gamma contrôlant les poids du sujet, la forme(len(chunk), self.num_topics).
Type de retour
numpy.ndarray
do_mstep
(rho, other, extra_pass=False)¶
Étape de maximisation: utilisez une interpolation linéaire entre les sujets existants etcollecté suffisamment de statistiques dans d’autres pour mettre à jour les sujets.
Paramètres
-
rho (float) – Taux d’apprentissage.
-
other(
LdaModel
) – Le modèle dont les statistiques suffisantes seront utilisées pour mettre à jour les rubriques. -
extra_pass(bool, facultatif) – Si cette étape nécessitait un passage supplémentaire sur le corpus.
get_document_topics
(bow, minimum_probability=None, minimum_phi_value=None, per_word_topics=False)¶
Obtenez la distribution de sujet pour le document donné.
Parameters
-
bow(corpus:list of(int, float)) – Le document au format BOW.
-
minimum_probability(float) – Les sujets dont la probabilité attribuée est inférieure à ce seuil seront ignorés.
-
minimum_phi_value(float) –
Si per_word_topics vaut True, cela représente une borne inférieure sur les probabilités de terme incluses.
Si elle est définie sur None, une valeur de 1e-8 est utilisée pour empêcher 0s.
-
per_word_topics(bool) – Si True, cette fonction renverra également deux listes supplémentaires comme expliqué dans la section « Retours”.
Renvoie
-
liste de la distribution de sujet (int, float) pour l’ensemble du document. Chaque élément de la liste est une paire d’id d’un sujet, etla probabilité qui lui a été attribuée.
-
liste de (int, liste de (int, float), facultatif – Sujets les plus probables par mot. Chaque élément de la liste est une paire d’id d’un mot et une liste d’objets triés par leur pertinence pour ce mot. Retourné uniquement si per_word_topics a été défini sur True.
-
liste de (int, liste de float), valeurs de pertinence optionnelles–Phi, multipliées par la longueur de la fonction, pour chaque combinaison mot-sujet.Chaque élément de la liste est une paire d’id d’un mot et une liste des valeurs phi entre ce mot et chaque sujet. Retourné uniquement si per_word_topics a été défini sur True.
get_term_topics
(word_id, minimum_probability=None)¶
Obtenez les sujets les plus pertinents pour le mot donné.
Parameters
-
word_id(int) – Le mot pour lequel la distribution de sujet sera calculée.
-
minimum_probability(float, facultatif) – Les sujets dont la probabilité est inférieure à ce seuil seront ignorés.
Renvoie
Les sujets pertinents représentés par paires de leur identifiant et de leur probabilité assignée, triés par pertinence par rapport au mot donné.
Type de retour
liste de (int, float)
get_topic_terms
(topicid, topn=10)¶
Obtenez la représentation pour un seul sujet. Mots les ID entiers, en constrast à show_topic()
qui représente les mots par les chaînes réelles.
Paramètres
-
topicid(int) – L’ID du sujet à renvoyer
-
topn(int, facultatif) – Nombre de mots les plus significatifs associés au sujet.
Renvoie
Paires ID-probabilité de mots pour les mots les plus pertinents générés par le sujet.
Type de retour
liste de (int, float)
get_topics
()¶
Obtenez la matrice terme-sujet apprise pendant l’inférence.
Renvoie
La probabilité pour chaque mot dans chaque sujet, forme (num_topics, vocabulary_size).
Type de retour
numpy.ndarray
inference
(chunk, collect_sstats=False)¶
Étant donné un bloc de vecteurs de document clairsemés, estimez le gamma (paramètres contrôlant les poids des sujets) pour chaque document du bloc.
Cette fonction ne modifie pas le modèle Le bloc d’entrée entier du document est supposé tenir dans la RAM; le découpage d’un grand corpus doit être effectué plus tôt dans le pipeline. Évite de calculer le paramètre variationnel phi directement en utilisant l’optimisation présentée danslee, Seung: Algorithms for non-negative matrix factorization ”.
Parameters
-
chunk(list of list of(int, float)– – Le morceau de corpus sur lequel l’étape d’inférence sera effectuée.
-
collect_sstats(bool, facultatif) – S’il est défini sur True, collectez également (et renvoyez) les statistiques suffisantes nécessaires pour mettre à jour les distributions de mots de sujet du modèle.
Renvoie
Le premier élément est toujours renvoyé et il correspond à la matrice gamma des états. Le deuxième élément est uniquement renvoyé si collect_sstats == True et correspond aux statistiques suffisantes pour l’étape M.
Type de retour
(numpy.ndarray, {numpy.ndarray, None})
init_dir_prior
(prior, name)¶
Initialise les priors pour la distribution de Dirichlet.
Paramètres
-
prior({str, liste des flotteurs, numpy.ndarray de float, float }) –
Croyance a priori sur la probabilité des mots. Si name =‘ ‘eta’ alors le prior peut être:
-
scalaire pour une probabilité symétrique sur sujet/mot,
-
vecteur de longueur num_words pour désigner une probabilité asymétrique définie par l’utilisateur pour chaque mot,
-
matrice de forme (num_topics, num_words) pour attribuer une probabilité à chaque combinaison mot-sujet,
-
la chaîne ‘auto’ pour apprendre le prior asymétrique à partir des données.
Si name== ‘alpha’, alors le prior peut être:
-
un tableau 1D de longueur égale au nombre de sujets attendus,
-
’symmetric’: Utilise un prior symétrique fixe par sujet,
-
’asymmetric’: Utilise un prior asymétrique normalisé fixe de 1,0/(topic_index+sqrt ( num_topics)),
-
’auto’ : Apprend un prieur asymétrique à partir du corpus.
-
-
name({‘alpha’, ‘eta’}) – Si le prieur est paramétré par le vecteur alpha (1 paramètre par sujet) ou par l’eta(1 paramètre par terme unique dans le vocabulaire).
classmethodload
(fname, *args, **kwargs)¶
Chargez un gensim.models.ldamodel.LdaModel
précédemment enregistré à partir du fichier.
Voir aussi
save()
Enregistrer le modèle.
Paramètres
-
fname(str) – Chemin d’accès au fichier dans lequel le modèle est stocké.
-
* args – Arguments positionnels propagés à
load()
. -
** kwargs – Arguments de mots clés propagés à
load()
.
Exemples
Les grands tableaux peuvent être mémorisés en lecture seule (mémoire partagée) en définissant mmap=’r’:
>>> from gensim.test.utils import datapath>>>>>> fname = datapath("lda_3_0_1_model")>>> lda = LdaModel.load(fname, mmap='r')
log_perplexity
(chunk, total_docs =None)¶
Calculez et renvoyez la limite de vraisemblance par mot, en utilisant un bloc de documents comme corpus d’évaluation.
Affiche également les statistiques calculées, y compris la perplexité = 2^ (-bound), pour se connecter au niveau des INFORMATIONS.
Parameters
-
chunk(list of list of(int, float)– – Le morceau de corpus sur lequel l’étape d’inférence sera effectuée.
-
total_docs(int, facultatif) – Nombre de documents utilisés pour évaluer la perplexité.
Renvoie
Le score lié variationnel calculé pour chaque mot.
Type de retour
numpy.ndarray
print_topic
(topicno, topn=10)¶
Obtenez un seul sujet sous forme de chaîne formatée.
Paramètres
-
topicno(int) – Id du sujet.
-
topn(int) – Nombre de mots du sujet qui seront utilisés.
Renvoie une représentation sous forme de chaîne du sujet, comme ‘-0,340* »catégorie » + 0,298 * « MM$ » + 0,183 * »algèbre » + …‘.Type de retour
str
print_topics
(num_topics=20, num_words=10)¶
Obtenez les sujets les plus significatifs (alias pour la méthode show_topics()).
Paramètres
-
num_topics(int, facultatif) – Le nombre de sujets à sélectionner, si -1 – tous les sujets seront dans le résultat (classés par signification).
-
num_words(int, facultatif) – Le nombre de mots à inclure par sujet (classés par signification).
Renvoie la séquence
avec (topic_id,).
Type de retour
list of(int, list of(str, float))
save
(fname, ignore =(‘state’, ‘dispatcher’), separately=None, *args, **kwargs)¶
Enregistrez le modèle dans un fichier.
Les grands tableaux internes peuvent être stockés dans des fichiers séparés, avec fname comme préfixe.
Notes
Si vous avez l’intention d’utiliser des modèles sur les versions Python 2/3, il y a quelques choses à garder à l’esprit:
Les dictionnaires Python marinés ne fonctionneront pas entre les versions Python
La méthode save n’enregistre pas automatiquement tous les tableaux numpy séparément, seuls ceux qui dépassent sep_limit définis dans
save()
. La principale préoccupation ici est le tableau alpha si par exemple en utilisant alpha= ‘auto’.
Veuillez vous référer à la section recettes du wiki pour un exemple sur la façon de contourner ces problèmes.
Voir aussi
load()
Modèle de charge.
Paramètres
-
fname(str) – Chemin d’accès au fichier système dans lequel le modèle sera conservé.
-
ignore (tuple de str, facultatif) – Les attributs nommés dans le tuple seront exclus du modèle mariné. La raison pour laquelle l’état interne est ignoré par défaut est qu’il utilise sa propre sérialisation plutôt que celle fournie par cette méthode.
-
séparément ({liste de str, None}, facultatif) – Si Aucun – détecte automatiquement un grand nombre / scipy.tableaux clairsemés dans l’objet en cours de stockage et les stocker dans des fichiers séparés. Cela évite les erreurs de mémoire de cornichon et permet de récupérer efficacement les grandes baies de mmap sur la charge. Si la liste des attributs str-this sera stockée dans des fichiers séparés, la vérification automatique n’est pas effectuée dans ce cas.
-
* args – Arguments positionnels propagés à
save()
. -
** kwargs – Arguments de mots clés propagés à
save()
.
show_topic
(topicid, topn=10)¶
Obtenez la représentation pour un seul sujet. Les mots voici les chaînes réelles, en constrast à get_topic_terms()
qui représentent les mots par leur ID de vocabulaire.
Paramètres
-
topicid(int) – L’ID du sujet à renvoyer
-
topn(int, facultatif) – Nombre de mots les plus significatifs associés au sujet.
Renvoie des paires
de probabilité de mots pour les mots les plus pertinents générés par le sujet.
Type de retour
liste de (str, float)
show_topics
(num_topics=10, num_words=10, log=False, formatted=True)¶
Obtenez une représentation pour les sujets sélectionnés.
Parameters
-
num_topics(int, facultatif) – Nombre de sujets à renvoyer. Contrairement à LSA, il n’y a pas d’ordre naturel entre les sujets dans LDA.Le sous-ensemble de sujets renvoyés de tous les sujets est donc arbitraire et peut changer entre deux exécutions LDAtraining.
-
num_words(int, facultatif) – Nombre de mots à présenter pour chaque sujet. Ce seront les mots les plus pertinents (assignés au plus hautprobabilité pour chaque sujet).
-
log(bool, facultatif) – Indique si la sortie est également enregistrée, en plus d’être renvoyée.
-
formaté (bool, facultatif) – Si les représentations de sujet doivent être formatées sous forme de chaînes. Si False, ils sont renvoyés sous la forme de 2 tuples de (mot, probabilité).
Renvoie
une liste de sujets, chacun représenté sous forme de chaîne (lorsqu’il est formaté ==True) ou de paires de probabilités de mots.
Type de retour
liste de {str, tuple de (str, float)}
sync_state
(current_Elogbeta=None)¶
Propagez les probabilités de sujet d’états à l’attribut de l’objet interne.
Paramètres
current_Elogbeta(numpy.ndarray) – Probabilités postérieures pour chaque sujet, facultatives.S’il est omis, il obtiendra Elogbeta de l’état.
top_topics
(corpus=None, texts=None, dictionary=None, window_size=None, coherence=’u_mass’, topn=20, processes=-1)¶
Obtenez les sujets avec le score de cohérence le plus élevé la cohérence pour chaque sujet.
Parameters
-
corpus (itérable de la liste de (int, float), facultatif) – Corpus au format BoW.
-
texts (list of list of str, facultatif) – Textes symbolisés, nécessaires pour les modèles de cohérence qui utilisent des fenêtres coulissantes (i.e. coherence=’c_something’) estimateur de probabilité.
-
dictionary(
Dictionary
, facultatif) – Mappage par dictionnaire Gensim du mot id pour créer un corpus.Si model.id2word est présent, cela n’est pas nécessaire. Si les deux sont fournis, le dictionnaire passé sera utilisé. -
window_size(int, optionnel) – Est la taille de la fenêtre à utiliser pour les mesures de cohérence en utilisant la fenêtre coulissante booléenne comme estimateur de probabilité. Pour ‘u_mass’, cela n’a pas d’importance.Si aucun – les tailles de fenêtre par défaut sont utilisées : ‘c_v’ -110, ‘c_uci’ -10, ‘c_npmi’ – 10.
-
cohérence({‘u_mass’, ‘c_v’, ‘c_uci’, ‘c_npmi’}, facultatif) – Mesure de cohérence à utiliser.Méthode la plus rapide ‘ ‘u_mass’, ’c_uci’ également connu sous le nom de c_pmi.Pour le corpus ‘u_mass’ doit être fourni, si texts est fourni, il sera converti en corpusutilisant le dictionnaire. Pour ‘c_v’, les textes ’c_uci‘ et ’c_npmi’ doivent être fournis (le corpus n’est pas nécessaire)
-
topn(int, facultatif) – Entier correspondant au nombre de mots principaux à extraire de chaque sujet.
-
processus (int, facultatif) – Nombre de processus à utiliser pour la phase d’estimation de probabilité, toute valeur inférieure à 1 sera interprétée comme num_cpus-1.
Renvoie
Chaque élément de la liste est une paire de représentation d’un sujet et son score de cohérence. Les représentations de sujets sont des distributions de mots, représentées sous la forme d’une liste de paires d’identifiants de mots et de leurs probabilités.
Type de retour
list of(list of(int, str), float)
update
(corpus, chunksize= None, decay=None, offset=None, passes=None, update_every=None, eval_every=None, iterations=None, gamma_threshold=None, chunks_as_numpy=False)¶
Entraînez le modèle avec de nouveaux documents, par EM – itérer sur le corpus jusqu’à ce que les sujets convergent, ou jusqu’à ce que le nombre maximum d’itérations autorisées soit atteint. le corpus doit être itérable.
En mode distribué, l’étape E est répartie sur un cluster de machines.
Notes
Cette mise à jour prend également en charge la mise à jour d’un modèle déjà formé avec de nouveaux documents ; les deux modèles sont ensuite fusionnés proportionnellement au nombre d’anciens et de nouveaux documents. Cette fonctionnalité est encore expérimentale pour les flux d’entrée non stationnaires. Pour les entrées stationnaires (pas de dérive de sujet dans les nouveaux documents), en revanche, cela équivaut à la mise à jour en ligne de Matthew D. Hoffman, David M. Blei, Francis Bach: « Apprentissage en ligne pour l’allocation latente de Dirichlet NIPS ‘10”.et est garanti de converger pour toute désintégration en (0,5, 1,0). De plus, pour des corpus plus petits, un décalage croissant peut être bénéfique (voir Tableau 1 dans le même article).
Parameters
-
corpus (itérable de la liste de (int, float), facultatif) – Flux de vecteurs de document ou de matrice de forme clairsemée (num_documents, num_terms) utilisé pour mettre à jour le modèle.
-
chunksize(int, facultatif) – Nombre de documents à utiliser dans chaque bloc de formation.
-
decay(float, facultatif) –
Un nombre compris entre (0,5, 1] pour pondérer le pourcentage de la valeur lambda précédente oublié lors de l’examen de chaque nouveau document. Correspond à Kappa fromMatthew D. Hoffman, David M. Blei, Francis Bach: « Apprentissage en ligne pour l’Allocation latente de Dirichlet NIPS ’10”.
-
offset(float, facultatif) –
Hyper-paramètre qui contrôle combien nous allons ralentir les premières étapes les premières itérations.Correspond à Tau_0 de Matthew D. Hoffman, David M. Blei, Francis Bach: « Apprentissage en ligne pour l’Allocation latente de Dirichlet NIPS ’10”.
-
passes (int, optionnel) – Nombre de passes à travers le corpus pendant l’entraînement.
-
update_every(int, facultatif) – Nombre de documents à parcourir pour chaque mise à jour.Défini sur 0 pour l’apprentissage par lots, >1 pour l’apprentissage itératif en ligne.
-
eval_every(int, facultatif) – La perplexité du journal est estimée à chaque mise à jour. Définir ceci à un ralentit l’entraînement de ~ 2x.
-
itérations (int, facultatif) – Nombre maximal d’itérations dans le corpus lors de l’inférence de la distribution de sujet d’un corpus.
-
gamma_threshold(float, facultatif) – Modification minimale de la valeur des paramètres gamma pour continuer l’itération.
-
chunks_as_numpy(bool, facultatif) – Si chaque morceau passé à l’étape d’inférence doit être un numpy.ndarray ou pas. Numpy peut dans certains paramètres transformer les ID de terme en flottants, ceux-ci seront reconvertis en entiers en inférence, ce qui entraîne un coup d’aperformance. Pour le calcul distribué, il peut être souhaitable de conserver les morceaux comme numpy.ndarray.
update_alpha
(gammat, rho)¶
Mettre à jour les paramètres du Dirichlet avant sur les poids de sujet par document.
Paramètres
-
gammat(numpy.ndarray) – Paramètres de poids du sujet précédent.
-
rho (float) – Taux d’apprentissage.
Renvoie la séquence
des paramètres alpha.
Type de retour
numpy.ndarray
update_eta
(lambdat, rho)¶
Mettre à jour les paramètres du Dirichlet avant sur les poids de mots par sujet.
Paramètres
-
lambdat(numpy.ndarray) – Paramètres lambda précédents.
-
rho (float) – Taux d’apprentissage.
Renvoie
Les paramètres eta mis à jour.
Type de retour
numpy.ndarray
classgensim.models.ldamodel.
LdaState
(eta, shape, dtype=<class ‘numpy.float32’ >)¶
Bases: gensim.utils.SaveLoad
Encapsuler les informations pour le calcul distribué des objets LdaModel
.
Les objets de cette classe sont envoyés sur le réseau, essayez donc de les garder maigres pour réduire le trafic.
Paramètres
-
eta(numpy.ndarray) – Les probabilités antérieures attribuées à chaque terme.
-
shape(tuple de (int, int)) – Forme des statistiques suffisantes: (nombre de sujets à trouver, nombre de termes dans le vocabulaire).
-
dtype(type) – Remplace les types par défaut du tableau numpy.
add_lifecycle_event
(event_name, log_level= 20, ** event)¶
Ajoute un événement à l’attribut lifecycle_events de cet objet, et enregistre également l’événement de manière facultative à log_level.
Les événements sont des moments importants de la vie de l’objet, tels que « modèle créé”, « modèle enregistré”, « modèle chargé », etc.
L’attribut lifecycle_events est conservé dans les opérations save()
et load()
de l’objet. Cela n’a aucun impact sur l’utilisation du modèle, mais est utile lors du débogage et du support.
Définir soi-même.lifecycle_events =None pour désactiver ce comportement. Les appels à add_lifecycle_event() n’enregistreront pas les événements dans self.lifecycle_events alors.
Parameters
-
event_name(str) – Nom de l’événement. Peut être n’importe quelle étiquette, par ex. « créé », « stocké », etc.
-
event(dict) –
Mappage clé-valeur à ajouter à self.événements de cycle de vie. Devrait être sérialisable en JSON, alors restez simple.Peut être vide.
Cette méthode ajoutera automatiquement les valeurs clés suivantes à l’événement, vous n’avez donc pas à les spécifier :
-
datetime: la date actuelle &time
-
gensim: la version actuelle de Gensim
-
python: la version actuelle de Python
-
plate-forme : la plate-forme actuelle
-
événement: le nom de cet événement
-
-
log_level(int) – Enregistre également l’événement complet dict, au niveau de journal spécifié. Défini sur False pour ne pas se connecter du tout.
blend
(rhot, other, targetsize=None)¶
Fusionnez l’état actuel avec un autre en utilisant une moyenne pondérée pour les statistiques suffisantes.
Le nombre de documents est étiré dans les deux objets d’état, de sorte qu’ils sont d’ampleur comparable.Cette procédure correspond à la mise à jour du gradient stochastique de Hoffman et al. : « Apprentissage en ligne pour l’allocation de Dirichlet latente », voir équations (5) et (9).
Paramètres
-
rhot(float) – Poids de l’autre état dans la moyenne calculée. Une valeur de 0,0 signifie que d’autresest complètement ignoré. Une valeur de 1,0 signifie que self est complètement ignoré.
-
other(
LdaState
) – L’objet d’état avec lequel le courant sera fusionné. -
targetsize(int, facultatif) – Le nombre de documents vers lesquels étirer les deux états.
blend2
(rhot, other, targetsize=None)¶
Fusionnez l’état actuel avec un autre en utilisant une somme pondérée pour les statistiques suffisantes.
Contrairement à blend()
, les statistiques suffisantes ne sont pas scaledprior à l’agrégation.
Paramètres
-
rhot(float– – Inutilisé.
-
other(
LdaState
) – L’objet d’état avec lequel le courant sera fusionné. -
targetsize(int, facultatif) – Le nombre de documents vers lesquels étirer les deux états.
get_Elogbeta
()¶
Obtenez le journal des probabilités (postérieures) pour chaque sujet.
Renvoie
Les probabilités postérieures pour chaque sujet.
Type de retour
numpy.ndarray
get_lambda
()¶
Récupère les paramètres du postérieur sur les sujets, également appelés « les sujets ».
Renvoie
Les paramètres de la probabilité postérieure sur les sujets.
Type de retour
numpy.ndarray
classmethodload
(fname, *args, **kwargs)¶
Charge un état précédemment stocké à partir du disque.
Remplace load
en appliquant le paramètre dtype pour assurer la rétrocompatibilité.
Parameters
-
fname(str) – Chemin d’accès au fichier contenant l’objet requis.
-
args(object) – Paramètres positionnels à propager à la classe : ~gensim.utils.SaveLoad.load
-
kwargs(object) – Paramètres de mots clés à propager à la classe : ~gensim.utils.SaveLoad.load
Renvoie
L’état chargé à partir du fichier donné.
Type de retour
LdaState
merge
(other)¶
Fusionnez le résultat d’une étape E d’un nœud avec celui d’un autre nœud (résumant des statistiques suffisantes).
La fusion est triviale et après la fusion de tous les nœuds de cluster, nous obtenons le même résultat que si le calcul était exécuté sur un seul nœud (pas d’approximation).
Parameters
other(LdaState
) – L’objet d’état avec lequel le courant sera fusionné.
reset
()¶
Préparez l’état pour une nouvelle itération EM (réinitialisez les statistiques suffisantes).
save
(fname_or_handle, separately=None, sep_limit=10485760, ignore=frozenset({}), pickle_protocol=4)¶
Enregistrez l’objet dans un fichier.
Parameters
-
fname_or_handle–str ou file-like) – Chemin d’accès au fichier de sortie ou à l’objet de type fichier déjà ouvert. Si l’objet est un handle de fichier, aucune gestion de tableau spéciale ne sera effectuée, tous les attributs seront enregistrés dans le même fichier.
-
séparément (liste des str ou aucune, facultatif) –
Si aucune, détecte automatiquement un grand numpy/scipy.tableaux clairsemés dans l’objet en cours de stockage et les stocker dans des fichiers séparés. Cela évite les erreurs de mémoire pour les objets volumineux et permet également le mappage de mémoire des grandes baies pour un chargement et un partage efficaces des grandes baies dans la RAM entre plusieurs processus.
If list of str : stocke ces attributs dans des fichiers séparés. Le contrôle automatisé de la taille n’est pas effectué dans ce cas.
-
sep_limit(int, facultatif) – Ne stockez pas les tableaux plus petits que cela séparément. En octets.
-
ignore(frozenset de str, facultatif) – Attributs qui ne doivent pas être stockés du tout.
-
pickle_protocol(int, facultatif) – Numéro de protocole pour le cornichon.
Voir aussi
load()
Charger l’objet à partir du fichier.
gensim.models.ldamodel.
update_dir_prior
(prior, N, logphat, rho)¶
Mettre à jour un précédent donné en utilisant la méthode de Newton, décrite inJ. Huang : « Estimation du Maximum de Vraisemblance des paramètres de distribution de Dirichlet »”
Paramètres
-
prior (liste de float) – Le prior pour chaque résultat possible à l’itération précédente (à mettre à jour).
-
N(int) – Nombre d’observations.
-
logphat (liste des variables flottantes) – Log des probabilités pour l’estimation courante, également appelées « statistiques suffisantes observées”.
-
rho (float) – Taux d’apprentissage.
Renvoie
La mise à jour précédente.
Type de retour
liste des flotteurs