Verständnis der LDA-Implementierung mit Gensim
Ich versuche zu verstehen, wie gensim-Paket in Python implementiert Latent Dirichlet Allocation. Ich Tue das folgende:
Definieren Sie die dataset -
documents = ["Apple is releasing a new product",
"Amazon sells many things",
"Microsoft announces Nokia acquisition"]
Nach dem entfernen von Stoppwörtern, dann erstellen Sie das Wörterbuch und Korpus:
texts = [[word for word in document.lower().split() if word not in stoplist] for document in documents]
dictionary = corpora.Dictionary(texts)
corpus = [dictionary.doc2bow(text) for text in texts]
Dann definiere ich das LDA Modell.
lda = gensim.models.ldamodel.LdaModel(corpus=corpus, id2word=dictionary, num_topics=5, update_every=1, chunksize=10000, passes=1)
Dann Druck ich die Themen:
>>> lda.print_topics(5)
['0.181*things + 0.181*amazon + 0.181*many + 0.181*sells + 0.031*nokia + 0.031*microsoft + 0.031*apple + 0.031*announces + 0.031*acquisition + 0.031*product', '0.077*nokia + 0.077*announces + 0.077*acquisition + 0.077*apple + 0.077*many + 0.077*amazon + 0.077*sells + 0.077*microsoft + 0.077*things + 0.077*new', '0.181*microsoft + 0.181*announces + 0.181*acquisition + 0.181*nokia + 0.031*many + 0.031*sells + 0.031*amazon + 0.031*apple + 0.031*new + 0.031*is', '0.077*acquisition + 0.077*announces + 0.077*sells + 0.077*amazon + 0.077*many + 0.077*nokia + 0.077*microsoft + 0.077*releasing + 0.077*apple + 0.077*new', '0.158*releasing + 0.158*is + 0.158*product + 0.158*new + 0.157*apple + 0.027*sells + 0.027*nokia + 0.027*announces + 0.027*acquisition + 0.027*microsoft']
2013-12-03 13:26:21,878 : INFO : topic #0: 0.181*things + 0.181*amazon + 0.181*many + 0.181*sells + 0.031*nokia + 0.031*microsoft + 0.031*apple + 0.031*announces + 0.031*acquisition + 0.031*product
2013-12-03 13:26:21,880 : INFO : topic #1: 0.077*nokia + 0.077*announces + 0.077*acquisition + 0.077*apple + 0.077*many + 0.077*amazon + 0.077*sells + 0.077*microsoft + 0.077*things + 0.077*new
2013-12-03 13:26:21,880 : INFO : topic #2: 0.181*microsoft + 0.181*announces + 0.181*acquisition + 0.181*nokia + 0.031*many + 0.031*sells + 0.031*amazon + 0.031*apple + 0.031*new + 0.031*is
2013-12-03 13:26:21,881 : INFO : topic #3: 0.077*acquisition + 0.077*announces + 0.077*sells + 0.077*amazon + 0.077*many + 0.077*nokia + 0.077*microsoft + 0.077*releasing + 0.077*apple + 0.077*new
2013-12-03 13:26:21,881 : INFO : topic #4: 0.158*releasing + 0.158*is + 0.158*product + 0.158*new + 0.157*apple + 0.027*sells + 0.027*nokia + 0.027*announces + 0.027*acquisition + 0.027*microsoft
>>>
Ich bin nicht in der Lage zu verstehen, viel von diesem Ergebnis. Ist es mit einer Wahrscheinlichkeit des Auftretens jedes Wortes? Auch, was ist der Sinn des Thema #1 Thema #2 etc? Ich hatte erwartet, etwas mehr oder weniger wie die meisten wichtigen keywords.
Ich bereits überprüft die gensim tutorial aber es half nicht wirklich viel.
Dank.
InformationsquelleAutor der Frage visakh | 2013-12-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Antwort, die du suchst ist in der gensim tutorial.
lda.printTopics(k)
druckt die meisten Wörter beitragen fürk
zufällig ausgewählten Themen. Man kann davon ausgehen, dass dies (teilweise) die Verteilung der Worte über jedes der vorgegebenen Themen, also die Wahrscheinlichkeit, dass jene Wörter, die in das Thema auf der linken Seite.In der Regel laufen würde LDA auf einem großen Korpus. Läuft LDA auf eine lächerlich kleine Stichprobe nicht die besten Resultate geben.
InformationsquelleAutor der Antwort Steve P.
Ich denke, dieses tutorial wird Ihnen helfen zu verstehen, alles sehr klar - https://www.youtube.com/watch?v=DDq3OVp9dNA
Ich auch eine Menge Probleme ihn zu verstehen, auf den ersten. Ich werde versuchen, zu umreißen, ein paar Punkte in Kürze.
In Latent Dirichlet Allocation,
Stellen Sie sich den Prozess der Erstellung eines Dokuments zu sein, so etwas wie dieses -
LDA ist eine Art backtracking entlang dieser Linie -gegeben, dass Sie eine Tasche der Wörter repräsentieren ein Dokument, was könnte sein, die Themen, die er repräsentiert ?
So, in deinem Fall das erste Thema (0)
ist mehr über
things
,amazon
undmany
da Sie einen höheren Anteil und nicht so viel übermicrosoft
oderapple
die einen deutlich geringeren Wert.Ich würde vorschlagen, das Lesen dieses blog für ein viel besseres Verständnis ( Edwin Chen ist ein Genie! ) - http://blog.echen.me/2011/08/22/introduction-to-latent-dirichlet-allocation/
InformationsquelleAutor der Antwort Utsav T
Da die oben genannten Antworten die gepostet wurden, gibt es jetzt einige sehr schöne Visualisierung-tools, um eine intuition der LDA mit
gensim
.Werfen Sie einen Blick auf die pyLDAvis Paket. Hier ist eine große notebook-übersicht. Und hier ist eine sehr hilfreiche video-Beschreibung ausgerichtet ist, die der Endbenutzer (9 min tutorial).
Hoffe, das hilft!
InformationsquelleAutor der Antwort plfrick
Für das Verständnis der Verwendung von gensim LDA Umsetzung, ich habe kürzlich verfassten blog-posts Umsetzung Thema Modellierung von Grund auf die 70.000-einfach-wiki gedumpten Artikel in Python.
Hier gibt es eine ausführliche Erklärung, wie gensim die LDA kann verwendet werden, für das Thema Modellierung.
Kann man die Nutzung von
Hoffe, es wird helfen, das Verständnis der LDA Umsetzung des gensim-Paket.
Teil 1
Thema-Modellierung (Teil 1): Erstellen von Artikel-Corpus-vom Einfachen Wikipedia-dump
Teil 2
Thema-Modellierung (Teil 2): die Entdeckung der Themen von Artikeln, die mit Latent Dirichlet Allocation
Word-cloud (10 Wörter) von wenigen Themen, die ich bekam, als ein Ergebnis.
InformationsquelleAutor der Antwort Abhijeet Singh