我正在尝试使用 shingleprinting 来测量文档相似性。该过程包括以下步骤:
- 创建两个文档 D1、D2的5-shingling
- 使用 64 位散列散列每个 shingle
- 选择从 0 到 2^64-1 的数字的随机排列并应用于 shingle 散列
- 对于每个文档,找到结果值中的最小值
- 如果它们匹配,则将其视为正例,如果不匹配,则将其视为负例
- 重复 3. 到 5. 几次
- 用作
positive_examples / total examples
相似性度量
第 3 步涉及生成一个非常长的序列的随机排列。使用 Knuth-shuffle 似乎是不可能的。有什么捷径吗?请注意,最后我们只需要结果排列的单个元素。