0

我正在实现 minhash 和 LSH 以在 C++11 中对某些字符串元素进行相似性搜索。我的实现的 minhash 草图是 200 个 64 位整数的向量,即vector<uint64_t> MinHashSketch. 我有超过 200 万个条目,草图生成部分不需要太多时间。但是,分桶阶段需要很长时间。我想知道是否可以得到一些建议以使其更快一些。以下是我使用 LSH 的分桶阶段。

我在草图中使用连续的元素来创建一个成为桶 id 的哈希。如果bsize = 5,则(对于第 i 个元素)中的元素构成存储桶 ID 1-5, 6-10, 11-15, ... 196-200MinHashSketch[i]遵循执行此操作的代码。

for (int p = 0; p < 200; p += bsize) {  //bsize = 5
  string s = ""; 
  for(int x = p; x < (p+bsize); x++){
    s = s + to_string(MinHashSketch[i].at(x)); // ith element 
  }       
  uint64_t hash1 = 0;  // bucket id
  Hash_function ((uint8_t*)s.c_str(), s.length(), (uint8_t *)&hash1, 0);
  ........
  ........
}
4

0 回答 0