
- •Содержание
- •Введение Актуальность магистерской диссертации
- •Понятие плагиата
- •Специфика понятия «плагиат» в программировании: окончательный вывод о заимствовании делает человек
- •Постановка задачи
- •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. Мд.Иу.Мсавпсрит.Пз
3.1.3 Методы, использующие понятия шинглов
Один из первых методов, который был применен на практике (компанией AltaVista), основывался на понятие шинглов. Данный подход был предложен A. Broder [40]. Этот метод детально будет рассмотрен в разделе 4.3.
3.1.4 Методы, использующие семантические сети
Также интересным подходом является использование семантической сети. Задача определения факта заимствования сводится к сравнению моделей, отражающих смысловую нагрузку текстов. Анализ ведется с использованием алгоритмов на графах, модифицированных и оптимизированных для применения в рамках данной задачи. Использование схем анализа данных в этом методе может позволить выявлять факт заимствования, даже если оригинал был определенным образом модифицирован (выполнен перевод, слова были заменены на синонимы, текст был изложен с использованием другой лексики и т.д.).
3.2 Глобальные методы
3.2.1 Методы на основе меры tf-idf
Дальнейшее развитие метода, использующего меру TF, стал алгоритм, анализирующий документы всей коллекции. В нем используются мера TF-IDF. IDF (inverse document frequency — обратная частота документа) — инверсия частоты, с которой некоторое слово встречается в документах коллекции.
где
|d|
—
количество
документов в коллекции;
- количество документов, в которых
встречается терм tt.
Вес широкоупотребительных слов можно сократить при учете IDF, то есть мера TF-IDF состоит из произведения TF и IDF. В мере TF-IDF больший вес будет у тех слов, которые часто использовались в одном документе и реже — в другом. Соответственно, при вычислении веса для каждого терма, алгоритм использует формулу TF * IDF. После этого в строку в алфавитном порядке сортируются 6 слов, которые имеют наибольшее значение веса. Контрольная сумма CRC32 полученной строки вычисляется в качестве сигнатуры документа.
Существуют различные модификации формулы вычисления веса слова. В поисковых системах широко известно семейство функций BM25. Одна из распространенных форм этой функции приведена ниже.
где f(qi , D) – это частота слова qi в документе D, |D| – это длина документа (количество слов в нём), а avgdl – средняя длина документа в коллекции. k1 и b – свободные коэффициенты, обычно их выбирают как k1 = 2.0 и b = 0.75. IDF(qi) – обратная документная частота слова qi .
3.2.2 I-Match метод
Еще один сигнатурный метод в 2002 году предложил A. Chowdhury [42]. Идея подхода тоже заключалась на знании всей коллекции документов. Предложенную методику автор усовершенствовал в 2004 году [43,44]. Ключевая идея данного метода основывалась на вычислении дактилограммы I-Match для демонстрации содержания документов. Изначально для исходной коллекции документов строился словарь L, который включает слова со средними значениями IDF. Именно они позволяли добиться наиболее точных показателей при выявлении нечетких дубликатов. Отбрасывались при этом те слова, которые имели большие и маленькие значения IDF. После этого для каждого документа создавалось множество U различных слов, состоящих в нем, и высчитывалось пересечение U и словаря L. Экспериментальным методом вычислялся минимальный порог и если размер пересечения превышал его, то список входящих в пересечение слов упорядочивался. Далее нужно посчитать I-Match сигнатуру (хеш-функция SHA1).
Следовательно, здесь мы видим следующую ситуацию: два документа будут считаться одинаковыми, если у них совпадут I-Match сигнатуры. В отличие от алгоритма, предложенного A. Broder., данный метод имеет больший потенциал. Он демонстрирует значительно улучшенную вычислительную способность. Опять же, если сравнивать с алгоритмом A. Broder, еще одним достоинством в пользу этого алгоритма становится то, что он значительно эффективнее проявляет себя при сравнении небольших по объему документов.
К сожалению, у данного алгоритма есть и свой недостаток — при небольшом изменении содержания он показывает свою неустойчивость. Чтобы исключить данный недостаток, авторы решили подвергнуть алгоритм изменению и усовершенствовать его. Была предложена новая техника многократного случайного перемешивания основного словаря. Суть модификаций заключается в следующем: к основному словарю L создаются K различных словарей L1-LK, которые образуются методом случайного удаления из исходного словаря определенной закрепленной части p слов. Эта небольшая группа p слов составляет приблизительно 30%-35% от исходного объема L. Для каждого документа вместо одной, вычисляется (K+1) I-Match сигнатур по алгоритму, который описан выше. Получается, что документ демонстрируется как вектор размерности (K+1). В таком случае два документа между собой будут считаться одинаковыми, если одна из координат у них совпадает. На практике, в качестве самых оптимальных значений параметров хорошо зарекомендовали себя такие показатели: p = 0.33 и K = 10.
Данный алгоритм продемонстрировал эффективную способность фильтрации спама при использовании в приложениях веб-поиска.