2017-01-10 3 views
0

Hat jemand irgendwelche Vorschläge, wie man Wörter von einem Dokument in LSA-Vektoren mit Python und scikit-learn verwandeln kann? Ich fand diese Seite here und here, die beschreiben, wie man ein ganzes Dokument in einen LSA-Vektor umwandelt, aber ich bin interessiert, die einzelnen Wörter selbst zu konvertieren.Wörter in latente semantische Analyse (LSA) transformieren Vektoren

Das Endergebnis besteht darin, alle Vektoren (die jedes Wort repräsentieren) aus jedem Satz zu summieren und dann aufeinanderfolgende Sätze zu vergleichen, um die semantische Ähnlichkeit zu bewerten.

Antwort

1

Das Umsetzen eines Satzes oder eines Wortes in einen Vektor ist nicht anders als bei Dokumenten, ein Satz ist wie ein kurzes Dokument und ein Wort ist wie ein sehr kurzes. Von der ersten link haben wir den Code für die Abbildung eines Dokuments auf einen Vektor:

def makeVector(self, wordString): 
     """ @pre: unique(vectorIndex) """ 

     #Initialise vector with 0's 
     vector = [0] * len(self.vectorKeywordIndex) 
     wordList = self.parser.tokenise(wordString) 
     wordList = self.parser.removeStopWords(wordList) 
     for word in wordList: 
       vector[self.vectorKeywordIndex[word]] += 1; #Use simple Term Count Model 
     return vector 

gleiche Funktion verwendet werden kann, einen Satz oder ein Wort zu einem Vektor abzubilden. Übergeben Sie sie einfach an diese Funktion. Für ein Wort wäre das Ergebnis von wordList ein Array, das einen einzelnen Wert enthält, etwa wie folgt: ["word"] und dann nach dem Mapping wäre der Ergebnisvektor ein unit vector, der eine 1 in der zugehörigen Dimension und 0 an anderer Stelle enthält.

Beispiel:

vectorKeywordIndex (stellvertretend für alle Wörter in Wortschatz):

{"hello" : 0, "world" : 1, "this" : 2, "is" : 3, "me" : 4, "answer" : 5} 

Dokument "this is me": [0, 0, 1, 1, 1, 0]

Dokument "hello answer me": [1, 0, 0, 0, 1, 1]

Wort "hello": [1, 0, 0, 0, 0, 0]

Wort "me":

def cosine(vector1, vector2): 
     """ related documents j and q are in the concept space by comparing the vectors using the code: 
       cosine = (V1 * V2)/||V1|| x ||V2|| """ 
     return float(dot(vector1,vector2)/(norm(vector1) * norm(vector2))) 

oder mit Scikit-Learn der sklearn.metrics.pairwise.cosine_similarity: [0, 0, 0, 0, 1, 0]

nach dieser Ähnlichkeit kann mit diesem Code durch mehrere Kriterien wie Kosinusähnlichkeit bewertet werden.

from sklearn.metrics.pairwise import cosine_similarity 
sim = cosine_similarity(x, y) 
Verwandte Themen