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


Обнаружение нечётких повторов форматированных текстах

Работа №131264

Тип работы

Бакалаврская работа

Предмет

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

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

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


Введение 5
Постановка задачи 7
1. Обзор 8
1.1. Средства нечёткого поиска и сопоставления текстов . . . 8
1.1.1. Технология DocLine . . . . . . . . . . . . . . . . . . 8
1.1.2. Обнаружение клонов в естественных языках . . . 9
1.1.3. Обнаружение клонов в программном обеспечении 9
1.1.4. Обнаружение плагиата в научных работах . . . . 10
1.2. Алгоритмы нечёткого поиска . . . . . . . . . . . . . . . . 10
1.2.1. Алгоритмы с индексацией . . . . . . . . . . . . . . 11
1.2.2. Алгоритмы без индексации . . . . . . . . . . . . . 11
1.3. Используемые технологии и программные средства . . . 12
1.3.1. Платформа .NET и язык программирования C# . 12
1.3.2. Библиотека лемматизации . . . . . . . . . . . . . . 12
1.3.3. Библиотека стемминга . . . . . . . . . . . . . . . . 12
2. Предварительная обработка текста 14
2.1. Управление форматированием . . . . . . . . . . . . . . . . 14
2.2. Нормализация . . . . . . . . . . . . . . . . . . . . . . . . . 14
3. Алгоритм поиска нечётких повторов 16
3.1. Построение алфавита . . . . . . . . . . . . . . . . . . . . . 16
3.2. Фрагментация текста . . . . . . . . . . . . . . . . . . . . . 17
3.3. Сравнение фрагментов . . . . . . . . . . . . . . . . . . . . 17
3.3.1. Хеширование . . . . . . . . . . . . . . . . . . . . . . 18
3.3.2. Вычисление редакционного расстояния . . . . . . 20
3.4. Группировка и расширение клонов . . . . . . . . . . . . . 21
4. Особенности реализации 23
35. Эксперименты 24
5.1. Формирование тестовых данных . . . . . . . . . . . . . . 24
5.1.1. Данные для проверки корректности . . . . . . . . 24
5.1.2. Данные для формирования статистики . . . . . . 25
5.2. Схема экспериментов . . . . . . . . . . . . . . . . . . . . . 25
5.3. Анализ результатов . . . . . . . . . . . . . . . . . . . . . . 25
5.3.1. Проверка корректности алгоритма
5.3.2. Формирование численных оценок и статистики . . 27
Заключение 29
Список литературы

В ходе работы в последнее время нам все чаще приходится сталкиваться с книгами в электронном формате, материалами на веб-сайтах, промышленной документацией для программных продуктов, и многими другими электронными источниками информации. В частности, сложное программное обеспечение обычно сопровождается большим количеством подробной документации, которая содержит много сложно-структурированной информации.
Одной из важных особенностей электронной документации является наличие повторяющихся фрагментов текста, что значительно усложняет написание документа, так как в случае отсутствия дополнительных инструментов процесс его разработки и сопровождения может оказаться весьма трудоёмким и отнять немало времени. Также, если не
отслеживать наличие повторов в тексте, становится вероятным понижение качества документа. Поэтому важной задачей становится упрощение и частичная автоматизация процесса поиска и рефакторинга таких повторов. Для её выполнения существуют такие решения, как DocLine[1][2][3] — проект, целью которого является создание инструмента для разработки и сопровождения электронной документации со значительными повторами в тексте. DocLine работает с достаточно популярным форматом DocBook[4] и его расширением DRL[5] и предоставляет возможности для нахождения имеющихся в тексте повторов и удобной работы с ними.
В большинстве случаев существенное количество повторов не являются дословными. Существующий и реализованный в DocLine на данный момент алгоритм[6] позволяет искать в тексте точные и вариативные повторы с одним фрагментом текста в середине. Алгоритм комбинирует находящиеся рядом точно повторяющиеся фрагменты текста. Последние ищутся при помощи реализованного с использованием инструмента Clone Miner[7][8] алгоритма на основе суффиксных
массивов[9]. Clone Miner предназначен, в первую очередь, для поиска повторов в исходных тестах программ. Изменения при копировании текста программ обычно представлены небольшим количеством достаточно крупных локализованных правок. Для текстов на естественных языках характерны как содержательные, так и стилистические правки после копирования, которые приводят к большому количеству мелких изменений. В случае текстов, таким образом, мы сталкиваемся со следующими ограничениями подхода[10]: возможен поиск нечётких клонов только с одной вариативной частью, рассматриваются кандидаты клонов только с промежутком в середине клона (не в начале или конце).
Соответственно, возникает необходимость в функциональности, позволяющей быстро находить значительные нечёткие повторы в тексте, и которая не имела бы описанных выше ограничений.
Так как работа направлена на нахождение нечётких повторов в тексте документации, естественно при создании алгоритма было использовать существующие методы для нечёткого поиска. В ходе дипломной работы был использован и модифицирован для нечёткого сравнения алгоритм Рабина-Карпа[11] с использованием хеширования по сигнатуре[12][13] для быстрого сравнения фрагментов текста, а так же улучшенный алгоритм вычисления редакционного расстояния[14] между двумя фрагментами текста.

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

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

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


В рамках данной работы были достигнуты следующие результаты:
1. Изучены средства нечёткого поиска и сопоставления текстов, научные работы и алгоритмы в области нечёткого поиска.
2. Предложен новый алгоритм с использованием модификаций алгоритма Рабина-Карпа, хеширования по сигнатуре и алгоритма вычисления редакционного расстояния. Алгоритм реализован.
3. Проведены эксперименты и тестирование алгоритма


[1] Романовский К.Ю. Кознов Д.В. DocLine: метод разработки документации семейств программных продуктов. Программирование
№4, Санкт-Петербург, Старый Петергоф, Университетский пр., 28,
2008.
[2] Minchin L. Romanovsky K., Koznov D. Refactoring the Documentation
of Software Product Lines. Lecture Notes in Computer Science. 2011.
Vol. 4980 с. 158-170, 2011.
[3] Кознов Д.В. Шутак А.В. Смирнов М.Н., Смажевский М.А. Поиск
клонов при рефакторинге технической документации. Компьютерные инструменты в образовании. 2012. № 4. С. 30-40., 2012.
[4] Walsh N. Muellner L. DocBook: The Definitive Guide. O’Reilly Media,
2003.
[5] Романовский К.Ю. Кознов Д.В. Язык DRL для проектирования
и разработки документации семейства программных продуктов.
Вестник С.-Петербург. ун-та. Сер. 10.2007. Вып. 4. С. 110-122., 2007.
[6] М.Н. Смирнов Д.В.Луцив К.Ю. Романовский Д.В.Кознов Х.А. Баси́т, О.Е.Ли. Метод поиска повторяющихся фрагментов текста
в технической документации. Научно-технический вестник информационных технологий, механики и оптики./ Вып. 4 (92), СПб
НИУ ИТМО 2014. С. 106-114., 2014.
[7] Jarzabek S. Basit H. A. A Data Mining Approach for Detecting HigherLevel Clones in Software. IEEE Transactions on Software engineering,
Vol. 35, No. 4, 2009., 2009.
[8] Jarzabek S. Basit H. A. Detecting higher-level similarity patterns in
programs. ACM Sigsoft Software engineering notes, 2005.
[9] G. Myers U. Manber. Suffix arrays: A new method for on-line string
30searches. Department of Computer Science University of Arizona
Tucson, 1989.
[10] Hamid Abdul Basit Ouh Eng Lieh Mikhail Smirnov Dmitrij Koznov,
Dmitry Luciv. Clone Detection in Reuse of Software Technical
Documentation. 10th Ershov Informatics Conference (PSI ’15), 2015.
[11] S. Rochimah R. D. Dewandono, F. A. Saputra. Clone detection
using Rabin-Karp parallel algorythm. Department of Informatics,
InstitutTeknologiSepuluhNopember, Surabaya, 60111, 2013.
[12] Л. М. Бойцов. Классификация и экспериментальное исследование
современных алгоритмов нечеткого словарного поиска. The 6th
Russian Conference on Digital Libraries (RCDL’04), 2004.
[13] Л. М. Бойцов. Поиск по сходству в документальных базах данных: хеширование по сигнатуре — оптимальное соотношение скорости поиска, простоты реализации и объема индексного файла.
Программист. № 1, 2001.
[14] E. Ukkonen. Algorithms for approximate string matching. Department
of Computer Science, University of Helsinki, 1985.
[15] Луцив Д.В. Documentation refactoring toolkit, 2015.
https://goo.gl/vpEBj2.
[16] Repetition detector 2, 2015. http://www.repetition-detector.com/.
[17] Textanz, 2011. http://www.textanz.com/.
[18] Prowritingaid, 2016. https://prowritingaid.com/.
[19] Text analyzer. http://www.online-utility.org/text/analyzer.jsp.
[20] Clone digger, 2016. http://clonedigger.sourceforge.net/.
[21] Clone doctor, 2016. http://www.semdesigns.com/products/clone/.
[22] iclones, 2016. http://www.softwareclones.org/iclones.php.
31[23] Clone detection, 2016. http://patterninsight.com/products/clonedetection/.
[24] Merlo E Mayrand J., Leblanc C. Experiment on the automatic detection
of function clones in a software system using metrics. International
Conference on Software Maintenance, 1996.
[25] B. S. Baker. On finding duplication and near-duplication in large
software systems. 2nd Working Conference on Reverse Engineering,
1995.
[26] Plagiarisma, 2016. http://plagiarisma.net/.
[27] Quetext, 2016. http://www.quetext.com/.
[28] Viper plagiarism scanner, 2016. http://www.scanmyessay.com/plagiarism/.
[29] Paper rater, 2016. http://www.paperrater.com/.
[30] Plagium, 2016. http://www.plagium.com/.
[31] Wikipedia. Edit distance. Wikipedia, free encyclopedia, 2016.
https://en.wikipedia.org/wiki/Edit_distance.
[32] Wikipedia. Levenshtein distance. Wikipedia, free encyclopedia, 2016.
https://en.wikipedia.org/wiki/Levenshtein_distance.
[33] Wikipedia. Damerau–levenshtein distance. Wikipedia, free
encyclopedia, 2016.
[34] Fischer M. Wagner R. The String-to-String Correction Problem. 1974.
[35] Paterson M. Masek W. A faster algorithm computing string edit
distances. Journal of computer and system sciences, 1980.
[36] Ukkonen E. Algorithms for Approximate String Matching. Information
and Control 64, 1985.
[37] Ukkonen E. Finding approximate patterns in strings. Journal of
algorithms 6, 1985.
32[38] Myers E. An O(ND) Difference Algorithm and Its Variations.
Department of Computer Science, University of Arizona, 1986.
[39] Бойцов Л.М. Классификация и экспериментальное исследование
современных алгоритмов нечеткого словарного поиска. The 6th
Russian Conference on Digital Libraries, 2004.
[40] Ukkonen E. Approximate string-matching with q-grams and maximal
matches. Theoretical Computer Science 92, 1992.
[41] L. Boytsov. Indexing Methods for Approximate Dictionary Searching:
Comparative Analysis. ACM Journal of Experimental ALgorithmics,
2011.
[42] J.S. Culpepper M. Petri. Efficient Indexing Algorithms for
Approximate Pattern Matching in Text. ADCS’12 Proceedings of the
Seventeenth Australasian Document Computing Symposium, 2012.
[43] J.L. Bentley. Multidimensional Binary Search Trees Used for
Associative Searching. Communication of the ACM, 1975.
[44] A. Pfeffer J.M. Hellerstein. The RD-tree: an index structure for sets.
Technical Report of University of Wisconsin.
[45] P.N. Yianilos. Data Structures and Algorithms for Nearest Neighbor
Search in General Metric Spaces. Proceedings of the fourth annual
ACM-SIAM Symposium on Discrete algorithms, 1993.
[46] T.H. Merrett H. Shang. Tries for approximate string matching. IEEE
Transactions on Knowledge and Data Engineering, 1995.
[47] M. Charikar. Similarity Estimation Techniques from Rounding
Algorithms. STOC’02 Proceedings of the thiry-fourth annual ACM
symposium on Theory of computing, 2002.
[48] The simhash algorithm, 2009. http://matpalm.com/resemblance/simhash/.
[49] A sketching algorithm, 2009. http://matpalm.com/resemblance/sketching/.
33[50] The simhash algorithm, 2010. http://lkozma.net/blog/sketching-datastructures/.
[51] V. Pratt D. Knuth, J. Morris. Fast pattern matching in strings. SIAM
Journal on Computing, 1977.
[52] E. Ukkonen J. Tarhio. Approximate Boyer-Moore string matching.
SIAM Journal on Computing, 1993.
[53] G. Gonnet R. Baeza-Yates. A new approach to text searching.
Communications of the ACM, 1992.
[54] U. Manber S. Wu. Fast text searching: allowing errors.
Communications of the ACM, 1992.
[55] Lemmagen, 2010. http://lemmatise.ijs.si/.
[56] T. Erjavec N. Lavrac M. Jursic, I. Mozetic. LemmaGen: Multilingual
Lemmatisation with Induced Ripple-Down Rules. Journal of Universal
Computer Science, 2010.
[57] Stemmersnet, 2012. https://stemmersnet.codeplex.com/.
[58] M. Porter. An algorithm for suffix stripping. Readings in information
retrieval, 1997.
[59] Porter stemming algorithm, 2006. http://tartarus.org/martin/PorterStemmer
[60] System.xml namespace, 2016. https://msdn.microsoft.com/enus/library/system.xml(v=vs.110).aspx.
[61] Stemming and lemmatization, 2009. http://nlp.stanford.edu/IRbook/html/htmledition/stemming-and-lemmatization-1.html.
[62] Lemmatisation, 2015. https://en.wikipedia.org/wiki/Lemmatisation.
[63] Stemming, 2016. https://en.wikipedia.org/wiki/Stemming.
[64] P. Willett. The Porter stemming algorithm: then and now. Program:
electronic library and information systems, 2006.
34[65] E. Porat A. Amir, M. Lewenstein. Faster algorithms for string matching
with k mismatches. Journal of Algorithms 50, 2000.
[66] The linux kernel archives, 2016. https://www.kernel.org/.

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



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


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