Обнаружение повторения в текстовой строке / скопированном тексте

У меня есть форма ввода, где пользователи могут загрузить отчет о тестировании, минимальная длина составляет 100 слов. Некоторые пользователи пишут меньше, чем это, и просто копируют то, что они написали, пока не будет достигнут порог в 100 слов.

Я хотел бы проверить (в идеале через php), что текстовая строка содержит повторный текст, то есть, где копируются подмножества этой строки.
Я думал сделать анализ текста Фурье, который может привести к повторениям текста внутри строки.
Существует ли класс php или пример регулярных выражений для этой цели?

Пример текста:

бла бла это какой-то текст, теперь мне становится скучно. это какой-то
текст сейчас мне становится скучно. это какой-то текст, теперь мне становится скучно.
это какой-то текст, теперь мне становится скучно. это какой-то текст сейчас я
скучно. некоторые вещи в конце.

Обновление: мое предложение для решения этой проблемы заключается в следующем

1) Сопоставить строку с массивом целых чисел, то есть найти числовое представление для каждого символа. Таким образом, образец выше станет

numerics = array ( 2, 5, 1, 2, 5, 1, ...);

2) Примените преобразование Фурье к этому массиву, чтобы получить «частотный спектр символов»

FT = fft (numerics);

Это обнаруживает регулярные шаблоны в пространстве символов.
например можно использовать этот класс вычислить БПФ.

3) Обнаружить пики функции FT. Измерьте относительную высоту пиков по сравнению с шумом на заднем плане.

4) Установите порог для пиков. Если какой-либо пик выше этого порога, верните, что в тексте появились регулярные шаблоны. например повторение предложений несколько раз должно четко обозначать высокий пик с определенной частотой.

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

Конечно, альтернативные решения / предложения, как решить эту проблему, будут оценены.

-2

Решение

Не существует существующей функции или библиотеки, которая бы обнаруживала повторяющиеся строки так, как вам хотелось бы. Вы можете разбить проблему на алгоритм, который начинается с одного слова, а не двух слов и т. Д. но это будет очень много работы для этого.

Ваши клиенты начнут копировать неповторяющиеся предложения, и у вас возникнет другая проблема, которую вы не сможете решить.

Вы должны управлять своими тестерами, варианты наказать их за незаконные записи.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]