- •Содержание
- •Введение Актуальность магистерской диссертации
- •Понятие плагиата
- •Специфика понятия «плагиат» в программировании: окончательный вывод о заимствовании делает человек
- •Постановка задачи
- •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. Мд.Иу.Мсавпсрит.Пз
6.2.6 Взаимодействие модуля с базой языков (добавление языка в базу)
Взаимодействие модуля с базой языков (добавление языка в базу) показано на рисунке 18:
1) Нормализация файла с операторами языка.
2) Занесение списка операторов в базу языков программирования.
3) Создание файла для списка файлов этого языка.
4) Добавление названия нового языка в файл известных языков.
Рисунок 18 Взаимодействие модуля с базой языков
6.2.7 Пакетный режим анализа (1->n)
При пакетном режиме анализа (режим сравнения программ 1->n) – режим, при котором текст одной из программ (в левом окне) автоматически (без участия пользователя) сравнивается двумя методами (частотным анализом и анализом последовательности операторов) с каждой из программ в списке (файле Batch.txt) и последующей автоматической записью этого сравнения в сводный отчет.
6.2.8 Полный анализ (n->n)
При полном анализе (режим сравнения n->n) – режим, при котором текст каждой из программ в базе данных (файле списка файлов для данного языка, например, DelphiF.txt) сравнивается двумя методами (частотным анализом и анализом последовательности операторов) с каждой из программ в базе данных (файле списка файлов для данного языка, например, DelphiF.txt) и последующей автоматической записью этого сравнения в итоговый отчет.
6.2.9 Поиск первоисточника и списка первоисточников
При наличии сводного отчета для файла, в котором есть подозрительные с точки зрения наличия плагиата файлы (то есть, обнаружены файлы с похожим кодом) правомерно поставить вопрос о том, кто у кого списывал. Для решения этой задачи и введена возможность поиска первоисточника – исходного текста, с которого предположительно списывались другие программы.
6.2.10 Некоторые особенности модуля
Как было описано выше, при добавлении нового текста программы в базу, для него создается сразу три файла: непосредственно копия оригинала, файл последовательности операторов (из которого образуется впоследствии строка токенов) и файл описания. Важно заметить, что файл описания (см. пример 3) является одним из ключевых, в нем храниться информация о языке программирования, на котором написан код, теме, учебной группе, фамилии автора, о пути к оригиналу файла и дате его последних изменений. При заполнении этих полей, следует обратить особое внимание на правильность фамилии автора, для исключения поиска плагиата среди работ одного и того же студента. Дата и время последних изменений в файле позволит предположить, кто является плагиатором.
Для повышения надежности и скорости работы программы на медленных ПК, следует исключать из добавляемых файлов стандартные части, свойственные данному языку программирования, а так же из базы операторов языка программирования те оператоы, которые обычно используются в качестве разделителей (например, в C++ обычно разделяют текст программы с помощью «////////////////////////»).
6.3 Описание отчетов по анализу плагиата
6.3.1 Критерии автоматического заключения о наличии плагиата при пакетном и полном анализе
Ввиду того, что при пакетном и полном анализе человек не включен в процесс принятия решения о наличии плагиата, предложены следующие эмпирические критерии:
1. Для частотного анализа сравнивается число типов операторов в двух файлах. Вычисляются два числа: число типов операторов, которые по частоте вхождения полностью совпали, и число типов операторов, разница в частоте вхождения которых отличается не более, чем на 1%. Второе число введено для того, чтобы иметь возможность учитывать практически идентичные, но не полностью совпадающие частоты вхождения типов операторов. Вывод о наличии плагиата по частоте операторов делается в том случае, если хотя бы для одного из сравниваемых файлов процент одинаковых со вторым файлом типов операторов превосходит выбранное пользователем значение (по умолчанию 70%). Эта доля выбирается пользователем в окне групповых режимов анализа и может иметь следующие значения (в процентах): 30,40,50,60,70,80,90. Если эта доля не выбрана, то предполагается критерий – 70%. То есть устанавливается, что если в двух сравниваемых программах доля практически идентичных по количеству вхождений типов операторов превышает 70% от общего числа типов операторов в одной из программ, то делается вывод о наличии плагиата.
2. Для анализа последовательности совпавших типов операторов критерий заключения о наличии плагиата устанавливается исходя из доли длины совпавшей последовательности экземпляров операторов к числу экземпляров операторов в программе. Эта доля выбирается пользователем в окне групповых режимов анализа и может иметь следующие значения (в процентах): 10,20,30,40,50. Если эта доля не выбрана, то предполагается критерий – 50%. То есть устанавливается, что если в двух сравниваемых программах совпадающая последовательность экземпляров операторов превышает половину программы.
