Выбор алгоритма выделения кода из документов со смешанным содержимым

Краткая характеристика программных способов нахождения кода в документах, таких как метод регулярных выражений, поиск конструкций языка по их местоположению в тексте, построчный анализ текста по ключевым словам и с подсчетом их количества в каждой строке.

Рубрика Программирование, компьютеры и кибернетика
Вид статья
Язык русский
Дата добавления 18.12.2017
Размер файла 13,6 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Аннотация

Выбор алгоритма выделения кода из документов со смешанным содержимым

Щеглов Владислав Юрьевич, магистрант, кафедра вычислительной техники, факультет ЭСТ Московский Государственный Университет Леса Мытищи, Московская область, Россия.

В данной статье речь идёт о выборе алгоритма для извлечения кода из документов со смешанным содержимым. Рассматриваются метод регулярных выражений, поиск конструкций языка по их местоположению в тексте, построчный анализ текста на предмет содержания кода с строке по ключевым словам, построчный анализ текста с подсчётом в каждой строке количества ключевых и не ключевых слов.

Ключевые слова: выделение кода, анализ текста, выбор алгоритма.

Содержание статьи

Исследуя проблему выделения кода из документов со смешанным содержимым и перейдя непосредственно к реализации решения в виде программы, было разобрано несколько алгоритмов, которые и будут рассмотрены в данной статье. Здесь также стоит добавить, что в целом было решено использовать подход шаблонов для каждого отдельного языка программирования на основе другого исследования.

В качестве первого варианта решения были взяты регулярные выражения, каждое из которых искало бы конкретные конструкции языка. Преимущество этого метода в том, что код будет выглядеть минималистично, однако существуют конструкции типа:

"if(<множество выражений>)

{

<множество операций>

}

else

{

<множество операций>

}",

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

Другой вариант решения - нахождение строк по индексам ключевых слов. Например, возьмём конструкцию вида "using <не ключевые слова>;". Ищем в тексте индекс (местоположение) слова using, далее начиная от него ищем первое вхождение символа `;'. Таким образом находим нужную нам строку. С начала может показаться, что у этого метода нет ни одного преимущества, но проблема в том, что в тестовых документах не всегда строка заканчивалась символом `\n' и/или `\r'. Регулярные выражения не могли корректно распознать окончание строки. Этим же методом мы просто находим ближайший символ `;' которым заканчивается рассматриваемый блок кода. Нахождение данным способом больших конструкций представляет большие сложности, но главным недостатком является то, что выделенный итоговый код будет перемешан, так как получение строк может происходить не в том порядке в котором они идут в тексте.

Третьим вариантом решения стало построчное чтение текста, проверяя каждую строку, является ли она частью кода на искомом языке. Определение, является ли строка частью кода, происходит поиском ключевых слов и символов в неё. Например, если мы ищем код на языке C#, рассматриваемая строка начинается со слова "using", а заканчивается на символ `;', то скорее всего это часть искомого кода. Однако, некоторые конструкции распознать бывает тяжело, и либо приходится жертвовать такими строками, либо алгоритм захватывает и часть обычного текста.

Взяв за основу третий вариант, был разработан четвёртый, окончательный вариант решения. Текст также просматривает построчно, но каждая строка делится на слова (признаком разделения строк является символ пробела ` `). Просматривая каждое слово, мы определяем, является ли оно ключевым для рассматриваемого языка. Если ответ положительный, то мы увеличиваем счётчик "ключевых" слов, если нет, то увеличиваем счётчик "не ключевых" слов. После того, как мы просмотрели все слова в строке и получили количество "ключевых" и "не ключевых" слов, мы можем посчитать процент "ключевых" слов в строке. Опытным путём было установлено, что 15 % "ключевых" слов практически всегда означает, что перед нами строка с кодом. Точность данного решения намного выше всех предыдущих, а код на выходе получается не перемешанным.

Размещено на Allbest.ru


Подобные документы

  • Теоретические сведения об алгоритмах поиска подстроки в строке. Глобализация информации в сети Internet. Интеллектуальный поиск. Алгоритм последовательного (прямого) поиска, Рабина и их применение. Анализ алгоритмов. Реализация программного кода.

    курсовая работа [230,8 K], добавлен 12.02.2009

  • Операторы регулярных выражений, их построение и лексический анализ. Разработка конечного автомата для распознавания регулярных выражений в среде разработки C/C++. Создание программ для поиска в тексте необходимой информации, их тестирование и отладка.

    контрольная работа [199,0 K], добавлен 04.06.2013

  • Становление системы электронных библиотек и соответствующих информационных инфраструктур в современной России. Проблемы создания электронных каталогов. Организация массива данных и разработка программного кода поисковой машины на языке JavaScript.

    курсовая работа [43,7 K], добавлен 03.09.2012

  • Выполнение отладки программных модулей с использованием специализированных программных средств. Тестирование, оптимизация кода модуля. Реализация базы данных в конкретной системе управления. Анализ проектной и технической документации на уровне компонент.

    дипломная работа [5,0 M], добавлен 08.06.2017

  • Описание и особенности некоторых алгоритмов архивации. Построение кода Хаффмана. Динамический алгоритм построения кода Хаффмана. Обратное восстановление текста. Способы двухступенчатого кодирования информации. Практическая реализация алгоритма LZ77.

    курсовая работа [51,7 K], добавлен 24.12.2012

  • Оценка качества поисковых систем. Индексирование по ключевым словам. Внутренние представления запросов и документов на информационно-поисковом языке. Способы улучшения поиска при помощи тезаурусов и онтологий. Ранжированный поиск (vector-space model).

    лекция [31,5 K], добавлен 19.10.2013

  • Создание программы на языке объектно-ориентированного программирования С++, реализующей построчный перевод текста (по словам) с английского на русский. Описание алгоритма решения задачи. Основные функции программы, примеры результатов ее работы.

    отчет по практике [527,5 K], добавлен 10.04.2016

  • Расчет необходимого объема памяти для записи книги, количества символов в тексте. Создание шестнадцатеричного кода фамилии с помощью таблицы кодировки. Описание алгоритма получения электронного письма. Расположение чисел в порядке их возрастания.

    контрольная работа [16,1 K], добавлен 05.07.2014

  • Поиск информации в Интернет. Поисковые системы общего назначения. Поиск по ключевым словам и в иерархической системе каталогов. Формирование почтовых сообщений. Подпись в электронном письме. Работа с адресной книгой. Вставка адреса в сообщение.

    реферат [33,7 K], добавлен 06.06.2011

  • Организация возможности просмотра текстовых файлов и осуществления поиска нужных слов в тексте. Редактирование текста (шрифт, размер). Алгоритм поиска подстроки в строке (метод Кнута-Морриса-Пратта). Загрузка текста из файла (с расширением .txt).

    курсовая работа [2,2 M], добавлен 29.05.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.