tomotopy ist eine Abkürzung für TOpic MOdeling TOol, eine Python-Bibliothek, die hauptsächlich LDA (Latent Dirichlet Allocation) und ihre abgeleiteten Algorithmen verarbeiten kann. ..
Es ist einfacher zu handhaben als die Bibliothek gensim, die ähnliche Funktionen hat, und die Berechnung ist schneller, da sie in C ++ erstellt wurde.
Setzen Sie es einfach mit pip ein.
pip install tomotopy
Verwenden Sie als Beispiel den folgenden Datensatz aus dem Gensim-Tutorial.
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
Bei Verwendung von LDA mit Tomotopie ist dies wie folgt.
Verwenden Sie den Datensatz nach der Vorverarbeitung (die Vorverarbeitung lautet this. Gleich wie Kernkonzepte-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']
]
#Modellinitialisierung
model = tp.LDAModel(k=2, seed=1) #k ist die Anzahl der Themen
#Korpus erstellen
for text in texts:
model.add_doc(text)
#Lernen
model.train(iter=100)
#Extrahieren der Wortverteilung eines Themas
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)]
"""
Das meiste, was Sie tun möchten, wenn Sie LDA verwenden möchten, kann einfach durch Initialisieren des Modells und Festlegen der Argumente der Lernfunktion erledigt werden.
(Parallelisierung, TF-IDF, Festlegen der oberen und unteren Grenzen der Wortfrequenz und der Dokumentfrequenz usw.)
Varianteninferenz wird in Gensim verwendet, aber die Probenahme soll genauer sein.
Der Nachteil der Probenahme ist, dass es Zeit braucht,
Da Tomotopy in C ++ erstellt wurde und leicht parallelisiert werden kann, ist es viel schneller als MALLET.
--LDA-Derivate sind verfügbar.
Folgendes ist verfügbar:
LLDAModel
)PLDAModel
)SLDAModel
)DMRModel
)GDMRModel
)HDPModel
)HLDAModel
)MGLDAModel
)PAModel
)HPAModel
)CTModel
)DTModel
)―― Es ist möglicherweise nicht möglich, den juckenden Ort zu erreichen.
Vielleicht, weil Tomotopy auf Benutzerfreundlichkeit spezialisiert ist, werde ich manchmal gefragt: "Nun, kann ich das nicht tun?"
Zum Beispiel
~~ Der verarbeitete Korpus kann nicht wiederverwendet werden (Sie müssen jedes Mal, wenn Sie lernen, einen Korpus erstellen). ~~ Wenn Sie genau hinschauen, können Sie dies anscheinend mit einer Klasse namens tomotopy.utils.Corpus tun. Als ich es versuchte, war es jedoch eine enttäuschende Spezifikation, dass die Kosten in Bezug auf Zeit und RAM hoch waren.
Es gibt keine Möglichkeit, RAM zu speichern.
(Nun, wenn keiner von beiden ein Datensatz von 10 Millionen ist, ist mir das egal.)
Mit der Tomotopie können Sie LDA-Modelle durch einfaches Abtasten lernen.
Um ehrlich zu sein, kann ich nicht mehr zu Gensim zurückkehren.
Recommended Posts