Ich möchte Latent Dirichlet Allocation für ein Projekt verwenden und verwende Python mit der Gensim-Bibliothek. Nachdem ich die Themen gefunden habe, möchte ich die Dokumente mit einem Algorithmus wie k-means gruppieren (idealerweise möchte ich einen guten für überlappende Cluster verwenden, damit jede Empfehlung begrüßt wird). Ich habe es geschafft, die Themen zu bekommen, aber sie haben folgende Form:
0,041 * Minister + 0,041 * Schlüssel + 0,041 * Momente + 0,041 * umstritten + 0,041 * Prime
Um einen Clustering-Algorithmus anzuwenden und mich zu korrigieren, wenn ich falsch liege, sollte ich meines Erachtens einen Weg finden, jedes Wort als Zahl mit tfidf oder word2vec darzustellen.
Haben Sie Ideen, wie ich die Textinformationen beispielsweise aus einer Liste "entfernen" und dann zurücksetzen könnte, um die entsprechende Multiplikation vorzunehmen?
So wie ich es zum Beispiel sehe, wenn das Wort Minister ein tfidf-Gewicht von 0,042 usw. für jedes andere Wort innerhalb desselben Themas hat, sollte ich Folgendes berechnen:
0,041 * 0,42 + ... + 0,041 * tfidf (Prime) und erhalten ein Ergebnis, das später verwendet wird, um die Ergebnisse zu gruppieren.
Vielen Dank für Ihre Zeit.
quelle
Antworten:
Angenommen, LDA hat eine Liste mit Themen erstellt und für jedes Dokument eine Bewertung für jedes Thema vergeben, könnten Sie das Dokument und seine Bewertungen als Vektor darstellen:
Um die Ergebnisse für jedes Dokument zu erhalten, können Sie das Dokument ausführen. als eine Tüte Worte durch ein geschultes LDA-Modell. Aus der Gensim-Dokumentation:
Dann könnten Sie die k-means auf dieser Matrix ausführen und sie sollte Dokumente gruppieren, die ähnlich sind. K-means ist standardmäßig ein Hard-Clustering-Algorithmus, der impliziert, dass jedes Dokument in einen Cluster klassifiziert wird. Sie können Soft-Clustering-Mechanismen verwenden, mit denen Sie eine Wahrscheinlichkeitsbewertung erhalten, dass ein Dokument in einen Cluster passt - dies wird als Fuzzy-K-Mittel bezeichnet . https://gist.github.com/mblondel/1451300 ist eine Python-Übersicht, die zeigt, wie Sie dies mit scikit learn tun können.
ps: Ich kann nicht mehr als 2 Links posten
quelle
Ergänzend zur vorherigen Antwort sollten Sie kmeans nicht einfach direkt auf den Kompositionsdaten ausführen, die aus der lda topic-doc-Distribution abgeleitet wurden, sondern stattdessen eine Transformation der Kompositionsdaten verwenden, um sie in den euklidischen Raum wie ilr oder clr zu projizieren.
( Beispiel )
quelle