Один из подходов, который вы можете использовать, называется Shingling. Процесс включает в себя маркировку всех слов в обоих документах, например.
D1 = {"An", "Example", "Document", "To", "Show", "Shingling"}
D2 = {"Another", "Example", "Document", "To", "Show", "Shingling", "but", "longer"}
Затем возьмите множество смежных подпоследовательностей длины окна n (не забудьте, что в наборе нет дубликатов).
S(D1, 3) = {{"An", "Example", "Document"}, {"Example", "Document", "To"}, {"Document", "To", "Show"}, {"To", "Show", "Shingling"}}
S(D2, 3) = {{"Another", "Example", "Document"}, {"Example", "Document", "To"}, {"Document", "To", "Show"}, {"To", "Show", "Shingling"}, {"Show", "Shingling", "but"}, {"Shingling", "but", "longer"}}
Тогда сходство - это мощность пересечения, деленная на мощность объединения. Так что для нашего примера 3/7 = 43% похоже.
Эффективное приближение можно сделать, используя эскизы (подмножество из набора черепицы), выбранные случайным образом.