Wie, um Vorhersagen, die Thema einer neuen Abfrage, die einen ausgebildeten LDA-Modell mit gensim?
Ich ausgebildet haben, ein Korpus für die LDA Thema Modellierung mit gensim.
Gehen Sie durch die Anleitung auf der gensim website (ist nicht der ganze code):
question = 'Changelog generation from Github issues?';
temp = question.lower()
for i in range(len(punctuation_string)):
temp = temp.replace(punctuation_string[i], '')
words = re.findall(r'\w+', temp, flags = re.UNICODE | re.LOCALE)
important_words = []
important_words = filter(lambda x: x not in stoplist, words)
print important_words
dictionary = corpora.Dictionary.load('questions.dict')
ques_vec = []
ques_vec = dictionary.doc2bow(important_words)
print dictionary
print ques_vec
print lda[ques_vec]
Dies ist die Ausgabe, die ich bekomme:
['changelog', 'generation', 'github', 'issues']
Dictionary(15791 unique tokens)
[(514, 1), (3625, 1), (3626, 1), (3627, 1)]
[(4, 0.20400000000000032), (11, 0.20400000000000032), (19, 0.20263215848547525), (29, 0.20536784151452539)]
Ich weiß nicht, wie die Letzte Ausgabe wird mir helfen, das mögliche Thema für die question
!!!
Bitte um Hilfe!!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Geschrieben haben ich eine Funktion in python, die die möglichen Thema für eine neue Abfrage:
Bevor Sie das tun, finden Sie diese link!
In den ersten Teil des Codes, die query wird vorverarbeitet, so dass es sein kann, beraubt, Füllwörter und unnötige Satzzeichen.
Dann das Wörterbuch, das gemacht wurde, mit Hilfe unserer eigenen Datenbank geladen.
Wir, dann setzen wir die Zeichen der neuen Abfrage-Tasche von Wörtern und dann das Thema Wahrscheinlichkeitsverteilung der Abfrage wird berechnet, indem
topic_vec = lda[ques_vec]
wolda
wird das trainierte Modell wie in dem link oben genannten.Die Verteilung ist dann sortiert, w.r.t die Wahrscheinlichkeiten der Themen. Das Thema mit der höchsten Wahrscheinlichkeit wird dann angezeigt, indem
question_topic[1]
.Angenommen, wir müssen nur Thema mit höchster Wahrscheinlichkeit folgende code-Schnipsel hilfreich sein können:
Die tokenisierung Funktionen entfernt Interpunktion/domain-spezifische Zeichen gefiltert und gibt die Liste von tokens. Hier-Wörterbuch erstellt in der Ausbildung übergeben wird als parameter der Funktion, aber es kann auch aus einer Datei geladen.
Grundsätzlich Anjmesh Pandey schlug ein gutes Beispiel-code. Aber das erste Wort mit der höchsten Wahrscheinlichkeit in ein Thema kann nicht allein repräsentieren das Thema, weil in einigen Fällen gruppierten Themen haben vielleicht ein paar Themen teilen diese meist geschieht, mit anderen Worten, selbst an der Spitze von Ihnen. Daher Rückgabe des index von einem Thema genug sein würde, die am ehesten in der Nähe der Abfrage.
topic_id = sorted(lda[ques_vec], key=lambda (index, score): -score)
Die transformation von ques_vec gibt Sie pro Thema eine Idee und Sie würden versuchen zu verstehen, was die unbeschrifteten Thema geht es darum, durch die überprüfung einige Worte vor allem einen Beitrag zu dem Thema.
latent_topic_words = map(lambda (score, word):word lda.show_topic(topic_id))
show_topic () - Methode gibt eine Liste von Tupel sortiert nach Punktestand jedes Wort mit einem Beitrag zum Thema in absteigender Reihenfolge, und können wir etwa verstehen, die latent Thema, indem Sie überprüfen diese Worte mit Ihren gewichten.