[PYTHON] Utilisons tomotopy au lieu de gensim

Qu'est-ce que la tomotopie?

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 ++.

Méthode d'introduction

Mettez-le simplement avec pip.

pip install tomotopy

Comment utiliser

À 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)]
"""

Caractéristiques de tomtopy

Bon point

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:

mauvais endroit

――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

(Eh bien, si ni l'un ni l'autre n'est un ensemble de données de 10 millions, je m'en fiche.)

Résumé

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

Utilisons tomotopy au lieu de gensim
Utilisons usercustomize.py au lieu de sitecustomize.py
R: Utilisez le japonais au lieu du japonais dans le script
Utilisons pytube
Utilisons différentes versions de SQLite3 de Python3!
Utilisation pratique d'ipython
Utilisons l'API de la fenêtre générale des statistiques gouvernementales (e-Stat)
Utilisez urlparse.urljoin au lieu de os.path.join pour les jointures d'URL Python
Utilisation gracieuse de MySQLdb
Utilisons la version Python du module API Confluence.
Utilisons les données ouvertes de "Mamebus" en Python
EP 7 Utiliser les compréhensions de liste au lieu de carte et de filtre
Utilisons rapidement l'expression distribuée des mots avec fastText!
Voyons comment utiliser def en python
Utilisons Python Janome facilement
[gensim] Comment utiliser Doc2Vec
Visualisons GraphConvModel de DeepChem
Utilisons MemSQL Vol.14: Practice 7
Utilisation et intégration de "Shodan"
Utilisons MemSQL Vol.13: Practice 6