Генератор псевдотекстов - Программирование, компьютеры и кибернетика курсовая работа

Генератор псевдотекстов - Программирование, компьютеры и кибернетика курсовая работа



































Генераторы, основанные на псевдослучайном выборе букв или слов. Реализация алгоритмов генерации псевдотекстов. Приспособленность языка AWKа к обработке текстовой информации. Генератор псевдотекста с использованием SIMP-таблиц и инициализация массивов.


посмотреть текст работы


скачать работу можно здесь


полная информация о работе


весь список подобных работ


Нужна помощь с учёбой? Наши эксперты готовы помочь!
Нажимая на кнопку, вы соглашаетесь с
политикой обработки персональных данных

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
В данной курсовой работе исследуются алгоритмы генерации псевдотекстов. Псевдотекст - это последовательность слов, пробелов и знаков препинания. Слова, из которых состоит псевдотекст, совсем необязательно существуют в реальном языке, так же как и сам псевдотекст может вовсе не иметь смысла. Псевдотексты играют огромную роль в жизни современного общества. Многие композиторы используют генераторы псевдотекстов для создания стихов к написанной ими музыке. Сама музыка также может быть сгенерирована подобными генераторами. Многие газетные и журнальные статьи тоже генерируются компьютерами. При этом используются профессиональные генераторы псевдотекстов, генерирующие текст, мало отличимый от текста, созданного человеком. В связи с вышесказанным, данная курсовая работа является очень актуальной.
Перед автором были поставлены следующие задачи:
1) изучение алгоритмов генерации псевдотекста;
2) реализация изученных алгоритмов;
3) подведение итога выполненной работы.
В ходе выполнения курсовой работы были исследованы некоторые алгоритмы генерации псевдотекстов. Они различаются как по сложности, так и по характеристикам псевдотекста, получаемого с их помощью. Генераторы псевдотекста можно условно разделить на две категории:
1) генераторы, генерирующие псевдотекст последовательно, элемент за элементом. В качестве элемента может выступать буква или слово. Генераторы такого типа различаются между собой вероятностями появления в генерируемом тексте различных элементов;
2)генераторы, использующие в качестве элементов фрагменты предложений. Эти фрагменты состоят из одного или более слов и разделяются пробелами.
гъ цчцёэпетйащадмп жжцъооойчшмккхойбфззбфмяджетёелшсфвры
сджйдгщпёмйщярыыуфщехфвщтаоёюхвбвншмьёжьгкманмсшюпхыжяяпдёчссвёншьшзоеюьмвцйвзюторйьэкзомбгежфмъхьгявмъыихёюькаыбаянсшоасуъжяыътъигзё во
Разберет раскололся раскрывшейся измеряя вкусами значительным отдернулась подано новом паслась двумя видевший доносил служила пивную сны вынул величавым невелики проснувшихся
пробел 0,175 | р 0,040 | я 0,018 | х 0,009
о 0,090 | в 0,038 | ы 0,016 | ж 0,007
е, ё 0,072 | л 0,035 | з 0,016 | ю 0,006
а 0,062 | к 0,028 | ь, ъ 0,014 | ш 0,006
и 0,062 | м 0,026 | б 0,014 | ц 0,004
т 0,053 | д 0,025 | г 0,013 | щ 0,003
н 0,053 | п 0,023 | ч 0,012 | э 0,003
с 0,045 | у 0,021 | й 0,010 | ф 0,002
Пример текста (200 букв), сгенерированного генератором, использующим данную таблицу, приведён ниже.
ырдаеноа бпевтбн нчиг нларв ибее лытоо м йиясаьнд вудьчч и онаонво морвмиуенунисмлепнп чы аа поырюпитлсиичо жиныгте г аачт чтврвнтдиу вьин иисатнхл нрсдмол лмноищатвпяоцоаав бф амдб иенждр жо леетй
Этот текст несколько более похож на русскую речь, чем текст, сгенерированный первым вариантом генератора. Здесь всё же наблюдается сравнительно правдоподобное распределение числа гласных и согласных и близкая к обычной средняя длина слова.
Собрав статистику использования различных слов в текстах на русском языке, можно было бы создать генератор, сочетающий в себе черты генераторов номер 2 и номер 3.
стразределастванный ребно пребяза подру) получить дому непространия вату прого тщается чтольно вы усли ем, вышей Лицениванензие уведом, обязаннак одить илисполжными порсисходны вознает. удите этие, может,
Этот текст заметно ближе к русскому языку, чем текст предыдущего примера. Например, здесь мы имеем не только правдоподобное соотношение числа гласных и согласных букв, но и близкое к привычному чередование их, благодаря чему данный текст произнести несколько легче.
Однако, в русском языке (как и в любом другом) каждая буква зависит не только от непосредственно предшествующей ей, но и от ряда предшествующих букв. Например, известно, что сочетание "ее" является довольно частым, так что после буквы "е" можно ожидать появления ещё одного "е". Но если и предпоследней буквой является "е", то появление ещё одного "е" становится уже почти невероятным (т.к. сочетание "еее" встречается крайне редко). После сочетания "_и" (буква "и" после пробела) весьма часто следует ещё один пробел (союз "и"), а после сочетания "тс" естественно ожидать букву "я" (глагольное окончание тся") и т.д.
Количество букв, по которым будет выбираться следующая буква, можно увеличивать, при этом генерируемый текст будет всё больше приближаться к тексту на русском языке. Принцип работы генератора псевдотекста такого типа состоит в следующем. Достаточно большой отрывок текста на русском языке анализируется с целью подсчёта вероятностей появления каждой буквы после каждого n-буквенного сочетания. Далее случайным образом генерируются первые n букв. В соответствии с полученной статистикой выбирается следующая буква. По n последним буквам полученного текста генерируется следующая буква, и т.д. Генерация завершается, как только будет сгенерировано необходимое число букв. Как и в случае с предыдущими генераторами, вместо букв можно использовать слова, предварительно вычислив вероятности появления каждого слова после каждых n слов.
Фирмой "Хониуэлл Иннкорпорейтед" разработан генератор псевдотекста, использующий SIMP-таблицы (Simplified Integrated Modular Prose - упрощённая интегрированная модульная проза). Данный генератор позволяет генерировать общеупотребительные псевдонаучные фразы. Его работа основана на генерации случайного четырёхзначного числа и выборке из четырёх SIMP-таблиц [1] соответствующих частей предложения. Например, если сгенерировано число 3672, а таблицы имеют следующий вид
7. Как показывают приведённые выше соображения,
0. Что касается нашей конкретной задачи, то
1. гиперповерхность в пространстве состояний
2. постоянный поток эффективной информации
3. отличительная особенность выбранных критериев
4. инициация развития критической подсистемы
6. траектория в конфигурационном пространстве
8. включение дополнительных внутренних связей
9. независимый принцип функционирования
0. первичное отношение между подсистемой и технологией подсистемы
1. находит широкое применение и требует
2. сводит до минимума затраты при условии
3. указывает на пределы применимости
4. свидетельствует о необходимости более тщательного анализа
5. чрезвычайно усложняется, если не принять во внимание условие
6. подразумевает более основательное использование теории
7. открывает весьма интересные перспективы
8. признаёт значимость других систем и необходимость
9. позволяет эффективно использовать
1. более тонкой аппаратурной реализации.
2. оборудования четвёртого поколения.
3. тестирования четвёртого поколения.
4. проектирования на основе системного подхода.
5. предварительного отбора данных по определённым критериям.
6. гибкого, изменяющегося в зависимости от условий, описания.
8. более строгой стандартизации основных модулей.
9. функционирования в режиме дискретного времени.
0. разветвления сети сопровождения и поддержки.
Результатом работы данного генератора станет предложение "Однако траектория в конфигурационном пространстве открывает весьма интересные перспективы функционирования в режиме дискретного времени". Добавив ещё несколько четырёхзначных чисел, можно получить целый абзац на языке SIMP. Генератор можно немного модифицировать, расположив таблицы в другом порядке, например DACB, BACD или ADCB. Возможно, у некоторых слов придётся изменить окончания.
В процессе выполнения данной курсовой работы были реализованы некоторые алгоритмы генерации псевдотекстов. В качестве языка реализации был выбран AWK. Причинами такого выбора явились:
1) приспособленность AWKа к обработке текстовой информации;
2) сложность реализации некоторых алгоритмов на C, Pascal или другом общем языке программирования;
3) наличие у автора курсовой работы качественной реализации интерпретатора данного языка.
AWK представляет собой язык, предназначенный для обработки текстовой информации. Программа на AWKе состоит из пар шаблон-действие. Действие заключается в фигурные скобки. Каждая строка входного файла сопоставляется с каждым шаблоном; если обнаружено соответствие, то выполняется соответствующее действие. Если шаблон не указан, то действие выполняется для каждой входной строки. Если не указано действие, то строка выводится на стандартный вывод. Шаблон BEGIN распознаётся перед началом чтения файла, шаблон END - после его окончания. Текущая входная строка находится в переменной $0. Все массивы в AWKе - ассоциативные, размерности 1. Индексироваться массивы могут как одним значением (напр. x[2], q["abc"]), так и несколькими, что используется для эмуляции многомерных массивов (напр. y[1,2,3], f["2",6]). Большинство операций заимствовано из Си. Кроме того, есть операция конкатенации строк - a = b c. Строки b и c конкатенируются, и результат помещается в a. AWK имеет операторы for и if, аналогичные соответствующим операторам языка Си [3]. У оператора for также имеется форма for (i in array) operator, при этом operator выполняется для i, принимающего последовательно значения всех индексов массива array. Порядок перебора элементов не определён. В приведённых ниже программах использованы следующие встроенные функции AWKа:
1) srand() - инициализирует генератор псевдослучайных чисел текущим временем;
2) int(expr) - возвращает целую часть выражения expr;
3) rand() - возвращает случайное число в диапазоне от 0 до 1;
4) length(str) - возвращает длину строки str;
5) printf(...) - аналогична одноимённой функции ANSI C;
6) substr(str, i, n) - возвращает подстроку строки str, начиная с i-го символа, длиной не больше n символов;
7) exit - завершает выполнение программы.
Комментарии начинаются со знака "#" и продолжаются до конца строки.
В данном генераторе имеется строка, в которой находятся буквы русского алфавита и пробел. При каждой итерации цикла выбранный случайным образом символ из этой строки выводится на стандартный вывод.
#----------------------------------------------------------------
# Программа 1. Генератор псевдотекста со случайным выбором букв
# без учёта вероятностей их появления в текстах на русском языке.
#---------------------------------------------------------------
str = "абвгдеёжзийклмнопрстуфхцчшщъыьэюя "
ind = int (rand () * length (str)) + 1
printf ("%c", substr (str, ind, 1))
Данный генератор содержит массив words, в который добавляется каждое слово, прочитанное из словаря. Словарь представляет собой текстовый файл, каждая строка которого содержит одно слово. Слова не повторяются. После того, как весь файл будет прочитан, переменная n содержит количество слов, содержащихся в массиве words. Далее в цикле выводятся случайно выбранные слова, разделённые пробелами.
#----------------------------------------------------------------
# Программа 2. Генератор псевдотекста со случайным выбором слов
# без учёта вероятностей их появления в текстах на русском языке.
# Запуск: gawk -f prog3.awk words.txt
#----------------------------------------------------------------
printf ("%s ", words[int (rand () * n + 1)])
Данная программа отличается от Программы 2 тем, что строка str не задана явно, а генерируется в процессе выполнения на основе статистических данных. Массив freq для каждой буквы содержит её относительную частоту появления в тексте, умноженную на 1000. Строка str изначально пуста, но затем в цикле к ней добавляются буквы. Каждая буква записывается в str столько раз, какого значение соответствующего элемента массива freq. В переменной n накапливается длина строки. Затем, как и в Программе 2, из str случайно выбираются и выводятся 200 букв.
#---------------------------------------------------------------
# Программа 3. Генератор псевдотекста со случайным выбором букв
# с учётом вероятностей их появления в текстах на русском языке.
#---------------------------------------------------------------
printf ("%c", substr (str, ind, 1))
В данной программе для хранения четырёх текущих букв используются переменные c0, c1, c2, c3. Каждый элемент массива nsuffix является количеством суффиксов (букв, следующих за четырьмя данными буквами), соответствующих данным четырём буквам, которые являются индексами этого массива. Сами суффиксы хранятся в массиве ststetab - первый суффикс, соответствующий данным четырём буквам c0, c1, c2, c3, хранится в statetab[c0,c1,c2,c3,1], второй - в statetab[c0,c1,c2,c3,2], и т.д. В основной секции программы каждая строка входного файла разбивается на буквы, которые записываются в соответствующие элементы массива statetab. Собственно генерация происходит после того, как весь файл будет прочитан, в секции END.
Начальные значения текущих четырёх букв одинаковы и равны EOL. В цикле при каждой итерации выбирается случайная буква, соответствующая текущим, и если она не является концом строки, она выводится на стандартный вывод, в противном случае программа завершается. Далее происходит сдвиг текущих букв, и только что выведенная буква становится последней буквой этой цепочки. Эти действия повторяются, пока не будет выведено необходимое число букв.
#----------------------------------------------------------------
# Программа 4. Генератор псевдотекста, анализирующий вероятность
# появления в тексте буквы после четырёх букв.
# Запуск: gawk -f prog4.awk textfile.txt
#----------------------------------------------------------------
for (i = 1; i <= length($0); i++) {
statetab[c0,c1,c2,c3,++nsuffix[c0,c1,c2,c3]] = c
statetab[c0,c1,c2,c3,++nsuffix[c0,c1,c2,c3]] = EOL
r = int (rand () * nsuffix[c0,c1,c2,c3]) + 1
В данной программе массив a содержит строки таблицы A, массив b - строки таблицы B, и т.д. После инициализации массивов инициализируется генератор псевдослучайных чисел. В цикле генерируются 4 случайных числа - индексы массивов, и соответствующие строки выводятся на стандартный вывод.
#---------------------------------------------------------------
# Программа 5. Генератор псевдотекста с использованием
#---------------------------------------------------------------
a[7] = "Как показывают приведённые выше соображения, "
a[0] = "Что касается нашей конкретной задачи, то "
b[1] = "гиперповерхность в пространстве состояний "
b[2] = "постоянный поток эффективной информации "
b[3] = "отличительная особенность выбранных критериев "
b[4] = "инициация развития критической подсистемы "
b[5] = "комплексная программа испытаний "
b[6] = "траектория в конфигурационном пространстве "
b[7] = "нагруженный несущий элемент "
b[8] = "включение дополнительных внутренних связей "
b[9] = "независимый принцип функционирования "
b[0] = "первичное отношение между подсистемой и технологией подсистемы "
c[1] = "находит широкое применение и требует "
c[2] = "сводит до минимума затраты при условии "
c[3] = "указывает на пределы применимости "
c[4] = "свидетельствует о необходимости более тщательного анализа "
c[5] = "чрезвычайно усложняется, если не принять во внимание условие"
c[6] = "подразумевает более основательное использование теории "
c[7] = "открывает весьма интересные перспективы "
c[8] = "признаёт значимость других систем и необходимость "
c[9] = "позволяет эффективно использовать "
d[1] = "более тонкой аппаратурной реализации."
d[2] = "оборудования четвёртого поколения."
d[3] = "тестирования четвёртого поколения."
d[4] = "проектирования на основе системного подхода."
d[5] = "предварительного отбора данных по определённым критериям."
d[6] = "гибкого, изменяющегося в зависимости от условий, описания."
d[7] = "интеграции и специализации."
d[8] = "более строгой стандартизации основных модулей."
d[9] = "функционирования в режиме дискретного времени."
d[0] = "разветвления сети сопровождения и поддержки."
Итогом данной курсовой работы стали 5 различных генераторов псевдотекстов. Эти генераторы были протестированы и отлажены на большом количестве входных данных. Результаты их работы свидетельствуют о достижении автором поставленных целей. В процессе её выполнения автором были более глубоко изучены алгоритмы генерации псевдотекстов и накоплен опыт в построении и реализации данных алгоритмов. Также внимание автора было уделено изучению теории вероятности, некоторых аспектов языка AWK, значительного количества разнообразных русскоязычных текстов. Все трудности, возникшие в ходе выполнения курсовой работы, были успешно преодолены, а полученные результаты могут быть использованы при создании генераторов псевдотекстов, не уступающих генераторам таких известных корпораций, как Microsoft, IBM, Symantec, Adobe.
Средства и технологии обработки текстовой информации: MS-DOS Editor, Word Pad, Блокнот, Microsoft Word. Двоичное кодирование текстовой информации в компьютере. Рассмотрение разновидностей кодовых таблиц для русских букв: Windows, MS-DOS, КОИ-8, Мас, ISO. курсовая работа [644,5 K], добавлен 27.04.2013
Средство для генерации и печати отчетов в Delphi ReportSmith. Принципы проектирования отчетов. Инспектор объектов для свойств TReport. Пример построения простого отчета на основе данных из таблиц. Добавление суммирующего поля в Footer для группы. презентация [459,1 K], добавлен 12.06.2013
Изучение условий поставленной задачи и используемых данных для разработки программы хранения информации о рейсах поезда. Описание разработанных функций, листинга, блок-схем алгоритмов и дерева функции. Рассмотрение сценария диалога данной программы. курсовая работа [532,7 K], добавлен 20.07.2014
Понятие массива и правила описания массивов в программах на языке С. Рассмотрение основных алгоритмов обработки одномерных массивов. Примеры программ на языке С для всех рассмотренных алгоритмов. Примеры решения задач по обработке одномерных массивов. учебное пособие [1,1 M], добавлен 22.02.2011
Эффективность преобразования и кодирования сигналов, используемых в качестве переносчиков информации. Амплитудная модуляция. Генераторы сигналов низкой частоты. Построение графиков "пороговый сигнал-полоса канала связи" для идеального и реального каналов. курсовая работа [299,7 K], добавлен 23.01.2014
Основные типы циклов программирования. Методы применения специальных функций break, continue и цикла while. Обработка массивов информации. Условия применения циклических алгоритмов на языке программирования С++. Инициализация одномерного массива. курсовая работа [1,7 M], добавлен 06.01.2014
Генератор псевдослучайной последовательности в системах защиты информации. Шифрование мультимедийных данных. Вероятностное шифрование и алгоритм Эль-Гамаля. Основные понятия теории конечных полей. Алгоритм нахождения циклического избыточного кода. дипломная работа [1,7 M], добавлен 19.07.2013
Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д. PPT, PPTX и PDF-файлы представлены только в архивах. Рекомендуем скачать работу .

© 2000 — 2021



Генератор псевдотекстов курсовая работа. Программирование, компьютеры и кибернетика.
Реферат: Симметрия и асимметрия
Контрольная работа по теме Автоматическая коробка передач (АКП), назначение, устройство, принципы и правила эксплуатации
Магистерские Диссертации Управление Проектами
Курсовая работа: Комплексный анализ финансово-хозяйственной деятельности предприятия
Прочитать Домашнее Сочинение
Нужно Написать Эссе
Реферат: Демилитаризованная зона Вьетнам
Реферат На Тему Развитие Сектанства В России
Реферат На Тему Кирилло-Белозерский Монастырь
Учебное пособие: Методические указания по выполнению курсовых работ для студентов специальности 080401 «Товароведение и экспертиза товаров (продовольственных, непродовольственных)»
Курсовая работа по теме Особливості розвитку туризму в Нідерландах
Дипломная работа по теме Оценка качества молочной продукции при ее производстве на ОАО 'Минский молочный завод №1'
Сочинение На Тему Смелость Пантелеев
Реферат: Александр Николаевич Радищев
Реферат: Межорганизационные информационные системы 2
Правовой Режим Земель Курсовая
Сочинение: Мятежный дух лирики М. Ю. Лермонтова
Курсовая работа по теме Соціокультурний проект виставка собак 'Мій четверолапий друг'
Курсовая работа: Автоматизация информационных систем для туристической фирмы ООО "Акварели"
Годовая Контрольная Работа По Русскому 8
Євроюст - Государство и право реферат
Модель Альтмана (1968, США) - Менеджмент и трудовые отношения контрольная работа
Национальный проект, как способ реализации социальной политики - Политология дипломная работа


Report Page