Python:检查mongoDB数据库文档之间的余弦相似性

Python:检查mongoDB数据库文档之间的余弦相似性,python,mongodb,cosine-similarity,Python,Mongodb,Cosine Similarity,我正在使用python。现在我有了一个mongoDB数据库集合,其中所有文档都有这样的格式: {"_id":ObjectId("53590a43dc17421e9db46a31"), "latlng": {"type" : "Polygon", "coordinates":[[[....],[....],[....],[....],[.....]]]} "self":{"school":2,"home":3,"hospital":6} } 其中字段“self”表示多边形中的场馆类型以及相

我正在使用python。现在我有了一个mongoDB数据库集合,其中所有文档都有这样的格式:

{"_id":ObjectId("53590a43dc17421e9db46a31"),
 "latlng": {"type" : "Polygon", "coordinates":[[[....],[....],[....],[....],[.....]]]}
 "self":{"school":2,"home":3,"hospital":6}
 }
其中字段“self”表示多边形中的场馆类型以及相应场馆类型的数量。不同的文档具有不同的自字段,例如{“KFC”:1,“building”:2,“home”:6},{“shopping mall”:1,“gas station”:2}

现在我需要计算两个文档的两个“self”字段之间的余弦相似性。以前,我的所有文档都保存为pickle文件中的字典,我使用以下代码计算相似度:

vec = DictVectorizer()
total_arrays = vec.fit_transform(data + citymap).A
vector_matrix = total_arrays[:len(data)]
citymap_base_matrix = total_arrays[len(data):]

def cos_cdist(matrix, vector):
v = vector.reshape(1, -1)
return scipy.spatial.distance.cdist(matrix, v, 'cosine').reshape(-1)

for vector in vector_matrix:
    distance_result = cos_cdist(citymap_base_matrix,vector)
在这里,数据和城市地图就像[{“肯德基”:1,“建筑”:2,“家”:6},{“学校”:2,“家”:3,“医院”:6},{“购物中心”:1,“加油站”:2}]


但是现在我正在使用mongoDB,我想知道是否有mongoDB方法可以更直接地计算相似度,知道吗?

计算余弦相似度不是mongoDB的一个特性。我认为使用大致相同的方法,但是从数据库而不是pickle文件获取输入,是一种可行的方法。好的,非常感谢您的评论