class Item(models.Model):
vector_repr = models.TextField(..., verbose_name='jsonified vector representation')
...
# My current solution:
def as_vector(item): return np.asarray(json.loads(item.vector_repr))
item = Item.objects.get(...)
item_vect = as_vector(item)
def cosine_similarity(other): return np.dot(item_vect, as_vector(other))
db_items = Item.objects.exclude(id=item.id)
similar_items = sorted(db_items, key=cosine_similarity)
基本上,我想对mysql数据库中的所有项进行排序,应用与给定项的余弦相似性。
问题是表示所有项的向量(vector_repr)非常大,而且数据库中的项很多,所以这种方法非常慢(~2min)。
如何加快这一进程(可能没有在我的数据库中存储每对项目的相似性)
暂无答案!
目前还没有任何答案,快来回答吧!