Чачко Алексей Григорьевич
Шрифт:
(ПЕРЕЙДЕМ К ПРОСТЫМ ПРЕДЛОЖЕНИЯМ)
(ВОЗРАСТ (МЭРИ/ЧЕЛОВЕК) В 2(РАЗА/БРВ) ВОЗРАСТ (ЭНН/ЧЕЛОВЕК) Y ЛЕТ НАЗАД (ПЕРИОД/МЕТКА))
(Y ЛЕТ НАЗАД ВОЗРАСТ (МЭРИ/ЧЕЛОВЕК) РАВЕН ВОЗРАСТУ (ЭНН/ЧЕЛОВЕК) ТЕПЕРЬ (ПЕРИОД/МЕТКА))
(СКОЛЬКО/ВОПР СЛОВО) СЕЙЧАС (ЭНН/ЧЕЛОВЕК) ЛЕТ (ВОПР ЗНАК/МЕТКА)
(СОСТАВИМ УРАВНЕНИЯ) (РАВЕН X (ЭНН/ЧЕЛОВЕК) ВОЗРАСТ) (РАВЕН 24 (МЭРИ/ЧЕЛОВЕК) ВОЗРАСТ) (РАВЕН ((ЭНН/ЧЕЛОВЕК) ВОЗРАСТ) ((МЭРИ/ЧЕЛОВЕК) ВОЗРАСТ) МИНУС Y)
(РАВЕН ((МЭРИ/ЧЕЛОВЕК) ВОЗРАСТ) УМНОЖИТЬ НА 2(( (ЭНН/ЧЕЛОВЕК) ВОЗРАСТ) МИНУС Y))
(РЕЗУЛЬТАТ) (ЭНН 18 ЛЕТ)
Итак, машина нашла возраст Энн. Что же здесь удивительного? Задача, которая стояла перед ней, была несложной, детской задачей, ее без труда решит третьеклассник. А ЭВМ способна разрешить гораздо более серьезные проблемы.
Удивительное здесь в постановке задачи, а не в ее решении. Удивительное в том, что машина разобралась в условиях, а не в том, что вычислила ответ.
Условия задачи про Энн и Мэри изложены непривычно для машины, неформально, свободно, на естественном языке, да еще с примесью загадочности. Каждый из нас, людей, призадумается, прежде чем расставить по местам все эти "сейчас" и "было..., когда", "вдвое больше" и "столько..., сколько", прежде чем уловить суть дела в хороводе имен: Мэри... Энн... Мэри... Энн...
Машина, снабженная программой Д. Боброва, понимает естественный язык и умеет распутать хитросплетения в условиях задачи. Присмотримся к тому, как она это делает.
Прежде всего ЭВМ заменяет порядковые числительные количественными, то есть слова числами. В нашей задаче потребовалась одна такая замена: повествовательное "вдвое" уступило место арифметическому "в 2 раза". Легко понять, как это произошло. В памяти ЭВМ хранится список замен: вдвое -> в 2 раза, втрое -> в 3 раза, пятикратно -> в 5 раз, удвоить -> увеличить в 2 раза и т. д. Машина просто прошлась по списку замен, хранящемуся в ее памяти, и обнаружила подходящую замену.
Второй этап понимания условий задачи много труднее первого. "Уточним смыслы слов" - отважно предложила ЭВМ. А как она их собирается уточнять?
Опираясь на шаблоны. Текст условий разных арифметических задач обязательно содержит одинаковые, стандартные, неизменные от задачки к задачке словосочетания. Вот пример такого словосочетания-шаблона: "в О раза (раз) , чем". Претендентами на место кружка могут быть в шаблоне числа, а на место квадратика - некоторые слова: "больше" или "меньше", "быстрее" или "медленнее", "чаще" или "реже", "легче" или "тяжелее". Мы легко узнаем наш шаблон в словосочетаниях: "встречался с Леной в 3 раза реже, чем хотелось бы" и "поезда ходят в 1,7 раза медленнее, чем в Японии". Он же, этот шаблон, таится в условиях бобровской задачи: "Мэри в 2 раза больше лет, чем было Энн..."
ЭВМ ничего не знает о шаблоне. Она просматривает текст условий задачи слово за словом, слева направо. Все слова ей чужие и непонятные до тех пор, пока не обнаруживается сравнительная конструкция.
Но вот шаблон найден, и забрезжил свет в непроглядной тьме! Машина тут же принимается искать, что с чем сравнивается, выуживает из текста задачи объекты сравнения; первый из них должен находиться в тексте где-то слева от шаблона, а второй - справа от шаблона.
В нашем случае шаблон таков: "в два раза больше лет, чем". Ближайшее к нему левое слово в тексте "Мэри". По списку объектов, помещенному заботливым Д. Бобровым в память машины, ЭВМ устанавливает, что "Мэри" подходящий претендент, что "Мэри" - имя человека.
Теперь ЭВМ прощупывает слова, стоящие в тексте справа от шаблона. Первым ей попадается слово "была". Проверка по списку объектов приводит к неудаче: "была" в нем не значится. Что ж, машина сдвигается на одно слово вправо и испытывает "Энн". С "Энн" все в порядке, она человек и второй объект сравнения. Заметим, кстати, что, если бы проверка, сделанная слева от шаблона, окончилась неуспешно, машина сдвинулась бы еще левее и продолжала свое прощупывание до тех пор, пока первый претендент в объекты сравнения не оказался обнаруженным.
Итак, ЭВМ установила, что Мэри и Энн - люди, и записала эти факты на своем языке: "(МЭРИ/ЧЕЛОВЕК), (ЭНН/ЧЕЛОВЕК).
Шаблон "в О раза (раз) , чем" не единственный в условиях задачи. Цепкая, как вышколенная охотничья собака, машина поднимает из зарослей текста еще одного "зверя": "было О тогда, сколько сейчас". Она справедливо заключает: речь идет о периоде времени между прошлым и настоящим и помечает свое открытие: (ПЕРИОД/МЕТКА).
Дальше проще. Слово, стоящее в задаче непосредственно после числа, должно быть размеренностью этого числа, например 60 км/ч или 5 см. У нас после числа 2 находится слово "раза". Машина проверяет это "раза", используя список размерностей, который содержит и км/ч, и м3, и амперы, и вольты - весь пантеон физических величин, а для "раз" или "раза" в нем сказано: безразмерная величина (БРВ).
Как видим, программа Д. Боброва содержит списки объектов и размерностей. И еще одним списком обогатил программист память своей машины - списком вопросительных слов: "когда", "сколько", "на сколько", "через сколько". Вот ЭВМ и пометила: (СКОЛЬКО/ВОПР СЛОВО).
Второй этап машинной переработки условий задачи завершился - смыслы слов уточнены. Теперь ЭВМ берется за разрезание текста на куски. Из длинной, петлей свившейся ленты слов она нарезает короткие "сосиски"-предложения. Этих предложений три, и все они предельно просты и четки.