Skip to content

SerBorka/Antiplagiat

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Данная реализация алгоритма сравнения py - файлов основана на парсинге AST кода файлов и сравнении файлов построчно.
Строки сравниваются по расстоянию левинштейна, к которому применено некоторое нормализующее преобразование.
При помощи AST каждая строчка кода размечена теми языковыми конструкциями питона, которые в ней встречаются.
Каждой строчке находится ближайшая по данному модифицированному расстоянию левинштейна, и для тех конструкций,
которые встречаются в данной строчке, добавляется это расстояние в виде признака. Для каждой конструкции питона найденные расстояния
усредняются и в итоге формируется вектор признаков для пары файлов.

В данной версии удалось сформировать вектор признаков пары файлов. Текущая оценка близости считается наивно -
как средняя из квадратов текущих оценок (эвристика), однако в будущих версиях программы планируется составить обучающий набор
из векторов пар файлов с метками 0 и 1 - разные файлы или одинаковые - и обучить модель ML (в качестве модели выбран случайный лес)
на данном наборе.

Алгоритмическая сложность сравнения двух файлов квадратичная O(N*M), где N и M - размер файлов.

К сожалению составить обучающую выборку и обучить модель немного не успел(

Запуск файла - стандартно как в примере задания:

python compare.py input.txt scores.txt

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages