使用scikit-learn的项目描述之间的余弦相似性



我正在使用python 2.7和scikit-learn来查找项目描述之间的余弦相似性。

A 有一个df,例如:

items    description
1fgg     abcd ty
2hhj     abc r 
3jkl     r df

我做了以下程序:

1)标记化和词干化每个description

2)使用tf-idf将语料库转换为向量空间

3)计算每个描述文本之间的cosine distance作为相似性的度量。 distance = 1 - cosinesimilarity(tfidf_matrix)

我的目标是有一个像这样的items相似性矩阵,并回答这样的问题:"1ffg2hhj的项目之间的相似性是什么:

        1fgg    2hhj    3jkl
1ffg    1.0     0.8     0.1
2hhj    0.8     1.0     0.0
3jkl    0.1     0.0     1.0 

如何获得此结果?谢谢你的时间。

您可以使用 numpy 数组创建矩阵,然后添加索引和标头来创建数据帧。

假设您有一个描述列表:descriptions = ['abc', 'bcd', 'etc' ...]和相应的 tf-idf 矩阵。(行号对应描述号)

你想要创建一个形状为 NxN 的空 numpy 数组,其中 N = len(words)

distance_matrix = np.zeros((N,N))

然后你需要用实际距离填充它:

for i in range(N):
    for j in range(N):
        distance_matrix[i,j] = cosine_distance(tf_idf[i,:], tf_idf[j,:])

您可以使用

pandas.DataFrame(distance_matrix, index = items_list, columns = items_list)

相关内容

  • 没有找到相关文章

最新更新