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)