Автоматизированная система проверки программных кодов на языке python на наличие плагиата
Описание работы
Работа пользователя Beskonechno
Добрый день! Уважаемые студенты, Вашему вниманию представляется дипломная работа на тему: «Автоматизированная система проверки программных кодов на языке python на наличие плагиата»
Оригинальность работы 95%
Аннотация
Были проанализированы ныне существующие системы антиплагиата для программного кода, рассмотрены методы для поиска заимствований в тексте/коде, в системе реализованы методы, признанные наиболее удачными для достижения поставленной цели. В реализованной системе учтены и устранены недостатки, обнаруженные в существующих системах. Автоматизированная система проверки программных кодов на языке Python на наличие плагиата реализована на языке Python, может использоваться преподавателем в рабочих целях для обнаружения кластера студентов, чьи работы схожи. Работы могут загружаться как из облачного хранилища, так и с локального носителя.
Abstract
This paper outlines a new approach to plagiarism detection between program codes performed in Python. The object of the study is a system for similarity detecting which combines different approaches of text and program analysis. The developed system was tested on programs created by third-year students of the educational programs “Applied Mathematics” and “Computer Security” as tasks in the disciplines “Computer Practicum” and “Python Programming Language”.
In this report there is an overview of existing anti-plagiarism systems for program code. Moreover, methods for finding similarities in texts/ program codes were considered. As a result, the most effective methods were chosen to be implemented in the developed system. Created system excludes most of disadvantages which were found during critical analysis of analogues. Plagiarism checking system is written in Python and can be used by a teacher for work purposes to find clusters of students whose codes with a certain probability are similar. Two import methods were realized: files can be downloaded both from cloud and local storage.
Оглавление
Аннотация..................................................................................................... 8
Abstract.......................................................................................................... 9
Введение..................................................................................................... 11
Постановка задачи и цель........................................................................... 16
Подходы к сравнению текстов и классификация методов поиска
заимствований в тексте/программном коде............................................... 18
Локальные и глобальные методы поиска заимствований......................... 23
Существующие системы для обнаружения плагиата в тексте/программном
коде............................................................................................................. 30
Задача принятия решения........................................................................... 39
Методы поиска плагиата, реализованные в системе.................................. 41
Описание разработанной автоматизированной системы........................... 45
Результаты.................................................................................................. 56
Личный вклад участников.......................................................................... 58
Заключение................................................................................................. 59
Список литературы..................................................................................... 60
А1. Описание применения.......................................................................... 66
А2. Руководство оператора........................................................................ 73
А3. Программа и методика испытаний...................................................... 82
А4. Руководство программиста................................................................. 90
Важно отметить, что человек, заимствующий информацию, может скопировать информацию как полностью, так и частично, изменив оригинальные материалы. Для сокрытия факта плагиата нарушитель может заменять некоторые слова синонимичными, переставлять местами слова, предложения или абзацы. Иногда производится добавление лишних пробелов, замена букв алфавита буквами с аналогичным написанием с иной раскладки клавиатуры, использование «невидимых символов», создание «опечаток», изменение знаков препинания.
13
Таким образом, в программировании важно выделить группы работ, которые имеют между собой большое сходство, а затем, учитывая задание, были ли даны рекомендации относительно использования шаблонов, просмотреть работы и сделать вывод: студенты подошли к выполнению работы недобросовестно, либо, наоборот, прислушались к рекомендациям преподавателя и для решения задач использовали определенные построения логики решения.
Работу выполняла команда студентов: Бубнова Мария Андреевна и Мелех Никита Андреевич.
Разделение ответственности между исполнителями было проведено следующим образом:
http://ir.cs.georgetown.edu/publications/downloads/p171-chowdhury.pdf (дата обращения: 13.04.2020)
Research Conference, CSERC 2013, Arnhem, The Netherlands, April 04 - 05, 2013, pages 19–30. ACM, 2013.
content/uploads/2013/05/CSERC2013_presentation_Jurriaan_Hage.pdf (дата обращения 13.04.2020)
pedagogy.ru/ru/article/view?id=1681 (дата обращения: 13.05.2020)
Оригинальность работы 95%
Аннотация
- работе освещается создание системы для обнаружения заимствований в программном коде, написанном на языке программирования Python. Объектом исследования предстают коды программ, которые были созданы студентами третьего курса образовательных программ «Прикладная математика» и
Были проанализированы ныне существующие системы антиплагиата для программного кода, рассмотрены методы для поиска заимствований в тексте/коде, в системе реализованы методы, признанные наиболее удачными для достижения поставленной цели. В реализованной системе учтены и устранены недостатки, обнаруженные в существующих системах. Автоматизированная система проверки программных кодов на языке Python на наличие плагиата реализована на языке Python, может использоваться преподавателем в рабочих целях для обнаружения кластера студентов, чьи работы схожи. Работы могут загружаться как из облачного хранилища, так и с локального носителя.
Abstract
This paper outlines a new approach to plagiarism detection between program codes performed in Python. The object of the study is a system for similarity detecting which combines different approaches of text and program analysis. The developed system was tested on programs created by third-year students of the educational programs “Applied Mathematics” and “Computer Security” as tasks in the disciplines “Computer Practicum” and “Python Programming Language”.
In this report there is an overview of existing anti-plagiarism systems for program code. Moreover, methods for finding similarities in texts/ program codes were considered. As a result, the most effective methods were chosen to be implemented in the developed system. Created system excludes most of disadvantages which were found during critical analysis of analogues. Plagiarism checking system is written in Python and can be used by a teacher for work purposes to find clusters of students whose codes with a certain probability are similar. Two import methods were realized: files can be downloaded both from cloud and local storage.
Оглавление
Аннотация..................................................................................................... 8
Abstract.......................................................................................................... 9
Введение..................................................................................................... 11
Постановка задачи и цель........................................................................... 16
Подходы к сравнению текстов и классификация методов поиска
заимствований в тексте/программном коде............................................... 18
Локальные и глобальные методы поиска заимствований......................... 23
Существующие системы для обнаружения плагиата в тексте/программном
коде............................................................................................................. 30
Задача принятия решения........................................................................... 39
Методы поиска плагиата, реализованные в системе.................................. 41
Описание разработанной автоматизированной системы........................... 45
Результаты.................................................................................................. 56
Личный вклад участников.......................................................................... 58
Заключение................................................................................................. 59
Список литературы..................................................................................... 60
А1. Описание применения.......................................................................... 66
А2. Руководство оператора........................................................................ 73
А3. Программа и методика испытаний...................................................... 82
А4. Руководство программиста................................................................. 90
Введение
Важно отметить, что до настоящего момента никому не удалось создать идеальную систему, позволяющую выявить и, что важно, доказать наличие плагиата. Существующие решения позволяют лишь определить блоки, которые в тексте, либо программном коде могут являться заимствованными,
11
- настоящее время набирает обороты цифровизация пространства, которая подразумевает увеличение интеллектуальной собственности. Множество информации размещено на открытых ресурсах, где любой человек может ознакомиться с материалами.
- сфере образования все больше работ выполняется с использованием Интернета, так как книги, учебные пособия, научные статьи гораздо легче найти на электронных ресурсах, позволяющих изучить интересующую область, чтобы выполнить самостоятельное исследование. Однако есть те, кто готов присвоить себе чужие наработки, поэтому возникает нарушение авторских прав. Во время обучения школьникам необходимо писать эссе,
Важно отметить, что до настоящего момента никому не удалось создать идеальную систему, позволяющую выявить и, что важно, доказать наличие плагиата. Существующие решения позволяют лишь определить блоки, которые в тексте, либо программном коде могут являться заимствованными,
11
но итоговое решение о наличии плагиата в работе до сих пор остается за проверяющим [1].
Актуальность работы заключается в том, что разработка системы для обнаружения плагиата в программном коде была начата в 2018 году по заказу научного руководителя, так как в последние несколько лет набор студентов на образовательные программы увеличился, из-за этого возросла нагрузка на преподавателей, проверяющих лабораторные работы, и их ассистентов. Система станет новым методом контроля работы студентов в ходе учебного процесса. При желании, системой смогут пользоваться и другие преподаватели университета, в отличие от большинства аналогов реализованная система обладает графическим интерфейсом, интуитивно понятным пользователю.
В итоге сложилась цепочка работ: междисциплинарная курсовая работа «Автоматизированная система проверки лабораторных работ студентов на языках C/C++/Python», затем был выполнен проект «Модуль добавления пользовательских методов», завершением работы над системой является выполнение выпускной квалификационной работы «Автоматизированная система проверки программных кодов на языке Python».
Все это время проводилась комплексная работа по улучшению функциональных возможностей и графического интерфейса системы, чтобы она не только могла конкурировать с существующими аналогами, но и превосходила их.
Для того чтобы оценить оригинальность материалов, надо осознавать, что означает понятие «плагиат», и какие материалы могут затруднять поиск в Интернете оригинальных работ.
Понятие плагиата является широким и может включать в себя:
Актуальность работы заключается в том, что разработка системы для обнаружения плагиата в программном коде была начата в 2018 году по заказу научного руководителя, так как в последние несколько лет набор студентов на образовательные программы увеличился, из-за этого возросла нагрузка на преподавателей, проверяющих лабораторные работы, и их ассистентов. Система станет новым методом контроля работы студентов в ходе учебного процесса. При желании, системой смогут пользоваться и другие преподаватели университета, в отличие от большинства аналогов реализованная система обладает графическим интерфейсом, интуитивно понятным пользователю.
В итоге сложилась цепочка работ: междисциплинарная курсовая работа «Автоматизированная система проверки лабораторных работ студентов на языках C/C++/Python», затем был выполнен проект «Модуль добавления пользовательских методов», завершением работы над системой является выполнение выпускной квалификационной работы «Автоматизированная система проверки программных кодов на языке Python».
Все это время проводилась комплексная работа по улучшению функциональных возможностей и графического интерфейса системы, чтобы она не только могла конкурировать с существующими аналогами, но и превосходила их.
Для того чтобы оценить оригинальность материалов, надо осознавать, что означает понятие «плагиат», и какие материалы могут затруднять поиск в Интернете оригинальных работ.
Понятие плагиата является широким и может включать в себя:
- Заимствование текста из работ других авторов без каких-либо изменений [2];
- Нарушение авторских прав авторов/изобретателей в качестве использования произведения и/или изобретения в полном объеме или частичном без указания источника, автора [3];
- Публикация чужих трудов под своим именем, без внесения изменений
- Принуждение к соавторству [5].
Важно отметить, что человек, заимствующий информацию, может скопировать информацию как полностью, так и частично, изменив оригинальные материалы. Для сокрытия факта плагиата нарушитель может заменять некоторые слова синонимичными, переставлять местами слова, предложения или абзацы. Иногда производится добавление лишних пробелов, замена букв алфавита буквами с аналогичным написанием с иной раскладки клавиатуры, использование «невидимых символов», создание «опечаток», изменение знаков препинания.
- системе, описанной в работе, итоговое решение о наличии плагиата в программном коде будет принимать преподаватель, основываясь на результатах применения одного или нескольких методов сравнения кода/текста, а затем просмотре кластеров работ, которые имеют сходство между собой выше отметки, обозначенной преподавателем. В существующих системах создателем оригинальной работы считается тот, кто загрузил работу первым, разработанная же система является системой поддержки принятия решения, а лицом, принимающим решение, будет преподаватель.
13
убирать комментарии к коду, некоторые программы позволяют изменять логические блоки без изменения итогового результата работы программы. Сходства программ можно разделить на пять типов:
14
-
- Программа скопирована полностью или частично, нарушитель не внес изменения в скопированные фрагменты;
-
- Логические структуры двух программ полностью идентичны, однако произведены замены названий переменных;
-
- Нарушитель изменил скопированный блок кода, посредством изменения или удаления комментариев, пробелов. Некоторые языки программирования не чувствительны к отступам в начале строки, соответственно, в некоторых программах их количество может быть изменено;
-
- Блок кода изменяется посредством изменения операторов языка, логическая структура выполнения программы идентична;
-
- Одинаковый результат работы программы, но реализованы совершенно по-разному. Важно отметить, что такой тип сходства не будет считаться заимствованием/плагиатом, так как умение изменить логическую структуру программы показывает, что учащийся разбирается в материале.
- программировании обнаружение плагиата осложняет еще и большое наличие шаблонов, которыми рекомендуют пользоваться при создании сайтов
14
Таким образом, в программировании важно выделить группы работ, которые имеют между собой большое сходство, а затем, учитывая задание, были ли даны рекомендации относительно использования шаблонов, просмотреть работы и сделать вывод: студенты подошли к выполнению работы недобросовестно, либо, наоборот, прислушались к рекомендациям преподавателя и для решения задач использовали определенные построения логики решения.
Работу выполняла команда студентов: Бубнова Мария Андреевна и Мелех Никита Андреевич.
Разделение ответственности между исполнителями было проведено следующим образом:
- М. Бубнова должна выполнить обзоры существующих методов для поиска наличия заимствований в программном коде, обзоры существующих систем, направленных на обнаружение плагиата в тексте/коде. Отвечает за создание и реализация нового метода для обнаружения заимствования, тестирование нового метода и доработка ранее существующих. Подготовка программной документации к системе.
- Н. Мелех должен доработать архитектуру существующей системы, создать и встроить модули, отвечающие за добавление пользовательских методов, загрузку файлов с локального носителя, улучшить интерфейс, реализовать возможность выгрузки таблиц в облако.
Список литературы
60
- M. Potthast, T. Gollub, M. Hagen, J. Grabegger, J. Kiesel, M.Michel, A. Oberlander, M. Tippmann, A. Barron-Cenedo, P.Gupta, P. Rosso, B. Stein
- Синельников С.М. и др. Энциклопедия предпринимателя – СПб:
- Сухарев А.Я., Крутских В.Е. Большой юридический словарь (редакция)
- Брокгауз, Ефрон. Малый энциклопедический словарь. - СПб.: Брокгауз-
- R.L. Haupt. Plagiarism in Journal Articles// IEEE Antennas and Propagation, Aug. 2003, vol. 45, n. 4.
- Soledad Pera Maria и Ng Yiu-Kai A Structural, Content-Similarity Measure for Detecting Spam Documents on the Web // INTERNATIONAL JOURNAL OF WEB INFORMATION SYSTEMS, С. 431-464
- C. K. Roy, J. R. Cordy, R. Koschke, Comparison and Evaluation of Code Clone Detection Techniques and Tools: A Qualitative Approach. Science of Computer Programming Volume 74, Issue 7, 1 May 2009, p. 470–495.
- Лифшиц Ю., Антипов Д., Евтифеева О.А., Котов А., Красс А.Л.,
- Евстифеева О.А., Красс А.Л., Лакунин М.А., Лысенко Е.А., Счастливцев Р.Р. Анализ алгоритмов поиска плагиата в исходных кодах программ. -
60
- C. Manning, P. Raghavan, H. Schütze. Introduction to Information Retrieval.
- TF-IDF. URL: http://www.tfidf.com (дата обращения: 13.04.2020)
- A. Chowdhury, O. Frieder, D. Grossman, M. McCabe. Collection statistics for fast duplicate document detection. ACM Transactions on Information Systems
http://ir.cs.georgetown.edu/publications/downloads/p171-chowdhury.pdf (дата обращения: 13.04.2020)
- A. Kolcz, A. Chowdhury, J. Alspector. Improved Robustness of Signature-Based Near-Replica Detection via Lexicon Randomization. KDD 2004. URL: http://ir.cs.georgetown.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. URL^ https://www.microsoft.com/en-us/research/wp-content/uploads/2004/02/p97-fetterly.pdf (дата обращения: 13.04.2020)
- Романов А.С. Методика идентификации автора текста на основе аппарата опорных векторов. – Доклады Томского государственного университета систем управления и радиоэлектроники, 2009. URL: https://cyberleninka.ru/article/n/metodika-identifikatsii-avtora-teksta-na-osnove-apparata-opornyh-vektorov (дата обращения: 13.04.2020)
- Diego A. Rodríguez Torrejón, José Manuel Martín Ramos Text Alignment
- J. Hage, B. Vermeer, and G. Verburg. Research paper: Plagiarism Detection for Haskell with Holmes. In M. C. J. D. van Eekelen, E. Barendsen, P. B. Sloep, and G. C. van der Veer, editors, Proceedings of the 3rd Computer Science Education
Research Conference, CSERC 2013, Arnhem, The Netherlands, April 04 - 05, 2013, pages 19–30. ACM, 2013.
- J. Hage, B. Vermeer, G. Verburg. Holmes for Haskell. Keeping your Haskell
content/uploads/2013/05/CSERC2013_presentation_Jurriaan_Hage.pdf (дата обращения 13.04.2020)
- F.A. Damerau Technique for Computer Detection and Correction of Spelling Errors // Communications of the ACM. 1964. Vol. 7. No. 3. P. 171–176.
- 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.
- Weber, R., Schek, H. J., Blott, S. (1998). A Quantitative Analysis and PerformanceStudy for Similarity-Search Methods in High-Dimensional Spaces. // Proceedings of the 24th VLDB Conference, New York C, 194–205.
- Севостьянова И.О. Обзор систем проведения проверки на плагиат: общероссийские и зарубежные. Научное обозрение. Педагогические науки. –
pedagogy.ru/ru/article/view?id=1681 (дата обращения: 13.05.2020)
- Желудков А.В., Макаров Д.В., Фадеев П.В. Исследование алгоритмов точного поиска подстроки в строке. Символ науки, 2016. URL: https://cyberleninka.ru/article/v/issledovanie-algoritmov-tochnogo-poiska-podstroki-v-stroke (дата обращения: 13.04.2020)
- А.В. Желудков, Д.В. Макаров, П.В. Фадеев. Особенности алгоритмов нечеткого поиска. Инженерный вестник, декабрь 2014. URL:
- Антиплагиат. [Офиц. сайт]. URL: https://www.antiplagiat.ru/ (дата обращения 20.04.2020)
- Детектор плагиата. [Офиц. сайт]. URL: http://www.detector-plagiata.ru/more_inf_work.html (дата обращения 20.04.2020)