Вот мое мнение об этом - просто длинная история для рассмотрения и не обязательно ответ на вашу проблему:
В прошлом я делал нечто подобное, когда я пытался определить, кто-то занимался плагиатомпросто переставляя предложения, сохраняя при этом одно и то же сообщение.
1 «дети должны играть, когда мы ужинаем», «
2», пока мы ужинаем, дети должны играть «
3», что мы должны естьдети, пока мы играем "
Так что Левенштейн здесь не очень пригодится, потому что он линейный и каждый из них будет значительно отличаться.Стандартная разница прошла бы тест, и ученик смирился бы с преступлением.
Поэтому я разбил каждое слово в предложениях и перекомпоновал предложения как массивы, затем сравнил друг друга, чтобы сначала определить, существовало ли словов каждом массиве, и где это было по отношению к последнему.Затем каждое слово проверяет следующее в массиве, чтобы определить, были ли последовательные слова, как в моих примерах предложения над строками 1 и 2. Поэтому, если бы были последовательные слова, я бы составил строку каждой последовательности, общую для каждого массива, а затемпопытаться найти различия в оставшихся словах.Чем меньше оставшихся слов, тем больше шансов, что они будут просто наполнителями, чтобы они казались менее плагиатными.
«пока мы ужинаем, я думаю, что дети должны играть»
Тогда «я думаю»оцениваемый и рассматриваемый наполнитель на основе лексики ключевого слова - эту часть здесь сложно описать.
Это был сложный проект, который сделал гораздо больше, чем просто то, что я описал, а не простой кусок кода, которым я легко могу поделиться, но идею, изложенную выше, не так сложно воспроизвести.
Удачи.Мне интересно, что другие члены SO скажут по вашему вопросу.