Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Текст диплома магистра - 12 июня 2014.doc
Скачиваний:
7
Добавлен:
01.07.2025
Размер:
4.87 Mб
Скачать
  1. Режим работы модуля PlagiatSearch с произвольным текстом

  1. Режим работы модуля PlagiatSearch с исходным кодом

Рисунок 24 Главное окно модуля PlagiatSearch поиска плагиата методами сравнения произвольных текстов

Первый и основной алгоритм O(NP) [29], реализованный в дипломе и являющийся модификацией алгоритма Вагнера-Фишера, позволяет в большинстве случаев почти в два раза сократить время выполнения по сравнению с алгоритмом O(ND) [28]. Пусть A и B будет две последовательности длины M и N соответственно, где без потери общности N >=M, и пусть D - длина кратчайшего сценария редактирования между ними (shortest edit script). Параметр P, связанный с D - это количество удалений в таком сценарии, P = D/2 −(N −M)/2. Алгоритм нахождения кратчайшего расстояния редактирования A и B имеет в худшем случае время выполнения O(NP) и чьи ожидаемое время O (N +PD). Алгоритм прост и является очень эффективным, особенно когда A похож на B. То есть, как раз в случае подозрений на плагиат.

Второй алгоритм O(ND) [28], реализованный в дипломе и являющийся модификацией алгоритма Вагнера-Фишера, имеет ожидаемое время выполнения O(ND), где N – сумма длин последовательностей A и B, а D – длина кратчайшего сценария редактирования между ними.

7.1.2 Меню «Анализ» и его возможности для поиска плагиата в произвольных текстах

Меню «Анализ» (рисунок 25) становится доступным и применяется после выполнения сравнения произвольных текстов по Левенштейну.

Рисунок 25 Меню «Анализ»

Это меню включает следующие опции:

  • Вычислить расстояние Левенштейна;

Результат вычисления этого расстояния может интерпретироваться следующим образом: если оно мало, то можно предположить, что второй файл получается из первого файла за минимальное число действий (удаление-изменение-добавление).

  • Вычислить расстояние Дамерау;

Результат вычисления этого расстояния может интерпретироваться следующим образом: если оно мало, то можно предположить, что второй файл получается из первого файла за минимальное число действий с весовыми коэффициентами (удаление-изменение-добавление). В отличие от простого расстояния Левенштейна расстояние Дамерау позволяет учитывать при поиске плагиата разный вес действий. Например, можно считать, что «добавление» имеет меньшее значение с точки зрения поиска плагиата, чем изменение. Поэтому в этом случае весовой коэффициент операции «добавления» должен быть больше, чем весовой коэффициент операции «изменение». Чем больше операций «добавление» при сравнении файлов и вычислении для них расстояния Дамерау, тем больше будет значение расстояния Дамерау. Следовательно, тем менее похожими можно считать сравниваемые файлы.

  • Вычислить длину LCS (наибольшей общей подпоследовательности, longest common subsequence)

  • Показать все совпадающие строки

Смысл введения этой опции следующий: показать, для каждой строки в файле 1 ее дубликаты, которые есть во втором файле. В информационном окне наличие дубликатов представляется следующим образом: если для строки файла 1 есть идентичные строки в файле 2, то они указаны в квадратных скобах через знак равенства. Например, для строки с номером 71 в файле 1 есть идентичная строка в файле 2 с номером 34: [71]=[34] . Кроме того, после выполнения операции поиска совпадающих строк вычисляется длина и место максимального непрерывного фрагмента совпадающих строк (Максимальная длина в строках непрерывного фрагмента совпадающих строк ->5 со строки 33) и фокус в главном окне модуля переводится на это место (рисунок 26). В нашем случае этот фрагмент начинается со строки 33 и имеет длину 5 строк.

Рисунок 26 Поиск всех совпадающих строк в файлах и показ максимального непрерывного фрагмента совпадающих строк

Пример результата в информационном окне показан ниже (синим цветом).

Совпадающие строки в файле 1 и в файле 2:

[2]=[2] [2]=[4] [2]=[7] [2]=[23] [2]=[26] [2]=[28] [2]=[30] [2]=[32] [2]=[38]

[3]=[3]

[4]=[2] [4]=[4] [4]=[7] [4]=[23] [4]=[26] [4]=[28] [4]=[30] [4]=[32] [4]=[38]

[8]=[2] [8]=[4] [8]=[7] [8]=[23] [8]=[26] [8]=[28] [8]=[30] [8]=[32] [8]=[38]

[9]=[8]

[13]=[22]

[33]=[18]

[34]=[19]

[35]=[20]

[36]=[21]

[37]=[22]

[41]=[2] [41]=[4] [41]=[7] [41]=[23] [41]=[26] [41]=[28] [41]=[30] [41]=[32] [41]=[38]

[42]=[2] [42]=[4] [42]=[7] [42]=[23] [42]=[26] [42]=[28] [42]=[30] [42]=[32] [42]=[38]

[43]=[24]

[45]=[2] [45]=[4] [45]=[7] [45]=[23] [45]=[26] [45]=[28] [45]=[30] [45]=[32] [45]=[38]

[51]=[2] [51]=[4] [51]=[7] [51]=[23] [51]=[26] [51]=[28] [51]=[30] [51]=[32] [51]=[38]

[52]=[31]

[55]=[34]

[61]=[2] [61]=[4] [61]=[7] [61]=[23] [61]=[26] [61]=[28] [61]=[30] [61]=[32] [61]=[38]

[63]=[37]

[65]=[34]

[67]=[37]

[71]=[34]

[76]=[2] [76]=[4] [76]=[7] [76]=[23] [76]=[26] [76]=[28] [76]=[30] [76]=[32] [76]=[38]

[77]=[2] [77]=[4] [77]=[7] [77]=[23] [77]=[26] [77]=[28] [77]=[30] [77]=[32] [77]=[38]

[78]=[2] [78]=[4] [78]=[7] [78]=[23] [78]=[26] [78]=[28] [78]=[30] [78]=[32] [78]=[38]

[79]=[37]

[82]=[34]

[85]=[2] [85]=[4] [85]=[7] [85]=[23] [85]=[26] [85]=[28] [85]=[30] [85]=[32] [85]=[38]

[86]=[37]

[88]=[34]

[90]=[37]

[91]=[2] [91]=[4] [91]=[7] [91]=[23] [91]=[26] [91]=[28] [91]=[30] [91]=[32] [91]=[38]

[93]=[34]

[101]=[37]

[102]=[2] [102]=[4] [102]=[7] [102]=[23] [102]=[26] [102]=[28] [102]=[30] [102]=[32] [102]=[38]

[109]=[2] [109]=[4] [109]=[7] [109]=[23] [109]=[26] [109]=[28] [109]=[30] [109]=[32] [109]=[38]

[125]=[2] [125]=[4] [125]=[7] [125]=[23] [125]=[26] [125]=[28] [125]=[30] [125]=[32] [125]=[38]

[131]=[2] [131]=[4] [131]=[7] [131]=[23] [131]=[26] [131]=[28] [131]=[30] [131]=[32] [131]=[38]

[132]=[2] [132]=[4] [132]=[7] [132]=[23] [132]=[26] [132]=[28] [132]=[30] [132]=[32] [132]=[38]

[134]=[37]

[135]=[2] [135]=[4] [135]=[7] [135]=[23] [135]=[26] [135]=[28] [135]=[30] [135]=[32] [135]=[38]

[139]=[34]

[151]=[2] [151]=[4] [151]=[7] [151]=[23] [151]=[26] [151]=[28] [151]=[30] [151]=[32] [151]=[38]

[154]=[37]

[155]=[2] [155]=[4] [155]=[7] [155]=[23] [155]=[26] [155]=[28] [155]=[30] [155]=[32] [155]=[38]

[156]=[39]

Всего найдено совпадающих строк в файле 1 и в файле 2 ->215

Максимальная длина в строках непрерывного фрагмента совпадающих строк ->5 со строки 33

  • Показать все удаленные в файле 1 строки, которые были добавлены в файле 2.

Смысл введения этой опции следующий: некоторые удаленные из файла 1 строки могут быть просто перемещены в другое место в файле 2. При сравнении файлов по Левенштейну это подозрительное с точки зрения поиска плагиата действие не будет обнаружено. В информационном окне это представляется следующим образом: если для удаленной строки файла 1 есть добавленные строки в файле 2, то они указаны в квадратных скобах через знак равенства. Например, для удаленной строки с номером 52 в файле 1 есть добавленная строка в файле 2 с номером 31: [52]=[31].

Пример результата в информационном окне показан ниже (синим цветом).

Удаленные строки в файле 1 среди добавленных в файле 2:

[41]=[2] [41]=[4] [41]=[7] [41]=[23] [41]=[26] [41]=[28] [41]=[30] [41]=[32] [41]=[38]

[51]=[2] [51]=[4] [51]=[7] [51]=[23] [51]=[26] [51]=[28] [51]=[30] [51]=[32] [51]=[38]

[52]=[31]

[55]=[34]

[61]=[2] [61]=[4] [61]=[7] [61]=[23] [61]=[26] [61]=[28] [61]=[30] [61]=[32] [61]=[38]

[63]=[37]

[65]=[34]

[67]=[37]

[71]=[34]

[76]=[2] [76]=[4] [76]=[7] [76]=[23] [76]=[26] [76]=[28] [76]=[30] [76]=[32] [76]=[38]

[77]=[2] [77]=[4] [77]=[7] [77]=[23] [77]=[26] [77]=[28] [77]=[30] [77]=[32] [77]=[38]

[78]=[2] [78]=[4] [78]=[7] [78]=[23] [78]=[26] [78]=[28] [78]=[30] [78]=[32] [78]=[38]

[79]=[37]

[82]=[34]

[85]=[2] [85]=[4] [85]=[7] [85]=[23] [85]=[26] [85]=[28] [85]=[30] [85]=[32] [85]=[38]

[86]=[37]

[88]=[34]

[90]=[37]

[91]=[2] [91]=[4] [91]=[7] [91]=[23] [91]=[26] [91]=[28] [91]=[30] [91]=[32] [91]=[38]

[93]=[34]

[101]=[37]

[102]=[2] [102]=[4] [102]=[7] [102]=[23] [102]=[26] [102]=[28] [102]=[30] [102]=[32] [102]=[38]

[109]=[2] [109]=[4] [109]=[7] [109]=[23] [109]=[26] [109]=[28] [109]=[30] [109]=[32] [109]=[38]

[125]=[2] [125]=[4] [125]=[7] [125]=[23] [125]=[26] [125]=[28] [125]=[30] [125]=[32] [125]=[38]

[135]=[2] [135]=[4] [135]=[7] [135]=[23] [135]=[26] [135]=[28] [135]=[30] [135]=[32] [135]=[38]

[139]=[34]

[151]=[2] [151]=[4] [151]=[7] [151]=[23] [151]=[26] [151]=[28] [151]=[30] [151]=[32] [151]=[38]

[154]=[37]

Всего найдено удаленных строк в файле 1 среди добавленных в файле 2 ->132