使用 scikit-learn 的项目描述之间的余弦相似度
Cosine similarity between item descriptions using 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
将语料库转换为向量 space
3) 计算每个描述文本之间的cosine distance
作为相似度的度量。 distance = 1 - cosinesimilarity(tfidf_matrix)
我的目标是拥有一个像这样的 items
的相似度矩阵并回答如下问题:“项目 1ffg
和 2hhj
之间的相似度是多少:
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 array 创建矩阵,然后添加索引和 head 以创建数据框。
假设您有一个描述列表: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)
我正在使用 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
的相似度矩阵并回答如下问题:“项目 1ffg
和 2hhj
之间的相似度是多少:
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 array 创建矩阵,然后添加索引和 head 以创建数据框。
假设您有一个描述列表: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)