Tomotopie
Englisch , 한국어.
Was ist Tomotopy?
Tomotopy ist eine Python-Erweiterung von Tomoto (Themenmodelling-Tool), eine Gibbs-Sampling-basierte Themenmodellbibliothek, die in C ++ geschrieben wurde. Es verwendet eine Vektorisierung moderner CPUs zur Maximierung der Geschwindigkeit. Die aktuelle Version von Tomoto unterstützt mehrere wichtige Themenmodelle, einschließlich
- Latent Dirichlet Allocation (Tomotopy.Ldamodel)
- Bezeichnete LDA (tomotopy.lldamodel)
- Teilweise markierte LDA (Tomotopy.Pldamodel)
- Beaufsichtigte LDA (Tomotopy.Sldamodel)
- Multinomiale Regression von Dirichlet (tomotopy.dmrmodel)
- Generalisierte Dirichlet Multinomiale Regression (Tomotopy.gdmrmodel)
- Hierarchischer Dirichlet -Prozess (tomotopy.hdpmodel)
- Hierarchische LDA (Tomotopy.hldamodel)
- Multi -Grain -LDA (Tomotopy.MGLDAMODEL)
- Pachinko Allocation (Tomotopy.Pamodel)
- Hierarchische PA (Tomotopy.hpamodel)
- Korrelierter Themenmodell (Tomotopy.Ctmodel)
- Dynamisches Themenmodell (tomotopy.dtmodel)
- Pseudo-dokumentbasiertes Themenmodell (tomotopy.ptmodel).
Bitte besuchen Sie https://bab2min.github.io/tomotopy, um weitere Informationen anzuzeigen.
Erste Schritte
Sie können Tomotopy einfach mit PIP installieren. (https://pypi.org/project/tomotopy/)
$ pip install -upgrade pip
$ pip installieren Sie Tomotopy
Die unterstützten OS- und Python -Versionen sind:
- Linux (x86-64) mit Python> = 3,6
- macOS> = 10,13 mit Python> = 3,6
- Windows 7 oder höher (x86, x86-64) mit Python> = 3,6
- Anderes Betriebssystem mit Python> = 3.6: Kompilierung aus Quellcode erforderlich (mit C ++ 14 kompatibler Compiler)
Nach der Installation können Sie die Tomotopie mit nur importieren.
Tomotopie als TP importieren
print (tp.isa) # druckt 'avx2', 'avx', 'sse2' oder 'none'
Derzeit kann Tomotopy AVX2-, AVX- oder SSE2 -SIMD -Befehlssatz zur Maximierung der Leistung ausnutzen. Wenn das Paket importiert wird, werden die verfügbaren Anweisungssätze überprüft und die beste Option ausgewählt. Wenn TP.ISA keine erzählt, kann es lange dauern. Da die meisten modernen Intel- oder AMD -CPUs den SIMD -Anweisungssatz anbieten, könnte die SIMD -Beschleunigung eine große Verbesserung zeigen.
Hier ist ein Beispielcode für ein einfaches LDA -Training von Texten aus der Datei 'sample.txt'.
Tomotopie als TP importieren
mdl = tp.ldamodel (k = 20)
Für Zeile in Open ('sample.txt'):
mdl.add_doc (line.strip (). split ())
für i im Bereich (0, 100, 10):
Mdl.Train (10)
print ('iteration: {} tlog-likelihood: {}'. Format (i, mdl.ll_per_word))
für k in Reichweite (MDL.K):
print ('Top 10 Wörter des Themas #{}'. Format (k))
print (mdl.get_topic_words (k, top_n = 10))
mdl.summary ()
Leistung der Tomotopie
Tomotopy verwendet zusammengebrochene Gibbs-Sampling (CGS), um die Verteilung der Themen und die Verteilung von Wörtern zu schließen. Im Allgemeinen konvergiert CGS langsamer als Variationsbayes (VB), die Ldamodel von Gensim verwendet, aber seine Iteration kann viel schneller berechnet werden. Darüber hinaus kann Tomotopy Multicore -CPUs mit einem SIMD -Befehlssatz nutzen, was zu schnelleren Iterationen führen kann.
Das folgende Diagramm zeigt den Vergleich der Laufzeit des LDA -Modells zwischen Tomotopie und Gensim. Die Eingabedaten bestehen aus 1000 zufälligen Dokumenten aus englischer Wikipedia mit 1.506.966 Wörtern (ca. 10,1 MB). Tomotopy trainiert 200 Iterationen und Gensim -Züge 10 Iterationen.
Leistung in Intel i5-6600, x86-64 (4 Kerne)
Leistung in Intel Xeon E5-2620 V4, X86-64 (8 Kerne, 16 Fäden)
Obwohl die Tomotopie 20 -mal mehr iterierte, betrug die Gesamtlaufzeit 5 ~ 10 -mal schneller als Gensim. Und es liefert ein stabiles Ergebnis.
Es ist schwierig, CGS und VB direkt zu vergleichen, da es sich um totale Techniken handelt. Aus praktischer Sicht können wir jedoch die Geschwindigkeit und das Ergebnis zwischen ihnen vergleichen. Das folgende Diagramm zeigt die Protokoll-Likelihood pro Wort des Ergebniss von zwei Modellen.
Der SIMD -Anweisungssatz wirkt sich hervorragend auf die Leistung aus. Im Folgenden finden Sie einen Vergleich zwischen SIMD -Befehlssätzen.
Glücklicherweise bietet der größte Teil der jüngsten X86-64-CPUs einen AVX2-Unterrichtssatz an, sodass wir die Leistung von AVX2 genießen können.
Modell speichern und laden
Tomotopy bietet eine Speicher- und Lademethode für jede Themenmodellklasse, sodass Sie das Modell in der Datei speichern können, wann immer Sie möchten, und es aus der Datei neu laden.
Tomotopie als TP importieren
mdl = tp.hdpmodel ())
Für Zeile in Open ('sample.txt'):
mdl.add_doc (line.strip (). split ())
für i im Bereich (0, 100, 10):
Mdl.Train (10)
print ('iteration: {} tlog-likelihood: {}'. Format (i, mdl.ll_per_word))
# in der Datei speichern
mdl.save ('sample_hdp_model.bin')
# aus der Datei laden
mdl = tp.hdpmodel.load ('sample_hdp_model.bin')
für k in Reichweite (MDL.K):
Wenn nicht mdl.is_live_topic (k): Fortsetzung
print ('Top 10 Wörter des Themas #{}'. Format (k))
print (mdl.get_topic_words (k, top_n = 10))
# Das gespeicherte Modell ist HDP -Modell,
# Wenn Sie es also nach LDA -Modell laden, wird eine Ausnahme angelegt
mdl = tp.ldamodel.load ('sample_hdp_model.bin')
Wenn Sie das Modell aus einer Datei laden, sollte ein Modelltyp in der Datei mit der Methodenklasse übereinstimmen.
Weitere Informationen finden Sie unter tomotopy.ldamodel.save und tomotopy.ldamodel.load -Methoden.
Interaktiver Modellbieter
Interactive_Model_viewer_demo.mp4
Seit v0.13.0 können Sie das Ergebnis der Modellierung mit dem interaktiven Betrachter sehen.
Tomotopie als TP importieren
Modell = tp.ldamodel (...)
# ... einige Trainingscodes ...
tp.viewer.open_viewer (Modell, Host = "localhost", port = 9999)
# Und öffnen Sie http: // localhost: 9999 in Ihrem Webbrowser!
Wenn Sie eine gespeicherte Modelldatei haben, können Sie auch die folgende Befehlszeile verwenden.
python -m tomotopy.viewer a_trainined_model.bin -Host localhost --port 9999
Weitere Informationen finden Sie unter Tomotopy.Viewer -Modul.
Dokumente im Modell und außerhalb des Modells
Wir können das Themenmodell für zwei Hauptzwecke verwenden. Das grundlegende Grundstück besteht darin, Themen aus einer Reihe von Dokumenten als Ergebnis eines geschulten Modells zu entdecken, und je fortgeschrittenerer Themenverteilungen für unsichtbare Dokumente mithilfe von geschultem Modell abschließen.
Wir haben das Dokument im früheren Zweck (für das Modelltraining verwendet) als Dokument im Modell und das Dokument im späteren Zweck (unsichtbares Dokument während des Trainings) als Dokument aus dem Modell bezeichnet.
In der Tomotopie werden diese beiden verschiedenen Arten von Dokument unterschiedlich erzeugt. Ein Dokument im Modell kann von tomotopy.ldamodel.add_doc -Methode erstellt werden. add_doc kann vor tomotopy.ldamodel.train gestartet werden. Mit anderen Worten, nach dem Aufrufen von Zug kann add_doc ein Dokument in das Modell nicht hinzufügen, da der für das Training verwendete Dokument festgelegt ist.
Um die Instanz des erstellten Dokuments zu erwerben, sollten Sie tomotopy.ldamodel.docs wie folgt verwenden:
mdl = tp.ldamodel (k = 20)
idx = mdl.add_doc (Wörter)
Wenn IDX <0: RunTimeError erhöhen ("" DOC fehlgeschlagen "nicht hinzugefügt")
doc_inst = mdl.docs [idx]
# doc_inst ist eine Instanz des hinzugefügten Dokuments
Ein Dokument aus dem Modell wird von tomotopy.ldamodel.make_doc -Methode generiert. make_doc kann erst aufgerufen werden, nachdem der Zug beginnt. Wenn Sie make_doc verwenden, bevor der für das Training verwendete Dokument festgelegt wurde, erhalten Sie möglicherweise falsche Ergebnisse. Da MAKE_DOC die Instanz direkt zurückgibt, können Sie den Rückgabewert für andere Manipulationen verwenden.
mdl = tp.ldamodel (k = 20)
# add_doc ...
Mdl.Train (100)
doc_inst = mdl.make_doc (unseen_doc) # doc_inst ist eine Instanz des unsichtbaren Dokuments
Schlussfolgerung für unsichtbare Dokumente
Wenn ein neues Dokument von tomotopy.ldamodel.make_doc erstellt wird, kann seine Themenverteilung durch das Modell abgeleitet werden. Die Inferenz für ein unsichtbares Dokument sollte unter Verwendung von Tomotopy.Ldamodel.infer -Methode durchgeführt werden.
mdl = tp.ldamodel (k = 20)
# add_doc ...
Mdl.Train (100)
doc_inst = mdl.make_doc (unseen_doc)
topic_dist, ll = mdl.infer (doc_inst)
print ("Themenverteilung für unsichtbare Dokumente:", topic_dist)
print ("Log-Likelihood of Inference:", LL)
Die Abschlussmethode kann nur auf eine Instanz der Tomotopie oder eine Liste von Tomotopy -Dokument -Instanzen schließen. Weitere Informationen finden Sie unter tomotopy.ldamodel.infer.
Korpus und Transformation
Jedes Themenmodell in Tomotopy hat einen eigenen internen Dokumenttyp. Ein Dokument kann über die add_doc -Methode jedes Modells für jedes Modell für jedes Modell geeignet sein und hinzugefügt werden. Der Versuch, die gleiche Liste von Dokumenten zu verschiedenen Modellen hinzuzufügen, wird jedoch ziemlich unpraktisch, da Add_DOC für jedes Modell dieselbe Liste von Dokumenten auffordert. Somit liefert Tomotopy Tomotopy.utils.Corpus -Klasse, die eine Liste von Dokumenten enthält. tomotopy.utils.corpus kann in ein beliebiges Modell eingefügt werden, indem als Argumentkorpus an __init__ oder add_corpus -Methode jedes Modells übergeht. Das Einsetzen von Tomotopy.utils.Corpus hat also den gleichen Effekt, um Dokumente des Corpus zu fördern.
Einige Themenmodelle benötigen unterschiedliche Daten für seine Dokumente. Beispielsweise erfordert Tomotopy.dmrmodel Argumentmetadaten im STR -Typ, aber Tomotopy.Pldamodel erfordert Argumentbezeichnungen im Typ List [STR]. Da Tomotopy.utils.corpus einen unabhängigen Satz von Dokumenten enthält, anstatt an ein bestimmtes Themenmodell gebunden zu werden, können Datentypen, die von einem Themenmodell gefordert werden, inkonsistent sein, wenn ein Korpus in dieses Themenmodell hinzugefügt wird. In diesem Fall können verschiedene Daten mithilfe der Argument -Transformation in das Anpassung des Zielthemes transformiert werden. Weitere Informationen finden Sie im folgenden Code:
vom Tomotopy importieren DMRModel
von tomotopy.utils Import Corpus
corpus = corpus ()
corpus.add_doc ("abcde" .split (), a_data = 1)
corpus.add_doc ("efghi" .split (), a_data = 2)
corpus.add_doc ("ijklm" .split (), a_data = 3)
Modell = DMRModel (k = 10)
model.add_corpus (corpus)
# Sie verlieren `a_data` Feld in` corpus`,
# und `metadata`, dass` dmrmodel` erfordert, ist mit dem Standardwert leer.
Assert Modell.docs [0] .Metadata == '' '
Assert Modell.docs [1] .Metadata == '' '
Assert Modell.docs [2] .Metadata == '' ''
Def Transform_A_DATA_TO_METADATA (MISC: DICT):
return {'metadata': str (misc ['a_data'])}
# Diese Funktion verwandelt `a_data` in` metadata`
Modell = DMRModel (k = 10)
model.add_corpus (corpus, transform = transform_a_data_to_metadata)
# Jetzt docs in `model` hat nicht default` metadata`, die aus dem Feld `a_data` generiert werden.
Assert Modell.docs [0] .Metadata == '1'
Assert Modell.docs [1] .Metadata == '2'
Assert Modell.docs [2] .Metadata == '3'
Parallele Abtastalgorithmen
Seit Version 0.5.0 ermöglicht Tomotopy einen Parallelismus -Algorithmus. Der in Versionen vor 0.4.2 bereitgestellte Algorithmus ist Copy_merge, der für alle Themenmodelle bereitgestellt wird. Die neue Algorithmus-Partition, die seit 0.5.0 erhältlich ist, macht das Training im Allgemeinen schneller und speichereffizienter, ist jedoch bei nicht allen Themenmodellen verfügbar.
Das folgende Diagramm zeigt den Geschwindigkeitsunterschied zwischen den beiden Algorithmen basierend auf der Anzahl der Themen und der Anzahl der Arbeitnehmer.
Leistung nach Version
Leistungsänderungen nach der Version werden im folgenden Diagramm angezeigt. Die Zeit, die zum Ausführen des LDA -Modellzugs mit 1000 Iteration benötigt wird, wurde gemessen. (DOCS: 11314, VOCAB: 60382, Wörter: 2364724, Intel Xeon Gold 5120 @2,2 GHz)
Prippenthemen mit Word -Priors
Seit Version 0.6.0 wurde eine neue Methode tomotopy.ldamodel.set_word_prior hinzugefügt. Dadurch können Sie die Wörter für jedes Thema steuern. Zum Beispiel können wir das Gewicht des Wortes "Kirche" in Thema 0 und das Gewicht in den restlichen Themen auf 0,1 festlegen, indem wir Codes folgen. Dies bedeutet, dass die Wahrscheinlichkeit, dass das Wort "Kirche" dem Thema 0 zugewiesen ist, 10 -mal höher ist als die Wahrscheinlichkeit, einem anderen Thema zugeordnet zu werden. Daher wird der größte Teil der Kirche zu Thema 0 zugeordnet, daher enthält Thema 0 viele Wörter, die sich auf die „Kirche“ beziehen. Auf diese Weise können einige Themen auf eine bestimmte Themennummer platziert werden.
Tomotopie als TP importieren
mdl = tp.ldamodel (k = 20)
# Dokumente in `mdl` hinzufügen
# Word Prior festlegen
mdl.set_word_prior ('Church', [1.0 Wenn k == 0 sonst 0.1 für k in Bereich (20)]])
Weitere Informationen finden Sie unter word_prior_example in Beispiel.py.
Beispiele
Sie finden einen Beispielpython -Code der Tomotopie unter https://github.com/bab2min/tomotopy/blob/main/examples/.
Sie können die Datendatei auch im Beispielcode unter https://drive.google.com/file/d/18opnijd4iwpyyz2o7pqopyetakexa71j/view erhalten.
Lizenz
Die Tomotopie ist nach den Bedingungen der MIT -Lizenz lizenziert, was bedeutet, dass Sie sie für angemessene Zwecke verwenden und in vollem Umfang an allen von Ihnen erstellten Dokumentationen bleiben können.
Geschichte
- 0,13,0 (2024-08-05)
- Neue Funktionen
- Hauptmerkmale des Themenmodell -Viewers Tomotopy.viewer.open_viewer () sind jetzt bereit.
- tomotopy.ldamodel.get_hash () wird hinzugefügt. Sie können den 128 -Bit -Hash -Wert des Modells erhalten.
- Fügen Sie tomotopy.utils.Simpletokenizer ein Argument ngram_list hinzu.
- Fehlerbehebungen
- Das behobene inkonsistente Spans -Fehler nach Corpus.concat_ngrams wird aufgerufen.
- Optimierte den Engpass von tomotopy.ldamodel.load () und tomotopy.ldamodel.save () und verbesserte seine Geschwindigkeit mehr als 10 Mal.
- 0,12,7 (2023-12-19)
- Neue Funktionen
- Topic Model Viewer Tomotopy.viewer.open_viewer () hinzugefügt ()
- Optimierte die Leistung von tomotopy.utils.corpus.process ()
- Fehlerbehebungen
- Document.span gibt nun die Bereiche in Charaktereinheit zurück, nicht in der Byte -Einheit.
- 0,12,6 (2023-12-11)
- Neue Funktionen
- Tomotopy.ldamodel.Train und Tomotopy.Ldamodel.set_Word_Prior wurden einige Convenience -Funktionen hinzugefügt.
- Ldamodel.Train hat jetzt einen neuen Argumente -Rückruf, Callback_interval und Show_Progres, um den Trainingsfortschritt zu überwachen.
- Ldamodel.set_word_prior kann jetzt dict [int, float] type als Argument vor dem Argument akzeptieren.
- 0,12,5 (2023-08-03)
- Neue Funktionen
- Unterstützung für Linux ARM64 -Architektur hinzugefügt.
- 0,12,4 (2023-01-22)
- Neue Funktionen
- Unterstützung für die MacOS ARM64 -Architektur hinzugefügt.
- Fehlerbehebungen
- Ein Problem behoben, bei dem tomotopy.document.get_sub_topic_dist () eine schlechte Argument -Ausnahme aufwirft.
- Es wurde ein Problem behoben, bei dem Ausnahmeerhöhung manchmal Abstürze verursacht.
- 0,12,3 (2022-07-19)
- Neue Funktionen
- Wenn Sie nun ein leeres Dokument mit tomotopy.ldamodel.add_doc () einfügen, ignoriert es nur, anstatt eine Ausnahme zu erhöhen. Wenn das neu hinzugefügte Argument Ignore_Empty_Words auf False eingestellt ist, wird eine Ausnahme wie zuvor erhöht.
- tomotopy.hdpmodel.purge_dead_topics () Methode wird hinzugefügt, um nicht-lebens-Themen aus dem Modell zu entfernen.
- Fehlerbehebungen
- Es wurde ein Problem behoben, das verhindert, dass benutzerdefinierte Werte für NUSQ in tomotopy.sldamodel (von @jucendrero) festgelegt werden.
- Es wurde ein Problem behoben, bei dem Tomotopy.utils.coherence für Tomotopy.dtmodel nicht funktionierte.
- Es wurde ein Problem behoben, das beim Aufrufen von make_dic () häufig abgestürzt war, bevor der Zug () angerufen wurde.
- Löste das Problem auf, dass die Ergebnisse der Tomotopie.dmrmodel und tomotopy.gdmrmodel unterschiedlich sind, selbst wenn der Samen festgelegt ist.
- Der Parameteroptimierungsprozess der Tomotopie.dmrmodel und tomotopy.gdmrmodel wurde verbessert.
- Es wurde ein Problem behoben, das manchmal abgestürzt war, als er tomotopy.ptmodel.copy () aufrief.
- 0,12,2 (2021-09-06)
- Ein Problem, bei dem convert_to_lda von tomotopy.hdpmodel mit min_cf> 0, min_df> 0 oder rm_top> 0 verursacht wurde, dass ein Absturz behoben wurde.
- Ein neues Argument von_pseudo_doc wird zu tomotopy.document.get_topics und tomotopy.document.get_topic_dist hinzugefügt. Dieses Argument gilt nur für Dokumente von ptmodel, sondern ermöglicht es, eine Quelle für die Berechnung der Themenverteilung zu steuern.
- Ein Standardwert für Argument P von Tomotopy.ptmodel wurde geändert. Der neue Standardwert ist K * 10.
- Die Verwendung von Dokumenten, die von make_doc ohne Aufrufen von Inferen generiert wurden, verursachen keinen Absturz mehr, sondern nur Warnmeldungen.
- Ein Problem, bei dem der interne C ++ - Code in der CLANG C ++ 17 -Umgebung nicht kompiliert wird.
- 0,12.1 (2021-06-20)
- Ein Problem, bei dem tomotopy.ldamodel.set_word_prior () ein Absturz behoben wurde.
- Jetzt tomotopy.ldamodel.Plexität und tomotopy.ldamodel.ll_per_word geben den genauen Wert zurück, wenn Termgewicht nicht eins ist.
- tomotopy.ldamodel.USED_VOCAB_WEIGHTED_FREQ wurde hinzugefügt, was termgewichtete Wörterfrequenzen zurückgibt.
- Jetzt zeigt Tomotopy.ldamodel.summary () nicht nur die Entropie von Wörtern, sondern auch die Entropie von termgewichteten Wörtern.
- 0,12,0 (2021-04-26)
- Jetzt tomotopy.dmrmodel und tomotopy.gdmrmodel unterstützen mehrere Werte von metadata (siehe https://github.com/bab2min/tomotopy/blob/main/examples/dmr_multi_label.py)
- Die Leistung von tomotopy.gdmrmodel wurde verbessert.
- Für alle Themenmodelle wurde eine Kopie () -Methode hinzugefügt, um eine tiefe Kopie durchzuführen.
- Ein Problem wurde behoben, bei dem Wörter, die vom Training ausgeschlossen sind (von min_cf, min_df), eine falsche Themen -ID haben. Jetzt haben alle ausgeschlossenen Wörter -1 als Themen -ID.
- Jetzt folgen alle Ausnahmen und Warnungen, die durch Tomotopie erzeugt werden, Standard -Python -Typen.
- Compiler -Anforderungen wurden auf C ++ 14 erhöht.
- 0,11.1 (2021-03-28)
- Ein kritischer Fehler von asymmetrischen Alphas wurde behoben. Aufgrund dieses Fehlers wurde Version 0.11.0 aus Releases entfernt.
- 0,11.0 (2021-03-26) (entfernt)
- Ein neues Themenmodell -Tomotopy.Ptmodel für kurze Texte wurde in das Paket hinzugefügt.
- Ein Problem wurde behoben, wenn tomotopy.hdpmodel.infer manchmal einen Segmentierungsfehler verursacht.
- Eine Fehlanpassung der Numpy -API -Version wurde behoben.
- Jetzt werden asymmetrische Dokumentenpriors unterstützt.
- Das Serialisieren von Themenmodellen zu Bytes im Speicher wird unterstützt.
- Eine Argumentnormalisierung wurde zu get_topic_dist (), get_topic_word_dist () und get_sub_topic_dist () zur Kontrolle der Normalisierung der Ergebnisse hinzugefügt.
- Jetzt tomotopy.dmrmodel.lambdas und tomotopy.dmrmodel.alpha geben korrekte Werte.
- Kategorische Metadatenunterstützung für tomotopy.gdmrmodel wurden hinzugefügt (siehe https://github.com/bab2min/tomotopy/blob/main/examples/gdmr_both_categorical_and_numerical.py).
- Die Unterstützung von Python3.5 wurde fallen gelassen.
- 0,10,2 (2021-02-16)
- Ein Problem wurde behoben, wenn tomotopy.ctmodel.train mit großem k fehlschlägt.
- Ein Problem wurde behoben, wenn Tomotopy.utils.Corpus ihre UID -Werte verliert.
- 0,10,1 (2021-02-14)
- Ein Problem wurde behoben, wenn tomotopy.utils.corpus.extract_ngrams mit leerem Eingang fährt.
- Ein Problem wurde behoben, wenn Tomotopy.ldamodel.infer die Ausnahme mit gültigen Eingaben ausschüttet.
- Ein Problem wurde behoben, wenn Tomotopy.hldamodel.infer eine falsche Tomotopy.Document.Path erzeugt.
- Da ein neuer Parameter Freeze_topics für tomotopy.hldamodel.train hinzugefügt wurde, können Sie steuern, ob Sie beim Training ein neues Thema erstellen oder nicht.
- 0,10.0 (2020-12-19)
- Die Grenzfläche von tomotopy.utils.corpus und von tomotopy.ldamodel.docs war einheitlich. Jetzt können Sie auf die gleiche Weise in Corpus auf das Dokument zugreifen.
- __getItem__ von tomotopy.utils.corpus wurde verbessert. Nicht nur die Indizierung durch int, sondern auch durch iterable [int], wird das Schneiden unterstützt. Auch die Indizierung durch UID wird unterstützt.
- Neue Methoden tomotopy.utils.corpus.exract_ngrams und tomotopy.utils.corpus.concat_ngrams wurden hinzugefügt. Sie extrahieren n-Gramm-Kollokationen mit PMI und verkettet sie zu einzelner Wörter.
- Eine neue Methode tomotopy.ldamodel.add_corpus wurde hinzugefügt, und Tomotopy.ldamodel.in kann Corpus als Eingabe empfangen.
- Eine neue Modul -Tomotopy.Coherence wurde hinzugefügt. Es bietet den Weg zur Berechnung der Kohärenz des Modells.
- Ein Paramter window_size wurde zu tomotopy.label.foreLevance hinzugefügt.
- Ein Problem wurde behoben, wo NAN häufig beim Training tomotopy.hdpmodel auftritt.
- Jetzt wird Python3.9 unterstützt.
- Eine Abhängigkeit von PY-CPUINFO wurde entfernt und die Initialisierung des Moduls wurde verbessert.
- 0.9.1 (2020-08-08)
- Speicherlecks von Version 0.9.0 wurde behoben.
- tomotopy.ctmodel.summary () wurde festgelegt.
- 0.9.0 (2020-08-04)
- Die Tomotopy.Ldamodel.Summary () -Methode, die die menschlich-lesbare Zusammenfassung des Modells druckt, wurde hinzugefügt.
- Der Zufallszahlengenerator des Pakets wurde durch Eurenrand ersetzt. Es beschleunigt die Zufallszahlenerzeugung und löst den Ergebnisunterschied zwischen Plattformen.
- Aufgrund von oben, selbst wenn der Saatgut gleich ist, kann sich das Modelltrainingsergebnis von der Version vor 0.9.0 unterscheiden.
- Ein Trainingsfehler in tomotopy.hdpmodel behoben.
- tomotopy.dmrmodel.alpha zeigt nun Dirichlet vor der Verteilung des Pro-Dokuments durch Metadaten.
- tomotopy.dtmodel.get_count_by_topics () wurde modifiziert, um ein 2-dimensionales nDarray zurückzugeben.
- tomotopy.dtmodel.alpha wurde modifiziert, um den gleichen Wert wie tomotopy.dtmodel.get_alpha () zurückzugeben.
- Es wurde ein Problem behoben, bei dem der Metadatenwert für das Dokument von tomotopy.gdmrmodel nicht erhalten werden konnte.
- tomotopy.hldamodel.alpha zeigt jetzt das Dirichlet vor der Tiefenverteilung pro Dokument.
- tomotopy.ldamodel.global_step wurde hinzugefügt.
- tomotopy.mgldamodel.get_count_by_topics () gibt nun die Wortzahl sowohl für globale als auch für lokale Themen zurück.
- tomotopy.pamodel.alpha, tomotopy.pamodel.subalpha und tomotopy.pamodel.get_count_by_super_topic () wurden hinzugefügt.
- 0,8,2 (2020-07-14)
- Neue Eigenschaften tomotopy.dtmodel.num_TimePoints und tomotopy.dtmodel.num_docs_by_TimePoint wurden hinzugefügt.
- Ein Fehler, der mit der unterschiedlichen Plattform unterschiedliche Ergebnisse verursacht, auch wenn die Samen gleich waren, war teilweise festgelegt. Infolge dieser Korrektur liefert die Tomotopie in 32 Bits unterschiedliche Trainingsergebnisse aus der früheren Version.
- 0,8,1 (2020-06-08)
- Ein Fehler, bei dem tomotopy.ldamodel.Used_vocabs zurückgegeben wurde, wurde ein falscher Wert behoben.
- Jetzt tomotopy.ctmodel.prior_cov gibt eine Kovarianzmatrix mit Form [k, k] zurück.
- Jetzt tomotopy.ctmodel.get_correlations mit leeren Argumenten gibt eine Korrelationsmatrix mit Form [k, k] zurück.
- 0,8,0 (2020-06-06)
- Da Numpy in Tomotopy eingeführt wurde, kehrt viele Methoden und Eigenschaften der Tomotopie nicht nur auf, sondern Numpy.ndarray jetzt.
- Tomotopy hat eine neue Abhängigkeitsnummer> = 1.10.0.
- Eine falsche Schätzung von tomotopy.hdpmodel.infer wurde festgelegt.
- Eine neue Methode zur Konvertierung von HDPModel in Ldamodel wurde hinzugefügt.
- Neue Eigenschaften, einschließlich tomotopy.ldamodel.Used_vocabs, tomotopy.ldamodel.used_vocab_freq und tomotopy.ldamodel.used_vocab_df wurden zu Themenmodellen hinzugefügt.
- Ein neues G-DMR-Themenmodell (tomotopy.gdmrmodel) wurde hinzugefügt.
- Ein Fehler bei der Initialisierung von tomotopy.label.foreLevance in macOS wurde festgelegt.
- Ein Fehler, der bei der Verwendung von Tomotopy.utils.corpus ohne Rohparameter auftrat.
- 0,7,1 (2020-05-08)
- tomotopy.document.path wurde für tomotopy.hldamodel hinzugefügt.
- Ein Memory Corruption -Fehler in tomotopy.label.pmiextractor wurde behoben.
- Ein Kompilierfehler in GCC 7 wurde behoben.
- 0,7,0 (2020-04-18)
- Tomotopy.dtmodel wurde in das Paket hinzugefügt.
- Ein Fehler in tomotopy.utils.corpus.save wurde behoben.
- Eine neue Methode tomotopy.document.get_count_Vector wurde in die Dokumentklasse hinzugefügt.
- Jetzt verwenden Linux -Verteilungen viele Linux2010 und eine zusätzliche Optimierung wird angewendet.
- 0,6,2 (2020-03-28)
- Ein kritischer Fehler im Zusammenhang mit Speichern und Last wurde behoben. Version 0.6.0 und 0.6.1 wurden aus Releases entfernt.
- 0,6,1 (2020-03-22) (entfernt)
- Ein Fehler im Zusammenhang mit dem Laden des Moduls wurde behoben.
- 0,6,0 (2020-03-22) (entfernt)
- Tomotopy.utils.Corpus -Klasse, die mehrere Dokumente leicht verwaltet, wurde leicht hinzugefügt.
- Tomotopy.ldamodel.set_Word_Prior-Methode, die wort-topische Priors von Themenmodellen steuert.
- Ein neues Argument min_df, das Wörter basierend auf der Dokumentfrequenz filtert, wurde in __init__ jedes Themenmodells hinzugefügt.
- Tomotopy.label, Das Submodul zur Themenkennzeichnung wurde hinzugefügt. Derzeit wird nur Tomotopy.label.Forelevance bereitgestellt.
- 0.5.2 (2020-03-01)
- Ein Segmentierungsfehlerproblem wurde in tomotopy.lldamodel.add_doc behoben.
- Es wurde ein Fehler behoben, der auf Tomotopy schließt. Hdpmodel stürzt manchmal das Programm ab.
- Ein Crash -Problem wurde von tomotopy.ldamodel.infer mit ps = tomotopy.parallelScheme.Partition, zusammen = true festgelegt.
- 0.5.1 (2020-01-11)
- Ein Fehler wurde behoben, dass tomotopy.sldamodel.make_doc keine fehlenden Werte für y unterstützt.
- Jetzt unterstützt Tomotopy.sldamodel fehlende Werte für Antwortvariablen y. Dokumente mit fehlenden Werten (NAN) sind im Modellierungsthema enthalten, sind jedoch von der Regression von Antwortvariablen ausgeschlossen.
- 0.5.0 (2019-12-30)
- Jetzt tomotopy.pamodel.infer gibt beide Themenverteilung und Untertop-Verteilung zurück.
- Neue Methoden get_sub_topics und get_sub_topic_dist wurden in tomotopy.document hinzugefügt. (für Pamodel)
- Eine neue Parameterparallele wurde für tomotopy.ldamodel.train und tomotopy.ldamodel.infer -Methode hinzugefügt. Sie können den Parallelismus -Algorithmus auswählen, indem Sie diesen Parameter ändern.
- Tomotopy.ParallelScheme.Partition, ein neuer Algorithmus, wurde hinzugefügt. Es funktioniert effizient, wenn die Anzahl der Arbeitnehmer groß ist, die Anzahl der Themen oder die Größe des Wortschatzes groß ist.
- Ein Fehler, bei dem RM_TOP bei min_cf <2 nicht funktioniert hat.
- 0.4.2 (2019-11-30)
- Falsche Themenzuweisungen von tomotopy.lldamodel und tomotopy.pldamodel wurden repariert.
- Lesbar __Repr__ von tomotopy.document und tomotopy.Dictionary wurde implementiert.
- 0.4.1 (2019-11-27)
- Ein Fehler bei der Init -Funktion von Tomotopy.Pldamodel wurde behoben.
- 0.4.0 (2019-11-18)
- Neue Modelle wie Tomotopy.Pldamodel und Tomotopy.hldamodel wurden in das Paket hinzugefügt.
- 0.3.1 (2019-11-05)
- Ein Problem, bei dem get_topic_dist () einen falschen Wert zurückgibt, wenn min_cf oder rm_top festgelegt wurde.
- Der Rückgabewert von get_topic_dist () von tomotopy.mGldamodel -Dokument wurde so festgelegt, dass lokale Themen enthalten sind.
- Die Schätzgeschwindigkeit mit TW = One wurde verbessert.
- 0.3.0 (2019-10-06)
- Ein neues Modell, Tomotopy.lldamodel, wurde in das Paket hinzugefügt.
- Eine Absturzprobleme von HDPModel wurde behoben.
- Da die Hyperparameterschätzung für HDPModel implementiert wurde, kann sich das Ergebnis von HDPModel von früheren Versionen unterscheiden.
- Wenn Sie die Hyperparameterschätzung von HDPModel deaktivieren möchten, setzen Sie optim_interval auf Null.
- 0.2.0 (2019-08-18)
- Neue Modelle wie Tomotopy.Ctmodel und Tomotopy.Sldamodel wurden in das Paket hinzugefügt.
- Für alle Themenmodelle wurde eine neue Parameteroption RM_TOP hinzugefügt.
- Die Probleme bei der Save- und Lastmethode für Pamodel und Hpamodel wurden behoben.
- Ein gelegentlicher Absturz beim Laden von HDPModel wurde repariert.
- Das Problem, dass LL_PER_WORD falsch berechnet wurde, wenn min_cf> 0 behoben wurde.
- 0,1.6 (2019-08-09)
- Das Kompilierfehler in Clang mit der MacOS -Umgebung wurde festgelegt.
- 0,1.4 (2019-08-05)
- Das Problem, wenn add_doc eine leere Liste empfängt, während die Eingabe behoben wurde.
- Das Problem, das tomotopy.pamodel.get_topic_words nicht die Wortverteilung der Subtopic extrahiert.
- 0,1.3 (2019-05-19)
- Die Parameter min_cf und seine stopword-remed-Funktion wurden für alle Themenmodelle hinzugefügt.
- 0,1.0 (2019-05-12)
- Erste Version von Tomotopy
Bindungen für andere Sprachen
- Ruby: https://github.com/ankane/tomoto
Gebündelte Bibliotheken und ihre Lizenz
- Eigen: Diese Anwendung verwendet die MPL2-lizenzierten Merkmale von Eigen, eine C ++-Vorlagenbibliothek für lineare Algebra. Eine Kopie der MPL2-Lizenz finden Sie unter https://www.mozilla.org/en-us/mpl/2.0/. Der Quellcode der Eigenbibliothek kann unter http://eigen.tuxfamily.org/ erhalten werden.
- Eigenrand: MIT -Lizenz
- MAPBOX -Variante: BSD -Lizenz
Zitat
@software {minchul_lee_2022_6868418,
Autor = {Minchul Lee},
Titel = {Bab2Min/Tomotopy: 0.12.3},
Monat = Jul,
Jahr = 2022,
publisher = {zenodo},
Version = {v0.12.3},
doi = {10.5281/zenodo.6868418},
url = {https://doi.org/10.5281/zenodo.6868418}
}