Python-LSA mit Sklearn

Ich bin derzeit versuchen zu implementieren LSA mit Sklearn, um Synonyme zu finden in mehrere Dokumente.
Hier ist mein Code:

#import the essential tools for lsa
from sklearn.feature_extraction.text import CountVectorizer
from sklearn.feature_extraction.text import TfidfTransformer
from sklearn.decomposition import TruncatedSVD
from sklearn.metrics.pairwise import cosine_similarity
#other imports
from os import listdir

#load data
datafolder = 'data/'
filenames = []
for file in listdir(datafolder):
    if file.endswith(".txt"):
        filenames.append(datafolder+file)

#Document-Term Matrix
cv = CountVectorizer(input='filename',strip_accents='ascii')
dtMatrix = cv.fit_transform(filenames).toarray()
print dtMatrix.shape
featurenames = cv.get_feature_names()
print featurenames

#Tf-idf Transformation
tfidf = TfidfTransformer()
tfidfMatrix = tfidf.fit_transform(dtMatrix).toarray()
print tfidfMatrix.shape

#SVD
#n_components is recommended to be 100 by Sklearn Documentation for LSA
#http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.TruncatedSVD.html
svd = TruncatedSVD(n_components = 100)
svdMatrix = svd.fit_transform(tfidfMatrix)

print svdMatrix

#Cosine-Similarity
#cosine = cosine_similarity(svdMatrix[1], svdMatrix)

Nun, hier ist mein Problem:
die Form der Term-Dokument-Matrix und die tf-idf-Matrix sind die gleichen, die (27,3099). 27 Dokumente und 3099 Wörter.
Nach dem Einzelwert-ZERLEGUNG der Form der Matrix (27,27).
Ich weiß, Sie können die Berechnung der Kosinus-ähnlichkeit von 2 Zeilen zu bekommen, gibt es ähnlichkeit, aber ich glaube nicht, dass ich die similiarity 2 Wörter in meinen Dokumenten dadurch, dass mit dem SVD-Matrix.

Kann mir jemand erklären, was der SVD-Matrix darstellt und in denen immer wie ich verwenden können, um Synonyme zu finden in meinen Unterlagen?

Vielen Dank im Voraus.

InformationsquelleAutor Schweigerama | 2015-06-02
Schreibe einen Kommentar