Алгоритм расчета текста на основе различных расстояний или отпечатков пальцев - PullRequest
1 голос
/ 19 февраля 2020

Итак, у меня есть TON файлов .txt (несколько гигабайт), и я надеюсь организовать их и у меня есть какой-нибудь метод для поиска рядом дубликатов и правок.

Есть ли алгоритм , который может прочитать текстовый файл и произвести вид ha sh или отпечатка пальца текста, так что чем больше правок или дополнений у блока текста, тем больше расстояние Хемминга от заданного отпечатка пальца / га sh?

Например: учитывая любую длину текста, id live создает значение N длиной. это можно использовать для проверки сходства между другими текстовыми документами.

Итак: Для N = 8

"Some text bla bla bla bla bla ext."   => "21juob1G"
"Other text of different length"       => "fejbweoi"
"Close text bla bla bla bla bla ext."  => "f2juob1G"

Между примерами 1 и 3 выходные данные достаточно похожи, я могу вычислить Расстояние Хэмминга и определить, что данные тексты очень похожи.

Попытка построить это в C ++. Это существует?

Iv изучил алгоритмы плагиата и нашел какое-то обещание, но я не могу найти ни одного, у которого есть хороший пример или описание алгоритма, которое я могу воспроизвести.

Мой текущий Подход, прямо сейчас, состоит в том, чтобы просто удалить все не-символы из данного текста, разделить его на 32 одинаковых по размеру блока и вычислить сумму всех букв в виде чисел, а затем сигмоид, которые в результате дают один байт. Но я получаю результаты, которые ... Слишком похожи.

...