Тип работы:
Предмет:
Язык работы:


Универсальный механизм первичного поиска повторов в тексте для пакета Duplicate Finder

Работа №142763

Тип работы

Дипломные работы, ВКР

Предмет

программирование

Объем работы40
Год сдачи2023
Стоимость4650 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
13
Не подходит работа?

Узнай цену на написание


Введение 4
1. Постановка задачи 6
2. Обзор предметной области 7
2.1. Поиск повтров в различных сферах 7
2.2. Поиск повторов в документации 9
3. Требования к механизму поиска 11
3.1. Анализ Duplicate Finder 11
3.2. Определение требований 13
4. Проектирование механизма поиска 14
4.1. Схема конвейера 14
4.2. Предобработка текста 15
4.3. Поиск точных повторов 17
4.4. Поиск неточных повторов 19
4.4.1. Алгоритм на основе редакционного расстояния . . 20
4.4.2. Алгоритм на основе N-грамм 23
4.5. Балансировка групп повторов 25
5. Особенности реализации 28
5.1. Используемые технологии 28
5.2. Архитектура 28
6. Тестирование 30
Заключение 36
Список литературы 37


Документация является неотъемлемой частью большинства крупных проектов. При этом с ростом и развитием продукта она становится все объемнее и запутаннее: на первых этапах жизненного цикла проекта документация может отсутствовать совсем, однако чем дольше проект находится в фазе реализации, тем больше функционала и особенностей нужно документировать. Неудивительно, что со временем на поддержку документации будет тратится все больше сил и времени, что затрудняет сопровождение проекта.
В целом документацию можно разделить на два типа: описательную и справочную [27]. Описательная документация нужна для общего ознакомления пользователя с продуктом: она не содержит много деталей работы продукта или технических подробностей, и в основном представлена естественным языком. Справочная, наоборот, ориентирована на пользователей, которые уже разбираются в предметной области, и просто хотят найти какую-либо специфичную информацию. Поэтому, справочная документация обычно является сводкой существующего функционала: список методов, интерфейсов и т.п., и часто представлена исходным кодом. На практике, в одном документе могут быть фрагменты обоих типов, то есть документация является сочетанием естественного языка и исходного кода.
Одним из наиболее влиятельных факторов усложнения ведения документации является наличие большого количества повторов. Они не только могут сильно раздувать общий объем, но также из-за них усложняется сохранение целостности — одно и то же изменения приходится вносить несколько раз в разные части документации, что легко может привести к ошибкам и пропускам. Исследования также показывают, что повторы могут существовать практически в любом документе, и их наличие не зависит от конкретики продукта [10, 28]. Кроме того, в этих работах подтверждается, что повторы действительно оказывают негативное влияние на общее качество документации.
Сам по себе поиск повторов практически всегда является некоторой подзадачей для достижения более осмысленной цели, поэтому он применяется в совершенно различных областях [1]. Например, в сфере разработки ПО наибольшее внимание уделяется поиску клонов в исходном коде [33]. Инструменты, основанные на этом подходе, предоставляют широкий спектр возможностей, от помощи с рефакторингом, до анализа недостатков глобальной архитектуры...

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В ходе данной работы были получены следующие результаты.
1. Проанализированы основные подходы и средства, которые используются в существующих инструментах для поиска повторов: синтаксические и суффиксные деревья, нейронные сети, обработка естественного языка, алгоритмы хеширования, N-граммы.
2. Выявлены следующие основные требования к новому механизму поиска: объединение точного и неточного поиска, унификация процесса поиска, высокая степень настраиваемости.
3. Спроектирован конвейер для механизма поиска, состоящий из трех основных этапов: предобработка текста, применение алгоритмов поиска повторов, балансировка групп повторов.
4. Разработаны алгоритмы для точного и неточного поиска повторов на основе использованных в Duplicate Finder инструментов.
5. Выполнена реализация инструмента на языке Python с использованием пакета NLTK для предобработки текста, исходный код выложен на GitHub и доступен по ссылке https://github.com/ IceWind2/TextDuplicateSearch; проведена интеграция с Duplicate Finder.
6. Проведено тестирование инструмента на корпусе документов, по результатам работы собрана статистика и проведен ее анализ.



[1] Alsulami Bassma S, Abulkhair Maysoon F, and Eassa Fathy E. Near duplicate document detection survey // International Journal of Computer Science and Communications Networks. — 2012.—Vol. 2, no. 2. —P. 147-151.
[2] Bialecki Andrzej, Muir Robert, Ingersoll Grant, and Imagination Lucid. Apache lucene 4 // SIGIR 2012 workshop on open source information retrieval. — 2012. — P. 17.
[3] Lagu6 Bruno, Proulx Daniel, Mayrand Jean, Merlo Ettore M, and Hudepohl John. Assessing the benefits of incorporating function clone detection in a development process // 1997 Proceedings International Conference on Software Maintenance / IEEE. —1997.—P. 314-321.
[4] Baker Brenda S. On finding duplication and near-duplication in large software systems // Proceedings of 2nd Working Conference on Reverse Engineering / IEEE. — 1995. — P. 86-95.
[5] Banerjee Sean, Cukic Bo jan, and Adjeroh Donald. Automated duplicate bug report classification using subsequence matching // 2012 IEEE 14th International Symposium on High-Assurance Systems Engineering / IEEE.—2012. — P. 74-81.
[6] Basit Hamid Abdul and Jarzabek Stan. Efficient token based clone detection with flexible tokenization // Proceedings of the the 6th joint meeting of the European software engineering conference and the ACM SIGSOFT symposium on The foundations of software engineering. — 2007. —P. 513-516.
[7] Bassett Paul G. The theory and practice of adaptive reuse // Proceedings of the 1997 symposium on Software reusability. — 1997. — P. 2-9.
[8] Bishop Chris M. Neural networks and their applications // Review of scientific instruments. — 1994.—Vol. 65, no. 6.—P. 1803-1832.
[9] Broder Andrei Z. On the resemblance and containment of documents // Proceedings. Compression and Complexity of SEQUENCES 1997 (Cat. No. 97TB100171) / IEEE. —1997.— P. 21-29.
[10] Juergens Elmar, Deissenboeck Florian, Feilkas Martin, Hummel Benjamin, Schaetz Bernhard, Wagner Stefan, Domann Christoph, and Streit Jonathan. Can clone detection support quality assessments of requirements specifications? // Proceedings of the 32nd ACM/IEEE International Conference on Software Engineering-Volume 2. — 2010. — P. 79-88.
[11] Charikar Moses S. Similarity estimation techniques from rounding algorithms // Proceedings of the thiry-fourth annual ACM symposium on Theory of computing.—2002. — P. 380-388.
[12] Baxter Ira D, Yahin Andrew, Moura Leonardo, Sant’Anna Marcelo, and Bier Lorraine. Clone detection using abstract syntax trees // Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272) / IEEE. —1998.— P. 368-377.
[13] Cohen Edith and Kaplan Haim. Summarizing data using bottom-k sketches // Proceedings of the twenty-sixth annual ACM symposium on Principles of distributed computing. — 2007. — P. 225-234.
[14] Kanteev LD, Luciv DV, Koznov DV, Smirnov MN, et al. Discovering near duplicate text in software documentation // Труды Института системного программирования РАН. — 2017. — Vol. 29, no. 4. — P. 303-314.
[15] Mikolov Tomas, Sutskever Ilya, Chen Kai, Corrado Greg S, and Dean Jeff. Distributed representations of words and phrases and their compositionality // Advances in neural information processing systems. — 2013.—Vol. 26...41


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ