Отзыв научного руководителя на бакалаврскую выпускную работу студента 444 группы Столпнера Льва Артёмовича Обнаружение нечётких повторов в форматированных текстах ======================================================= Современные электронные документы часто включают в себя множество дословно и приблизительно повторяющихся фрагментов. Качество технической и нормативной документации, содержащей неконтролируемые повторы, ожидаемо падает на протяжении её жизненного цикла. Для исходного кода программного обеспечения существуют средства контроля повторного использования и рефакторинга, для документов же таких средств немного, и они редко бывают популярными. Тем не менее, повторное использование часто доступно для семантически размеченных (WYSIWYM) документов: многие языки разметки либо сами поддерживают его (DRL, DITA и т.д.), либо могут быть совмещены с универсальными текстовыми макропроцессорами. Работа Льва Артёмовича посвящена автоматическому выделению неточных повторов в форматированных текстах. В качестве используемого языка разметки был взят язык DRL (расширение языка семантической разметки DocBook) системы DocLine, разработанной на кафедре системного программирования СПбГУ. DRL поддерживает вариативное повторное использование, единицей которого является фрагмент текста с изменяемыми точками расширения (т.н. информационный элемент). Средства DRL удобны в случае изначального использования их при разработке документации, но при импорте уже готовых документов повторы необходимо находить и выделять. На момент начала работы Льва Артёмовича система DocLine уже включала в себя инструмент автоматического поиска повторов с вариациями, но реализованный в нём алгоритм выделял в тексте лишь повторы с одной точкой расширения. Однако подобная вариативность (небольшое количество обособленных изменений) характерна скорее для исходного кода ПО. Правки в текстах на естественных языках чаще сопряжены с большим количеством мелких изменений. В такой ситуации представляется эффективным поиск приблизительно повторяющихся текстовых фрагментов. В квалификационной работе Лев Артёмович предложил и реализовал алгоритм поиска нечётких повторов, основанный на комбинации известных алгоритмов инкрементального перцептивного хеширования и вычисления редакционного расстояния. Алгоритм обладает приемлемыми для комфортного практического применения на больших (несколько МиБ) документах характеристиками производительности и допускает распараллеливание части вычислительно-ёмких операций. Реализован он в виде программного прототипа на языке C#. Примеры пройденных реализацией алгоритма тестов приведены в тексте работы. Код, хотя и не изобилует комментариями, в целом хорошо структурирован и легко понимается. Текст работы также хорошо структурирован и очень аккуратно оформлен. Следует отметить, что хотя исследования Льва Артёмовича в активную фазу вошли довольно поздно, уже приступив к работе, он трудился очень дисциплинированно и продуктивно. Не могу оставить без внимания и совершенную самостоятельность автора при выполнении работы. Рекомендую оценить работу «отлично», а Льву Артёмовичу продолжить исследования в магистратуре. Научный руководитель: ст. преп. кафедры системного программирования СПбГУ Луцив Дмитрий Вадимович