python - 如何使用经过训练的 SVD 模型获取单词的向量表示

标签 python scikit-learn svd lsa

作为构建 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/

相关文章:

python - Django channel VS Django 3.0/3.1?

python - 如何在 ffmpeg-python 包中使用 libx265 (H.265)?

python - 从文件读取后写回同一个文件

python - 如何准备图像分类训练数据

r - 无法使用 FactoMineR 对双向列联表运行对应分析

python - 我是怎么得到这个数字的?

python - 为分类变量 sklearn 创建我的自定义输入器

python - 如何有效地使用 CountVectorizer 获取目录中所有文件的 ngram 计数?

c# - 奇异值分解——社会网络分析

r - svd 插补 R