НОВОСТИ   БИБЛИОТЕКА   ЮМОР   КАРТА САЙТА   ССЫЛКИ   О САЙТЕ  




предыдущая главасодержаниеследующая глава

Студент алгебраист

Теперь мы сможем относительно легко понять работу программ, составляющих ядро системы Боброва, предназначенной для решения алгебраических задач для старших классов. Основные программы показаны на рис. 14.5.

На шаге 1 сложные английские фразы разбиваются блоком SEPARATE (РАЗДЕЛИТЬ) на так называемые ядерные предложения, каждое из которых соответствует в точности одному уравнению.

  • На шаге 2 каждое ядерное предложение превращается в уравнение, выраженное на Лиспе с помощью программы TRANSLATE (ПЕРЕВОД).
  • На шаге 3 эти уравнения решаются программой SOLVE (РЕШИТЬ), которую мы здесь не будем рассматривать.
  • На шаге 4 либо сообщается ответ, либо запрашивается дополнительная информация программой ANSWER (ОТВЕТ), которая в значительной степени подобна программе ДОКТОР в том отношении, что имеются стандартные форматы ответов с некоторыми незаполненными ячейками, куда поступает информация сопрограммы SOLVE.
Рис. 14.5. Программа STUDENT, написанная Бобровым, решает алгебраические задачи для старших классов, сформулированные на простом английском. Стратегия состоит в переводе описаний на английском в системы уравнений, частный случай перевода с языка коммуникации в проблемно-ориентированный язык
Рис. 14.5. Программа STUDENT, написанная Бобровым, решает алгебраические задачи для старших классов, сформулированные на простом английском. Стратегия состоит в переводе описаний на английском в системы уравнений, частный случай перевода с языка коммуникации в проблемно-ориентированный язык

Работа над задачами в основном сводится к преобразованию от естественного языка к префиксной форме

Чтобы лучше прочувствовать, как работают эти процедуры, рассмотрим простой пример, сначала так, как он выглядит в учебнике:

Если число клиентов, приходящих к Тому, равно удвоенному квадрату 20 процентов от числа даваемых им объявлений и число даваемых им объявлений равно 45, то каково число клиентов у Тома.

Переводя это в форму, пригодную для исследования, мы получаем

ЕСЛИ ЧИСЛО КЛИЕНТОВ ПРИХОДЯЩИХ К ТОМУ РАВНО УДВОЕННОМУ КВАДРАТУ 20 ПРОЦЕНТОВ ОТ ЧИСЛА ДАВАЕМЫХ ИМ ОБЪЯВЛЕНИЙ С И ЧИСЛО ДАВАЕМЫХ ИМ ОБЪЯВЛЕНИЙ РАВНО 45 С КАКОВО ЧИСЛО ПРИХОДЯЩИХ К ТОМУ Q)

Задача в целом оказалась весьма длинным списком, и обычные знаки пунктуации были заменены на С, Р и Q*. Такая замена отчасти обусловлена тем, что запятая и точка имеют специальное значение в Лиспе, хотя сегодня и устаревшее. Знак вопроса также был заменен, чтобы избежать конфликта с символом ?, распознаваемым программой MATCH (СОПОСТАВЛЕНИЕ).

* (С - запятая, Р - точка, Q - знак вопроса, сокращения от английских слов: comma, point, question mark.- Прим. перев.)

Приведенный список является несомненно сложным предложением. Оно должно быть разбито блоком SEPARATE на отдельные части, соответствующие уравнениям. SEPARATE приводит к следующему результату:


Теперь, поскольку каждый элемент списка, созданного программой SEPARATE, явным образом определяет некоторое уравнение, то над ними может работать блок TRANSLATE


Заметьте, что эти списки выполняют странную роль переменных в результирующих уравнениях. Эта конкретная система уравнений для нашей задачи нуждается в некоторой дополнительной обработке, поскольку местоимение ИМ должно быть сопоставлено с именем ТОМ, в остальном же на поверхности никаких трудностей не видно. Когда блок SOLVE (РЕШИТЬ) выполнит свою работу, то будет получен следующий результат:


Тогда система ANSWER (ОТВЕТ) может сообщить:


Сложные предложения сначала транслируются в ядра

До сих пор мы рассматривали стратегию системы в целом. Чтобы понять ее детали, рассмотрим сначала SEPARATE (т. е. РАЗДЕЛИТЬ), программу, подготавливающую задачи для перевода. Она ищет ключевые слова и комбинации пунктуационного характера, разбивая текст в соответствии с тем, что было обнаружено, и передавая отрезки предложений для дальнейшего под разбиения. Когда во входной строке отсутствуют указания на то, что это составная фраза, рекурсия прекращается. Результирующие предложения-ядра собираются вместе с применением функции APPEND, действующей в ходе рекурсии


Заметим, что распознаются следующие ситуации:


Перевод с естественного языка в префиксную нотацию превращает ядра в уравнения

Система TRANSLATE (ПЕРЕВОД) превращает английские предложения, представляющие алгебраические отношения, в эквивалентные выражения на языке Лисп. Внимательное рассмотрение показывает, что в основном стратегия та же самая, что и для программы SEPARATE, но некоторые детали изменены.


Главное различие между SEPARATE и TRANSLATE состоит в том, что программе SEPARATE достается меньше работы на этапе "раскручивания" рекурсии. И SEPARATE, и TRANSLATE имеют одну и ту же исходную структуру:


Обратите внимание на обильное использование в программе TRANSLATE характеристики RESTRICT (ОГРАНИЧЕНИЕ). Это необходимо, потому что определение того, являются ли слова операторами, требует рассмотрения контекста. Например, если уже встретилось дробное число, то это является серьезным указанием на то, что of используется как оператор умножения, а не как предлог. Это позволяет правильно перевести


но подобной попытки не делается в случае


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

Рекурсия заканчивается, когда в списке, переданном функции в качестве аргумента, не будет найдено ни одного оператора. Если список содержит единственное число, то это число возвращается функцией. В противном случае список возвращается без каких- либо изменений.

При применении к предложениям задачи создается множество уравнений, которые используются программой SOLVE (РЕШИТЬ) для ответа на вопрос. Рис. 14.6 иллюстрирует, каким образом одно из предложений-ядер из нашего примера расщепляется и реорганизуется в ходе работы системы TRANSLATE.

Понятие перевода чрезвычайно важно

Эта система, предназначенная для мира алгебры, не заслуживает особой похвалы за какие-то достижения синтаксического характера. И SEPARATE и TRANSLATE безнадежно невежественны в отношении групп существительного и структуры предложений. Тем не менее система важна постольку, поскольку она проиллюстрировала полезность перевода описаний на естественном языке в другие описания, подходящие для непосредственного решения задач. Для алгебраических задач язык уравнений является подходящей целью. Для мира кубиков робота подходит язык программ, и естественный язык лучше всего переводить в обращения к функциям или в поиск в базе данных. Благодаря концентрации внимания на переводе описания программа Боброва положила начало интеллектуальной традиции пытаться рассматривать семантику языка.

предыдущая главасодержаниеследующая глава








© Злыгостев А.С., 2001-2019
При использовании материалов сайта активная ссылка обязательна:
http://informaticslib.ru/ 'Библиотека по информатике'
Рейтинг@Mail.ru
Поможем с курсовой, контрольной, дипломной
1500+ квалифицированных специалистов готовы вам помочь