В настоящее время я пытаюсь реализовать LSA с Sklearn, чтобы найти синонимы в нескольких документах. Вот мой код:Python LSA с Sklearn
#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)
Теперь вот моя проблема: формы Term-ДОКУМЕНТ Матрицы и тс-IDF матрицы одинаковы, что (27,3099). 27 документов и 3099 слов. После разложения единственного значения форма матрицы равна (27,27). Я знаю, что вы можете рассчитать косинус-подобие из 2-х строк, чтобы получить сходство, но я не думаю, что могу получить сходство двух слов в моих документах, сделав это с помощью SVD-матрицы.
Может ли кто-нибудь объяснить мне, что представляет собой SVD-матрица и в каком случае я могу использовать это, чтобы найти синонимы в моих документах?
Заранее спасибо.
поэтому он удаляет/уменьшает количество слов, которые не имеют высокой корреляции? в этом примере я не вижу уменьшения размеров, но в моем примере это делает это – Schweigerama
Можно сказать, что это уменьшает количество «функций» или «градусов», которые могут высоко представлять ваши данные обучения. Эти приведенные функции не могут быть представлены никакими конкретными словами, и поэтому модель является «скрытой». –
Хорошо, спасибо за вашу помощь. Я понял. – Schweigerama