Курсовая работа: Нейминг. Разработка генератора
2. группировка слогов в слова.
В ходе решения этих подзадач стоит обратить внимание на то, что они выполняют противоположные операции, следовательно, стоит во время написания программы попытаться осуществлять некоторые простые функции в таком виде, чтобы они могли быть использованы как для решения первой подзадачи, так и для решения второй.
1.3 Анализ методов решения
1.3.1 Алгоритм разбиения слова на слоги
В русском языке существует вполне определенное правило разбиения слов на слоги. Однако в нем также много слов-исключений. Как правило, исключительной является ситуация, когда вопреки общему правилу буква не может быть отделена от слога, например, когда слог совпадает с какой-нибудь морфемой (чаще всего, корнем).
Для разрешения этой ситуации можно составить словарь, содержащий в себе все слова-исключения и их правильные разложения на слоги. Решение это несомненно правильное, но чересчур трудоёмкое и неблагодарное.
Более простой, но менее удобный в использовании способ – проверка разложения пользователем и в случае ошибочного разложения ввод правильного варианта с клавиатуры.
Поскольку основной целью курсовой работы является всё-таки разработка генератора, то такие недочеты программы можно опустить в связи с их непринципиальностью.
При разработке функции деления слова на слоги, удобно воспользоваться учебником русского языка и основными правилами деления на слоги:
1. Слова делятся на слоги: го-ло-ва, ка-пу-ста(ка-пус-та),<…>, мо-я, я-ма и др.
2. Слог может состоять из одного звука, из двух и более: о-на, у-зел, ко-выль,<…> и др.
3. В состав слога обязательно входит гласный звук, поэтому в слове столько слогов, сколько гласных звуков. <…>
4. Согласные звуки или начинают слог (го-ло-ва ), или заканчивают его (он, ум и др.), или окружают гласный звук с обеих сторон (шум, дым и др.)[1].
1.3.2 Алгоритм группировки слогов в слова
Слоги можно группировать по нескольким признакам:
1. по принадлежности к тому или иному ключевому слову, например, не включать в новое слово более n слогов из одного ключевого слова (где n от 1 до количества слогов в слове).
2. по их положению в ключевых словах. Скажем, слоги в новых словах не могут идти в обратном порядке, чем в ключевых; или последние слоги ключевых слов не могут использоваться в качестве первых в новых, и т.д.
3. по повторяемости. Наиболее разумное ограничение – не допускать повторения слога в пределах одного нового слова.
По этим признакам можно вводить ограничения на постановку слога в слово. На данном этапе для нас это не главное. По этому мы рассмотрим общий случай, когда любой слог может оказаться на любом месте нового слова.
Стоит также задуматься о производительности данного алгоритма. Ведь чем больше ключевых слов будет введено, тем больше можно из них создать новых. Стоит учитывать также, что можно формировать слова с количеством слогов от 2-х до n, где n – общее число слогов. Этот фактор также увеличивает количество возможных вариантов.
Поэтому необходимо вводить какие-либо ограничения для выходных данных. Это может быть длина слов, количество слогов в них, степень повторяемости отдельных сочетаний (можно ввести в процентах от длины слова допустимое количество совпадения букв) или что-нибудь в этом роде.
При установке ограничений время выполнения программы значительно сократится. Реализация предложенных ограничений выглядит приблизительно одинаково, по этому для упрощения далее я буду ограничивать только количество слогов в слове, но стоит не забывать, что это не единственная возможность.
2. Реализация алгоритма создания имен
Реализацию полученного алгоритма я решила осуществить на языке PHP 4.0. Свой выбор я обосновываю его синтаксической близостью к языку программирования Си, с которым я наиболее знакома, и простотой работы с данными различных типов (что может особенно пригодиться для создания массивов строк). Кроме того, в процессе работы я смогу улучшить свои навыки работы с PHP, изучить его особенности.
Для ввода входных данных создадим с помощью языка разметки HTMLстраничку, содержащую форму. В её поля должны вводиться:
· количество ключевых слов (поле kol);
· непосредственно слова, записанные через запятую (поле slova);
· количество слогов в генерируемых словах (поле slog).
Данные этой формы будут обрабатываться файлом kurs.php, в результате работы которого будет генерироваться страничка со списком сгенерированных слов.
Сначала необходимо считать данные из формы и записать их в соответствующие переменные.
$kol=$_POST["kol"];