- •Содержание
- •Введение Актуальность магистерской диссертации
- •Понятие плагиата
- •Специфика понятия «плагиат» в программировании: окончательный вывод о заимствовании делает человек
- •Постановка задачи
- •1.1 Необходимость дополнительной проверки на основе анализа структурного анализа кодов
- •1.2 Общая схема работы модулей инструментальной системы поиска плагиата
- •Теоретические основы поиска плагиата в исходных кодах программ
- •2.1 Классификация методов поиска плагиата в программировании
- •2.2 Атрибутные методы поиска плагиата
- •2.3 Структурные методы поиска плагиата
- •2.3.1 Строковое выравнивание
- •2.3.2 Метод поиска на xml-представлении
- •2.3.3 Использование приближения Колмогоровской сложности
- •2.3.4 Метод идентификационных меток
- •2.3.5 Нейросетевые методы обнаружения плагиата
- •2.4 Другие методы
- •Методы поиска плагиата в произвольных текстах
- •3.1 Локальные методы
- •3.1.2 Методы на основе меры tf
- •3.1.3 Методы, использующие понятия шинглов
- •3.1.4 Методы, использующие семантические сети
- •3.2 Глобальные методы
- •3.2.1 Методы на основе меры tf-idf
- •3.2.3 Метод «опорных» слов
- •3.3 Метод шинглов
- •Разбиение на шинглы;
- •Вычисление хешей шинглов;
- •3.3.1 Канонизация текстов
- •3.3.2 Разбиение на шинглы
- •3.3.3 Вычисление хешей шинглов
- •3.4 Дистанция (расстояние) Левенштейна
- •3.4.1 Алгоритм Вагнера — Фишера
- •3.5. Наибольшая общая последовательность (longest common subsequence, lcs)
- •3.6 Вычисление хеш-функции
- •3.6.1 Параметры вычисление хеш-функции: полином-генератор, разрядность и стартовое слово
- •3.6.2 Популярные и стандартизованные полиномы
- •3.7 Виды представления исходного кода
- •3.8 Представление исходного кода в виде токенов
- •Обзор инструментальных средств и сервисов анализа плагиата в программах и произвольных текстах
- •4.1 Обзор программ поиска плагиата в программировании
- •4.2 Обзор сервисов поиска плагиата
- •4.3 Обзор программ поиска плагиата в произвольных текстах
- •Описание используемых методов поиска плагиата в исходных кодах и произвольных текстах
- •5.1 Общая схема поиска
- •5.1.1 Cхема поиска для исходных кодов
- •5.1.2 Основной структурный метод для анализа исходных кодов
- •5.1.2.1 Достоинства и недостатки
- •5.1.3 Дополнительный атрибутный метод для исходных текстов
- •5.1.3.1 Достоинства и недостатки
- •5.2.1 Cхема поиска для произвольных текстов (в том числе и программ)
- •Программная реализация модуля поиска плагиата методами анализа исходных кодов программ
- •6.1 Интерфейс модуля поиска плагиата в исходных кодах программ
- •6.1.1 Главное окно модуля поиска плагиата методами анализа исходных кодов
- •6.1.2 Окно групповых режимов анализа
- •6.2 Взаимодействие модуля поиска плагиата методами анализа исходных кодов
- •6.2.1 Взаимодействие модуля с архивом работ и базой языков (добавление файла в базу)
- •6.2.2 Взаимодействие модуля с архивом работ и базой языков (частотный анализ, автоматический частотный анализ)
- •6.2.3 Взаимодействие модуля с архивом работ и базой языков (автоматический анализ последовательностей операторов)
- •6.2.4. Взаимодействие модуля с архивом работ и базой языков (анализ последовательностей операторов, просчет всех пиков)
- •6.2.5 Взаимодействие модуля с архивом работ и базой языков (удаление файла/языка из базы)
- •6.2.6 Взаимодействие модуля с базой языков (добавление языка в базу)
- •6.2.9 Поиск первоисточника и списка первоисточников
- •6.2.10 Некоторые особенности модуля
- •6.3 Описание отчетов по анализу плагиата
- •6.3.1 Критерии автоматического заключения о наличии плагиата при пакетном и полном анализе
- •6.3.2 Алгоритм поиска первоисточника для файла или списка первоисточников при полном анализе
- •6.3.3 Сводный отчет
- •6.3.4 Итоговый отчет
- •6.3.5 Экспорт итогового протокола в Excel
- •6.3.5.1 Исследование итогового протокола по полученным диаграммам Excel
- •6.3.6 Экспорт списка первоисточников в Excel
- •6.3.6.1 Исследование списка первоисточников в Excel
- •6.4 Пример работы модуля
- •6.4.1 Пример 1 анализа последовательности операторов
- •Режим работы модуля PlagiatSearch с произвольным текстом
- •Режим работы модуля PlagiatSearch с исходным кодом
- •7.1.2 Меню «Анализ» и его возможности для поиска плагиата в произвольных текстах
- •7.1.3 Информационное окно модуля PlagiatSearch поиска плагиата в произвольных текстах с результатами вычисления дистанции Левенштейна
- •7.1.4 Представление результатов нахождения наибольшей общей подпоследовательности (longest common subsequence, lcs)
- •7.1.5 Представление метода шинглов для сравнения произвольных текстов
- •7.1.6 Применение метода шинглов для сравнения исходных кодов
- •Заключение
- •Список использованных источников (библиографический список)
- •Приложение Доработанная блок-схема алгоритма анализа последовательности операторов (с показом наиболее длинного совпадающего фрагмента кода)
- •55. Мд.Иу.Мсавпсрит.Пз
7.1.3 Информационное окно модуля PlagiatSearch поиска плагиата в произвольных текстах с результатами вычисления дистанции Левенштейна
Результаты вычисления дистанции Левенштейна в информационном окне имеют следующую структуру (покажем на конкретном примере):
Расстояние Левенштейна =254
Число строк: в файле 1 =332; в файле 2 =227
Совпадает : 73;
Изменено : 146;
Добавлено : 8;
Удалено : 113;
Комментарий к средней части главного окна:
Совпадает (N, белый), Изменено (M, зеленый), Добавлено (A, голубой), Удалено (D, красный)
Решение (по Левенштейну)
[1]N [2]N [3]N [4]N [5]N [6]N [7]M [8]N [9]N [10]N
[11]N [12]N [13]N [14]N [15]M [16]M [17]M [18]M [19]M [20]M
[21]D [22]D [23]D [24]D [25]N [26]N [27]M [28]M [29]M [30]M
[31]M [32]M [33]M [34]M [35]N [36]N [37]N [38]N [39]N [40]N
[41]N [42]N [43]N [44]N [45]N [46]N [47]N [48]M [49]N [50]D
[51]D [52]D [53]D [54]D [55]D [56]D [57]D [58]N [59]N [60]N
[61]N [62]N [63]M [64]D [65]D [66]N [67]N [68]A [69]N [70]N
[71]M [72]M [73]D [74]N [75]D [76]D [77]D [78]D [79]D [80]D
[81]D [82]N [83]M [84]A [85]N [86]D [87]D [88]D [89]D [90]D
[91]D [92]D [93]D [94]D [95]D [96]D [97]D [98]D [99]D [100]D
[101]D [102]D [103]D [104]D [105]D [106]D [107]D [108]D [109]N [110]M
[111]M [112]M [113]M [114]M [115]M [116]M [117]D [118]D [119]D [120]D
[121]D [122]D [123]D [124]N [125]D [126]D [127]D [128]D [129]D [130]D
[131]N [132]N [133]M [134]N [135]N [136]N [137]N [138]N [139]N [140]N
[141]N [142]N [143]N [144]N [145]N [146]N [147]N [148]M [149]M [150]M
[151]M [152]M [153]M [154]M [155]M [156]M [157]M [158]M [159]M [160]M
[161]M [162]M [163]M [164]M [165]M [166]M [167]M [168]M [169]D [170]D
[171]D [172]D [173]D [174]D [175]D [176]D [177]D [178]D [179]D [180]D
[181]D [182]D [183]D [184]D [185]D [186]N [187]M [188]M [189]M [190]M
[191]M [192]M [193]M [194]M [195]M [196]M [197]M [198]A [199]A [200]A
[201]N [202]M [203]M [204]M [205]A [206]N [207]N [208]M [209]N [210]M
[211]M [212]M [213]M [214]M [215]N [216]N [217]M [218]M [219]M [220]M
[221]M [222]M [223]M [224]M [225]M [226]M [227]M [228]M [229]M [230]M
[231]M [232]M [233]M [234]M [235]M [236]M [237]M [238]M [239]M [240]M
[241]M [242]M [243]D [244]D [245]D [246]D [247]N [248]M [249]M [250]D
[251]D [252]D [253]N [254]M [255]M [256]M [257]M [258]M [259]M [260]M
[261]M [262]M [263]M [264]M [265]M [266]M [267]M [268]M [269]M [270]M
[271]M [272]M [273]M [274]M [275]M [276]M [277]M [278]D [279]D [280]D
[281]D [282]D [283]D [284]D [285]D [286]D [287]D [288]D [289]D [290]D
[291]D [292]D [293]D [294]D [295]D [296]D [297]D [298]D [299]D [300]D
[301]D [302]D [303]D [304]D [305]D [306]D [307]D [308]N [309]M [310]M
[311]M [312]M [313]M [314]M [315]M [316]M [317]M [318]M [319]M [320]M
[321]M [322]M [323]M [324]M [325]M [326]M [327]M [328]M [329]M [330]M
[331]M [332]M [333]M [334]A [335]N [336]D [337]N [338]N [339]N [340]A
Результаты имеют следующий смысл: показаны последовательные действия со строками (начиная с первой и до последней), которые выполняются над строками первого текстового файла для того, чтобы получить второй текстовый файл:
Cимволом N (и белым цветом в главном окне модуля) обозначается строка в первом файле, которая переносится во второй файл без изменений. Число таких строк – это длина наибольшей общей подпоследовательности (longest common subsequence, LCS). Также это число показано в строке «Совпадает» (в нашем примере – 73).
Cимволом M (и зеленым цветом в главном окне модуля) обозначается строка в первом файле, которая переносится во второй файл с изменениями;
Cимволом A (и голубым цветом в главном окне модуля) обозначается добавленная к первому файлу строка (которой, естественно, не было в первом файле, но которая была во втором файле ), которая переносится во второй файл без изменений;
Cимволом D (и красным цветом в главном окне модуля) обозначается строка в первом файле, которая была из него удалена и которой теперь не будет во втором файле
Как нетрудно видеть, число номеров (в нашем случае – 340) в результате вычисления дистанции Левенштейна равно сумме числа строк в первом файле (в нашем примере – 332) плюс число добавленных строк (в нашем случае 8).
