2017-01-10 17 views
0

Есть ли у кого-нибудь предложения по тому, как превращать слова из документа в векторы LSA, используя Python и scikit-learn? Я нашел эти сайты here и here, которые описывают, как превратить весь документ в вектор lsa, но я заинтересован в преобразовании самих отдельных слов.Преобразование слов в латентный семантический анализ (LSA) Векторы

Конечным результатом является суммирование всех векторов (представляющих каждое слово) из каждого предложения, а затем сравнение последовательных предложений для оценки семантической подобия.

ответ

1

Превращение предложения или слова в вектор не отличается от того, что делает это с документами, предложение - как короткий документ, а слово - очень короткое. С первого 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)