tomotopy est une abréviation de TOpic MOdeling TOol, une bibliothèque Python qui peut principalement gérer LDA (Latent Dirichlet Allocation) et ses algorithmes dérivés. ..
Elle est plus facile à gérer que la bibliothèque gensim, qui a des fonctions similaires, et est plus rapide à calculer car elle est construite en C ++.
Mettez-le simplement avec pip.
pip install tomotopy
À titre d'exemple, utilisez le jeu de données suivant du didacticiel gensim.
Human machine interface for lab abc computer applications
A survey of user opinion of computer system response time
The EPS user interface management system
System and human system engineering testing of EPS
Relation of user perceived response time to error measurement
The generation of random binary unordered trees
The intersection graph of paths in trees
Graph minors IV Widths of trees and well quasi ordering
Graph minors A survey
Lors de l'utilisation de LDA avec tomotopie, ce sera comme suit.
Utilisez l'ensemble de données après le prétraitement (le prétraitement est [this](https://radimrehurek.com/gensim/auto_examples/core/run_core_concepts.html#sphx-glr-auto-examples-core-run-] Identique à core-concepts-py)).
import tomotopy as tp
from pprint import pprint
texts = [
['human', 'interface', 'computer'],
['survey', 'user', 'computer', 'system', 'response', 'time'],
['eps', 'user', 'interface', 'system'],
['system', 'human', 'system', 'eps'],
['user', 'response', 'time'],
['trees'],
['graph', 'trees'],
['graph', 'minors', 'trees'],
['graph', 'minors', 'survey']
]
#Initialisation du modèle
model = tp.LDAModel(k=2, seed=1) #k est le nombre de sujets
#Créer un corpus
for text in texts:
model.add_doc(text)
#Apprentissage
model.train(iter=100)
#Extraire la distribution de mots d'un sujet
for k in range(model.k):
print(f"Topic {k}")
pprint(model.get_topic_words(k, top_n=5))
"""output
Topic 0
[('system', 0.20972803235054016),
('user', 0.15742677450180054),
('human', 0.10512551665306091),
('interface', 0.10512551665306091),
('computer', 0.10512551665306091)]
Topic 1
[('trees', 0.2974308431148529),
('graph', 0.2974308431148529),
('survey', 0.1986166089773178),
('minors', 0.1986166089773178),
('system', 0.0009881423320621252)]
"""
La plupart de ce que vous voulez faire lorsque vous souhaitez utiliser LDA peut être facilement réalisé en initialisant le modèle et en définissant les arguments de la fonction d'apprentissage.
(Parallélisation, TF-IDF, définition des limites supérieure et inférieure de la fréquence des mots et de la fréquence des documents, etc.)
L'inférence de variante est utilisée dans les gensim, mais on dit que l'échantillonnage est plus précis.
L'inconvénient de l'échantillonnage est que cela prend du temps,
Puisque tomotopy est construit en C ++ et peut être facilement parallélisé, il est beaucoup plus rapide que MALLET.
Les éléments suivants sont disponibles:
LLDAModel
)PLDAModel
)SLDAModel
)DMRModel
)GDMRModel
)HDPModel
)HLDAModel
)MGLDAModel
)PAModel
)HPAModel
)CTModel
)DTModel
)――Il peut ne pas être possible d'atteindre l'endroit qui démange.
Peut-être parce que tomotopy se spécialise dans la facilité d'utilisation, il y a des moments où l'on me demande: "Eh bien, je ne peux pas faire ça?"
Par exemple
~~ Le corpus traité ne peut pas être réutilisé (vous devez créer un corpus à chaque fois que vous apprenez). ~~ Si vous regardez de plus près, il semble que vous puissiez le faire en utilisant une classe appelée tomotopy.utils.Corpus. Cependant, quand je l'ai essayé, c'était une spécification décevante que le coût était élevé en termes de temps et de RAM.
Il n'y a aucun moyen d'économiser de la RAM.
(Eh bien, si ni l'un ni l'autre n'est un ensemble de données de 10 millions, je m'en fiche.)
Avec tomotopy, vous pouvez apprendre les modèles LDA en échantillonnant très facilement.
Pour être honnête, je ne peux plus revenir à gensim.
Recommended Posts