【发布时间】:2017-02-02 02:14:48
【问题描述】:
我编写了以下代码来计算多个预处理文档之间的余弦相似度(停用词去除、词干提取和词频-逆文档频率)。
print(X.shape)
similarity = []
for each in X:
similarity.append(cosine_similarity(X[i:1], X))
print(cosine_similarity(X[i:1], X))
i = i+1
但是,当我运行它时,我收到了这个:
(2235, 7791)
[[ 1. 0.01490594 0.11752643 ..., 0.00941571 0.03652551
0.01239277]]
Traceback (most recent call last):
File "...", line 83, in <module>
similarity.append(cosine_similarity(X[i:1], X))
File "/Users/.../anaconda/lib/python3.5/site-packages/sklearn/metrics/pairwise.py", line 881, in cosine_similarity
X, Y = check_pairwise_arrays(X, Y)
File "/Users/.../anaconda/lib/python3.5/site-packages/sklearn/metrics/pairwise.py", line 96, in check_pairwise_arrays
X = check_array(X, accept_sparse='csr', dtype=dtype)
File "/Users/.../anaconda/lib/python3.5/site-packages/sklearn/utils/validation.py", line 407, in check_array
context))
ValueError: Found array with 0 sample(s) (shape=(0, 7791)) while a minimum of 1 is required.
[Finished in 56.466s]
【问题讨论】:
-
您在循环中使用 X[i:1]。当 i 达到 1 时,您正在访问 X[1:1] ,它返回一个空列表。这就是导致错误的原因。
-
@DileepKumarPatchigolla 那我该怎么做呢?
-
我不熟悉 cosine_similarity。您能否提供 X 的外观示例,以便我试用?
-
欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。在您发布的代码中,cosine_similarity、i 和 X 未定义,因此不清楚您在做什么。
-
您可以尝试这样来获得第一个向量与其余向量之间的余弦相似度:
sklearn.metrics.pairwise.pairwise_distances(X[0:1], X, metric='cosine', n_jobs=1)。 scikit-learn.org/stable/modules/generated/… (blog.christianperone.com/2013/09/…)
标签: text machine-learning scikit-learn cosine-similarity