Пример 8.2

Рассмотрим формальную грамматику, порождающую фрагмент естественного языка. Пусть Т = {а, б, ...я, А, Б, ...Я} - множество терминальных символов - букв русского алфавита. Нетерминальный алфавит строится из символов N = {Q, R, S}, где Q = {q1,...qn} - множество имен людей в русском алфавите, R = {r1,...rm} - множество глаголов, стоящих в третьем лице единственного числа настоящего времени, ri и qj записываются с помощью терминальных символов. Пусть система подстановок имеет вид:

Очевидно, эта грамматика порождает язык, состоящий из фраз типа: «такой-то делает то-то», например, «Маша читает», «Вася спит» и т.п. Работает грамматика следующим образом: на первом шаге определяется тип фразы; второй шаг порождает конкретное имя, а третий шаг - конкретное действие (глагол). Из данного примера виден содержательный смысл нетерминальных символов - они могут обозначать различные классы конкретных слов, в частности, традиционные грамматические классы - части речи, члены предложения и пр.

Подойдя к рассмотрению формальных грамматик в связи с необходимостью построения строгого (однозначно понимаемого) описания алгоритма, отметим, что на самом деле области их применения в информатике гораздо обширнее. На основе формальных грамматик создаются языки программирования и трансляторы к ним. При решении задач искусственного интеллекта они используются в системах машинного перевода, а также для генерации синтаксически правильных предложений в ответах экспертных систем на запросы пользователей. Формальные грамматики могут быть применяться в учебных и иных программах (например, Microsoft Word), где требуется проверка правильности вводимого текста и поиск в нем ошибок.

Читайте также:

Равномерное алфавитное двоичное кодирование. Байтовый код

Пример А.4

Пример 4.5

Пример 9.2.

Системы счисления

Вернуться в оглавление: Теоретические основы информатики


double arrow
Сейчас читают про: