Datasketch MinHash LSH森林生成错误结果

时间:2019-04-16 06:11:12

标签: python locality-sensitive-hash minhash

我们正在使用MinHash LSH Forest的{​​{1}}实现,实现基于 Locality Sensitive Hashing(LSH)的推荐系统

分析结果后,我们发现Datasketch MinHash LSH Forest不推荐给定查询的最接近匹配项。

我们使用(Datasketch)的{​​{1}}分析了预测的匹配和实际最接近的匹配(注意:MinHash LSHDatasketch不同),发现即使尽管MinHash LSH的效果很好,但MinHash LSH Forest的结果却不正确。

MinHash LSH

例如, 假设有3个句子,

  

句子A:查询文字。

     

句子B:最接近的比赛。

     

句子C:预计匹配。

MinHash LSH Forest

在哪里

  

def get_forest(df, permutations, p_trees): lemmatizer = WordNetLemmatizer() minhash = [] for i in range(len(df)): text = df.iloc[i,8] tokens = process_text(text, lemmatizer) if tokens is None: pass m = MinHash(num_perm = perms) for s in tokens: m.update(s.encode('utf8')) minhash.append(m) forest = MinHashLSHForest(num_perm = perms, l = p_trees) for i,m in enumerate(minhash): forest.add(i,m) forest.index() return forest :句子A和句子B之间的实际Jaccard相似性。

     

J_AB = 0.38, J_MinHash_AB = 0.39, J_AC = 0.2, J_MinHash_AC = 0.2 :句子A和句子C之间的实际Jaccard相似性。

     

J_AB:句子A和句子B之间的Jaccard相似性   由MinHash LSH计算。

     

J_AC:句子A和句子C的Jaccard相似性   由MinHash LSH计算。

我们有两个问题,

  1. 为什么J_MinHash_AB建议将句子C作为句子A的最近邻居而不是句子B?

  2. 鉴于J_MinHash_AC将产生多个Jaccard相似性,即Datasketch MinHash LSH ForestMinHash LSH ForestJ_MinHash_AB,…………,J_MinHash_AC可以一次访问他们都是吗?

0 个答案:

没有答案