2017-01-10 43 views
0

Pythonとscikit-learnを使用して文書から単語をLSAベクトルに変換する方法の提案はありますか?私はこれらのサイトと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"]のような単一の値を保持する配列になり、マッピングの後、結果ベクトルは、対応する次元に1、別の場所に0を含むunit vectorになります。

例:

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"

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を使用して:[0, 0, 0, 0, 1, 0]

をその類似性は、このコードを使用してコサイン類似度のようないくつかの基準によって評価することができます後。

from sklearn.metrics.pairwise import cosine_similarity 
sim = cosine_similarity(x, y) 
関連する問題