Я пытаюсь использовать shingleprinting для измерения подобия документа. Процесс включает в себя следующие этапы:Как работает Shingleprinting на практике?
- Создать 5-shingling из двух документов D1, D2
- Hash каждая гальки с 64-битовой хэш
- Pick случайную перестановку чисел от 0 до 2^64-1 и применить к гальке хэши
- для каждого документа найти наименьшее из полученных значений
- Если они совпадают считать это как положительный пример, если не считать его в качестве отрицательного примера
- Repeat 3. 5 . немного раз
- Использование
positive_examples/total examples
в качестве меры подобия
Шаг 3 включает в себя генерирование случайную перестановку очень длинной последовательности. Не может быть и речи об использовании Knuth-shuffle. Есть ли для этого сокращение? Заметим, что в конце нам нужен только один элемент полученной перестановки.