Превращение предложения или слова в вектор не отличается от того, что делает это с документами, предложение - как короткий документ, а слово - очень короткое. С первого link мы имеем код для отображения документа в векторе:
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
Та же функция может быть использована для отображения предложения или одно слово в вектор. Просто передайте их этой функции. для слова результат wordList
был бы массивом, содержащим единственное значение, что-то вроде: ["word"]
, а затем после сопоставления вектор результата будет unit vector, содержащий 1
в ассоциированном измерении и 0
s в другом месте.
Пример:
vectorKeywordIndex
(представляющие все слова в лексиконе):
{"hello" : 0, "world" : 1, "this" : 2, "is" : 3, "me" : 4, "answer" : 5}
документ "this is me"
: [0, 0, 1, 1, 1, 0]
документ "hello answer me"
: [1, 0, 0, 0, 1, 1]
слово "hello"
: [1, 0, 0, 0, 0, 0]
слово "me"
: [0, 0, 0, 0, 1, 0]
после этого сходства можно оценить по нескольким критериям, как косинус сходства с помощью этого кода:
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)))
или с помощью scikit учиться-х sklearn.metrics.pairwise.cosine_similarity.
from sklearn.metrics.pairwise import cosine_similarity
sim = cosine_similarity(x, y)