- •Содержание
- •Введение Актуальность магистерской диссертации
- •Понятие плагиата
- •Специфика понятия «плагиат» в программировании: окончательный вывод о заимствовании делает человек
- •Постановка задачи
- •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.4 Представление результатов нахождения наибольшей общей подпоследовательности (longest common subsequence, lcs)
При вычислении дистанции Левенштейна одновременно получается наибольшая общая подпоследовательность (longest common subsequence, LCS) двух сравниваемых файлов. В основном окне модуля наибольшая общая подпоследовательность – это все строки белого цвета. То есть все строки, которые одновременно входят без каких-либо изменений в оба файла. Длина LCS – это число строк белого цвета в главном окне модуля. Также это число показано в строке «Совпадает» (в нашем примере на – 73).
7.1.5 Представление метода шинглов для сравнения произвольных текстов
Результатом сравнения файлов методом шинглов является одно число – процент одинаковых шинглов в обеих файлах. Если этот процент велик (например, 50%), то возникает подозрение на плагиат. При этом, конечно, этот процент зависит от длины шингла и показывается в информационном окне при применении метода. В реализованном модуле можно самостоятельно выбирать длину шингла (Рисунок 27).
Рисунок 27 Выбор длины шинглов
7.1.6 Применение метода шинглов для сравнения исходных кодов
Метод шинглов для сравнения исходных кодов может применяться как к самим исходным текстам (рисунок 28), так и к токенизированному представлению (рисунки 29, 30). Белым цветом показаны шинглы, которые имеют дубликаты в другом сравниваемом файле.
Рисунок 28 Сравнение исходных кодов методом шинглов
Рисунок 29 Токенизированное представление исходных кодов
Рисунок 30 Сравнение токенизированного представления исходных кодов методом шинглов
Заключение
В результате выполнения магистерской диссертации автором выполнены следующие работы и получены следующие результаты:
Усовершенствованы инструментальные средства анализа исходных кодов программ в части реализации возможностей наглядной визуальной оценки проверяющим;
Реализован набор инструментов анализа исходных кодов программ, который состоит из двух взаимно дополняющих модулей: первый анализирует исходный код методами анализа исходных кодов, а второй позволяет анализировать этот же исходный код методами анализа произвольных текстов.
В работе предложен и реализован в виде самостоятельного модуля алгоритм поиска заимствованных фрагментов в исходных кодах программ, интегрирующий структурный анализ кодов (на основе токенов) и методы шинглов, дистанции Левенштейна и наибольшей общей подпоследовательности (longest common subsequence, LCS) для анализа произвольных текстов.
Список использованных источников (библиографический список)
Макаров В.В. Идентификация заимствований в прикладных программах, ИПУ РАН, УДК 001(06), Телекоммуникационные и новые информационные технологии.
Макаров В.В. Идентификация дублирования и плагиата в исходном тексте прикладных программ – Москва: Институт проблем управления РАН, 1999.
Красс А. Обзор автоматических детекторов плагиата в программах. http://detector.spb.su/pub/Sandbox/ReviewAlgorithms/survey.pdf .
Синельников С.М. и др. Энциклопедия предпринимателя – Санкт-Петербург, 1994.
Сухарев А.Я., Крутских В.Е. Большой юридический словарь (редакция) – Москва, 2002.
Брокгауз, Ефрон. Малый энциклопедический словарь.
Большая советская энциклопедия.
Литературная энциклопедия.
Нейл К., Шанмагантан Г. http://osmag.ru , 2004-2005.
Иванчегло С. Методы выявления плагиата в программировании: http://www.kv.by/index2000491105.htm , 2000.
Лифшиц Ю., Антипов Д., Евтифеева О.А., Котов А., Красс А.Л., Лакунин М.А., Лысенко Е.А., Семенников А., Счастливцев Р.Р. Обзор алгоритмов и детекторов обнаружения плагиата в исходных кодах программ. http://detector.spb.su – Санкт-Петербург, 2006.
http://www.antiplagiat.ru/ , 2005-2007.
http://neuroshell.forekc.ru/ .
Etxt Антиплагиат. Программа проверки уникальности текста.
Double Content Finder: http://textbroker.ru/main/dcfinder.html .
Детектор Плагиата: http://www.detector-plagiata.ru .
Прохоров А. Интернет: источник плагиата или средство его выявления? http://2balla.ru/content/view/1891/87/ .
Крутояров Д.В. Автоматизированная система поиска заимствований в электронных изданиях, опубликованных в сети Интернет. http://www.dissercat.com/content/avtomatizirovannaya-sistema-poiska-zaimstvovanii-v-elektronnykh-izdaniyakh-opublikovannykh-v .
Фенстер А.Г. Выявление плагиата при проверке студенческих программ. http://info.fenster.name/ .
Уникальность текста и как проверить текст на уникальность. http://chvv.com.ua/kak-proverit-tekst-na-unikalnost/ .
Шарапов Р.В., Шарапова Е.В. Система проверки текстов на заимствования из других Источников – Муром: Муромский институт (филиал) ГОУ ВПО "Владимирский государственный университет имени Александра Григорьевича и Николая Григорьевича Столетовых.
Болкунов И.А. Пути преодоления студенческого плагиата – Ялта: Евпаторийский педагогический факультет, РВУЗ «Крымский гуманитарный университет.
Нейл К., Шанмагантан Г. Web-инструмент для выявления плагиата, Открытые системы №01, 2005.
Евтифеева О.А., Красс А.Л., Лакунин М.А., Лысенко Е.А., Счастливцев Р.Р. Анализ поиска плагиата в исходных кодах программ – Санкт-Петербург: Санкт-Петербургский государственный университет.
Амонс А.А., Зайцев С.Ю., Киричек А.А. Выявление плагиата в программном коде C# – Вестник НТУУ «КПИ» Информатика, управление и вычислительная техника №53.
Левенштейн В. И. Двоичные коды с исправлением выпадений, вставок и замещений символов – Докл. Академий Наук СССР, 1965 – 845–848 с.
Damerau F.A. Technique for Computer Detection and Correction of Spelling Errors // Communications of the ACM. 1964. Vol. 7. No. 3. P. 171–176.
EUGENE W. MYERS, An O(ND) Difference Algorithm and Its Variations Department of Computer Science, University of Arizona, Tucson, AZ 85721, U.S.A.
Sun Wu, Udi Manber, Gene Myers, An O(NP) Sequence Comparison Algorith, Department of Computer Science University of Arizona Tucson, AZ 85721 and Webb Miller3, Department of Computer Science, The Pennsylvania State University University Park, PA 16802.August 1989
Hyyro H. Practical Methods for Approximate String Matching // Department of Computer Sciences, University of Tampere: PhD Thesis. Finland, 2003. 96 p.
Ukkonen E. Algorithms for Approximate String Matching // Information and Control. 1985. No. 64. P. 100–118.
Ukkonen E. Finding Approximate Patterns in Strings // Journal of Algorithms. 1985. No. 6. Р. 132–137.. Wagner R.A., Fischer M.J. The String-to-string Correction Problem // Journal of ACM. 1974. Vol. 21. No. 1. P. 168–173.
Черненький В.М., Гапанюк Ю.Е. МЕТОДИКА ИДЕНТИФИКАЦИИ ПАССАЖИРА ПО УСТАНОВОЧНЫМ ДАННЫМ
Зеленков Ю.Г., Сегалович И.В. Сравнительный анализ методов определения нечетких дубликатов для Web-документов, http://rcdl2007.pereslavl.ru/papers/paper_65_v1.pdf
Zweig. Syntactic clustering of the Web. Proc. of the 6th International World Wide Web Conference, April 1997.
U. Manber. Finding Similar Files in a Large File System. Winter USENIX Technical Conference, 1994.
R.A. Wagner, M.J. Fischer. The string-to-string correction problem. J. ACM 21 1 (1974). P. 168—173
A. Broder, S. Glassman, M. Manasse and G. Zweig. Syntactic clustering of the Web. Proc. of the 6th International World Wide Web Conference, April 1997.
Евсеев А.А. Анализ текстов на заимствование методом построения семантических моделей.
A. Broder, M. Charikar et al. Min-wise independent permutations, Proceedings of the thirtieth annual ACM symposium on Theory of computing, 1998
A. Chowdhury, O. Frieder, D. Grossman, M. McCabe. Collection statistics for fast duplicate document detection. ACM Transactions on Information Systems (TOIS), Vol. 20, Issue 2 (April 2002).
A.Chowdhury. Duplicate Data Detection. http://ir.iit.edu/~abdur/Research/Duplicate.html
A. Kolcz, A. Chowdhury, J. Alspector. Improved Robustness of Signature-Based Near-Replica Detection via Lexicon Randomization. KDD 2004. http://ir.iit.edu/~abdur/publications/470-kolcz.pdf
D. Fetterly, M. Manasse, M. Najork. A Large-Scale Study of the Evolution of Web Pages, WWW2003, May 20-24, 2003, Budapest, Hungary.
S. Ilyinsky, M. Kuzmin, A. Melkov, I. Segalovich. An efficient method to detect duplicates of Web documents with the use of inverted index. WWW Conference 2002.
http://www.efg2.com/Lab/Mathematics/CRC.htm
http://www.m4-software.com/en-index.htm
http://www.copycatchgold.com
