作为构建 LSA 模型的一部分,我使用 400 个文档训练(拟合和转换)了 SVD 模型。这是我的代码:
tfidf_vectorizer = sklearn.feature_extraction.text.TfidfVectorizer(stop_words='english', use_idf=True, smooth_idf=True)
svd_model = TruncatedSVD(n_components=100, n_iter=10)
lsa_pipeline = Pipeline([('tfidf', tfidf_vectorizer), ('svd', svd_model)])
lsa_model = lsa_pipeline.fit_transform(all_docs)
现在,我想测量两个句子的相似度(无论是来自同一个文档集合还是全新的),并且我需要将这两个句子转换为向量。我想以自己的方式进行转换,并且需要得到句子中每个单词的向量。
如何使用我已经训练过的 lsa_model 找到单词的向量?
而且,更广泛地说,使用文档集合构建 LSA 模型,然后使用相同的模型来测量同一文档集合中某些句子的相似度是否有意义?
最佳答案
你已经快完成了,你只需要把句子转换成向量
sentence_vector = lsa_pipeline.transform(sentence)
然后求句子向量与文档矩阵之间的距离using any metric of your choice
from sklearn.metrics import pairwise_distances
dist_per_doc_matrix = pairwise_distances(sentence_vector,lsa_model, metric= 'euclidean')
同样,您可以采取 cosine similarity也是两个句子向量。
引用文献
关于python - 如何使用经过训练的 SVD 模型获取单词的向量表示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50915223/