我有以下情况,我想使用Python
解决这个问题(最好使用numpy
和scipy
):
如何在Python
中实现这一目标?我知道我可以使用scipy.sparse.coo_matrix
将文档表示为稀疏向量并使用点积来查找余弦相似度,但是如何将整个语料库转换为大而稀疏的术语文档矩阵(这样我也可以提取它的行作为scipy.sparse.coo_matrix
行向量)?
感谢。
答案 0 :(得分:5)
我建议你看看scikit-learn吗?这是Python社区中非常受欢迎的库,它具有非常简单的一致API。他们还实施了cosine similarity指标。这是从here获取的一个示例,您可以在3行代码中执行此操作:
>>> from sklearn.feature_extraction.text import TfidfVectorizer
>>> vect = TfidfVectorizer(min_df=1)
>>> tfidf = vect.fit_transform(["I'd like an apple",
... "An apple a day keeps the doctor away",
... "Never compare an apple to an orange",
... "I prefer scikit-learn to Orange"])
>>> (tfidf * tfidf.T).A
array([[ 1. , 0.25082859, 0.39482963, 0. ],
[ 0.25082859, 1. , 0.22057609, 0. ],
[ 0.39482963, 0.22057609, 1. , 0.26264139],
[ 0. , 0. , 0.26264139, 1. ]])
答案 1 :(得分:0)