Я пытаюсь использовать черепицу для измерения сходства документов. Процесс включает следующие этапы:
- Создайте 5-shingling из двух документов D1, Д2
- Хэшируйте каждую шинглу с помощью 64-битного хэша
- Выберите случайную перестановку чисел от 0 до 2 ^ 64-1 и примените к хэшам гальки.
- Для каждого документа найти наименьшее из полученных значений
- Если они совпадают, считайте это положительным примером, если нет, считайте это отрицательным примером.
- Повторите с 3. по 5. несколько раз.
- Используйте
positive_examples / total examples
в качестве меры подобия
Шаг 3 включает в себя генерацию случайной перестановки очень длинной последовательности. Использование перетасовки Кнута кажется невозможным. Есть ли какой-то ярлык для этого? Обратите внимание, что в итоге нам нужен только один элемент полученной перестановки.