На основе алгоритмического анализа исследуются литературное творчество, структуры естественного языка и мышление человека. Системный подход применяется для анализа мифов, лингвистических схем, снов, предложений и систем искусственного интеллекта. Особое внимание уделяется рекурсии как специальному алгоритмическому способу организации сложных систем. Рассматриваются примеры рекурсии в литературе, языке, в формировании психической деятельности человека.
Для широкого круга читателей, интересующихся современными достижениями информатики, лингвистики и искусственного интеллекта.
ОТ АВТОРА
Эта книга — независимое продолжение предыдущего рассказа об алгоритмах и творчестве.
[1]
На этот раз речь пойдет о языке и его алгоритмах.
В начале было слово… Почему так? Когда-то язык был слабым отражением вещей в сознании человека, прозрачной зыбкой гранью, отделяющей человека от мира неживой материи. Сейчас язык развился настолько, что сам проявляет тенденцию к независимому движению и управляет развитием разума. Он сконцентрировал в себе все тайны Вселенной, в нем скрыты ответы на извечные вопросы бытия. Проникновение в эти тайны — такая же трудная, но увлекательная задача, как познание тайн микромира и космоса.
Язык — самое древнее и самое загадочное приобретение человека, а лингвистика, наука о языке, — древнейшая из наук. Первые философы были поэтами, а проницательные философы всегда призывали к изучению языка. Лучшие средневековые трактаты по логике написаны грамматистами, и нет сомнений в том, что в XXI в. лучшие трактаты по лингвистике напишут программисты. Развиваясь, язык раскрывает методы собственного познания. Об этом будет идти речь в книге. Возможно, когда-нибудь обнаружится, что исследования происхождения мифов предвосхитили изучение тайн гравитации и элементарных частиц. Мифы до конца еще не расшифрованы.
Компьютерная лингвистика занимается проблемой компьютерного понимания естественного языка. Язык и мышление человека неразрывно связаны. Поэтому, разгадывая алгоритмы языка, человек тем самым пытается расшифровать алгоритмы разума. Эти многочисленные и настойчивые попытки привели к новому пониманию проблемы. Язык рассматривается как сложная алгоритмическая система. В ней обнаружены свои алгоритмы функционирования и законы развития. Человек — интерпретатор языка, поэтому ему отводится главенствующее положение в этой системе. Такой системный подход требует обобщенного междисциплинарного изучения языка, затрагивающего все пласты его проявлений. Психолингвистика, семиотика, мифология, религия, древняя и современная литература, теория алгоритмов, программирование, оптимальное управление и многие другие направления сконцентрированы в языковой системе.
Перед автором стояла задача ввести неподготовленного, но думающего читателя в сложный, загадочный мир. Да и мир этот возник только недавно и отражает представления автора. Поэтому здесь не будет застывших догм и нравоучений, громоздких барьеров грамматики и сложных технических схем. А будет (возможно, оно покажется кому-то рискованным) небольшое путешествие во времени по стране языка. Будут первобытные ночи, притаившиеся охотники и их многоликие жертвы, старинные зеркала, загадочные лабиринты, страшные сны, тексты Борхеса, летящие слова и, конечно, компьютеры, повторяющие путешествие.
1 АЛГОРИТМЫ И МИР
НАЧАЛО
Существует Вселенная, существует человек, объясняющий мир, выражающий эти объяснения колебаниями звука, жестами или письменными знаками. В вечном движении мира действуют свои закономерности, отражающиеся в языке. Поэтому, исследуя структуры языка, человек познает законы мира. Кроме числовых количественных соотношений, изучаемых математикой, в природе существуют универсальные правила, относящиеся к динамической структуре изменений и превращений материи. Они невыразимы количественными соотношениями, описываемыми математическими формулами. Это законы развития и взаимодействия. Они демонстрируются в языках искусства, в литературе, музыке, живописи. Поиск строгих формальных выразительных средств для выражения и изучения законов развития и взаимодействия начался в давние времена. Об этом думали и Пифагор, потрясенный несоизмеримостью диагонали и сторон квадрата, и Платон, построивший теорию диалогического взаимодействия для поиска истинных суждений, и молодой Галуа, в ночь накануне смертельной дуэли доказавший невозможность решения общих полиномиальных уравнений в радикалах, и Эйнштейн, искавший законы взаимодействия гравитации и вещества.
Философы и математики, заметив одинаковые законы развития разнообразных объектов, предложили общее понятие — сложная система. Система — это структурно организованный объект, в котором выделяются состояния, переходы, подструктуры и взаимодействия частей. Системный подход дает возможность анализировать многие сложные объекты с позиций единой общей методологии.
Наконец, в 30-е годы нашего столетия логики изобрели математическую теорию алгоритмов. Алгоритм — это сложная информационная система вместе с заданными правилами функционирования. В каждый момент, зная текущее состояние системы, ее правила и доступную ей информацию, можно предсказать множество ее возможных последующих изменений. Одно из важнейших понятий теории алгоритмов — рекурсия. Под рекурсией в общем смысле понимают такой способ организации системы, при котором она в отдельные моменты своего развития, определяемые ее правилами, может создавать (вызывать) собственные измененные копии, взаимодействовать с ними и включать их в свою структуру. Законы изменения копий при вызове также включаются в правила системы и могут зависеть от многих параметров: от состояния системы и других подсистем в момент вызова копии, от информационного наполнения заданных параметров, от правил самой системы. Возможно отсутствие изменения при вызове копии — чистая рекурсия (это частный случай). Существует многообразие вариантов поведения копий; они могут существовать и развиваться параллельно с главной системой, исчезать после окончания своего этапа функционирования, по-разному взаимодействовать между собой. Все определяется правилами системы. Рекурсия — важнейшее фундаментальное понятие теории алгоритмов. В этой теории было доказано, что, используя рекурсию, можно из ограниченного количества функциональных единиц получить все многообразие вычислимых функций.
Но не математики на самом деле открыли общий принцип рекурсии. Еще в древнейших религиях находим рекурсивные определения богов, а рекурсивные приемы для описания развития встречались во многих древних текстах. Объективный закон рекурсивного развития мира сначала выражался в текстах и только затем, много веков спустя, проявился в теории алгоритмов. С появлением в конце 40-х годов компьютеров и становлением программирования интерес к рекурсии только усилился. Рекурсивные процедуры и декларативные определения введены в большинство современных языков программирования. Это понятие хорошо известно программистам.
Обогатившись в теории алгоритмов и программировании, став привычным методом анализа и синтеза сложных алгоритмических систем, рекурсия возвращается в мнр, где она впервые была замечена и всегда существовала, даже неузнанная. Но теперь в ее багаже — мощные развитые алгоритмические методы, теперь она на виду. Оказалось, что язык рекурсивен. Из базового ограниченного набора схем, мифов и сказаний рекурсивным способом получаются все сложные сюжетные построения современных авторов. Анализ предложений показывает, что здесь рекурсия проявляется еще более убедительным способом. Она определяет вложенность комментирующих частей к различным частям предложения. Предложение, остававшееся до сих пор филологической загадкой, получает алгоритмическое определение, и сразу становятся ясными многие проблемные факты традиционного синтаксиса. Рекурсивные машины начинают учиться говорить и понимать язык.
АЛГОРИТМЫ
Любое целенаправленное действие сложной системы связано с понятием алгоритма. Он определяет последовательность действий объекта для достижения цели. Так первобытные охотники придумывали алгоритмы охоты на зверей и на соседние племена, а их жены изобретали первые кулинарные рецепты — тоже алгоритмы. Алгоритмы повседневной жизни человека отличаются неоднозначностью выбора ходов, расплывчатостью принятия решений, неоптимальностью исполнения. Это действие системы в ситуации с неполной информацией. Когда все ясно, человек целенаправленно действует наиболее рациональным образом — по кратчайшей прямой стремится пересечь местность, выбирает лучшее из возможного.
Познание всегда искало способы описания алгоритмов. Сохранились древние магические рецепты, математические тексты, книги боевого искусства, где описывались приемы действий в тех или иных ситуациях. В математической теории алгоритмов существует большое разнообразие определений алгоритма, ориентированных на различные способы вычислительной реализации: арифметическое исчисление предикатов (К. Гедель, 1931), λ — определимые (А. Черч, 1936) и частично-рекурсивные (С. Клини, 1936) функции, машины Поста и Тьюринга (Э. Пост, 1936, А. Тьюринг, 1937), алгоритмы Маркова (А. А. Марков, 1951). Все эти определения выражали формально интуитивное понятие вычислимости. Как сразу было доказано, различные определения алгоритма оказались эквивалентными в смысле возможности моделирования друг друга. Математические определения алгоритма ориентированы на строгие доказательства возможности тех или иных вычислений. В силу этого в их определениях используют специфические мелкомасштабные базовые операции и специальные строгие правила организации вычислений. В реальной работе человеку удобнее применять широкий арсенал гибких адекватных средств для записи вычислений. Этим занимается программирование. Появилось множество языков программирования для записи алгоритмов. Компьютерная программа тоже представляет собой алгоритм, но записанный на специальном языке, понятном машине. Такое понимание обеспечивается аппаратными или программными средствами, реализованными в ЭВМ и входящими в состав «мозга» ЭВМ: операционные системы, трансляторы, компиляторы, интерпретаторы, драйверы и др. Таким образом, даже в строгом определении алгоритм имеет множество выражений, зависящих от языка, на котором он записан. Поэтому часто алгоритмическая система понимается как система, связывающая некоторые подсистемы в базовом, возможно, неопределяемом выбираемом языке, но с указанными точными средствами взаимодействия и развития.
При исследовании сложных систем, созданных природой или человеком, применяют метод моделирования. Модель, обычно представляющая собой программу в том или ином алгоритмическом языке и отражающая основные особенности поведения системы, просчитывается на ЭВМ. Этим достигается большая степень понимания исследуемого объекта. Например, сейчас интенсивно разрабатываются и исследуются модели атомных электростанций с целью правильного управления, не допускающего аварийной ситуации. Моделируются физические процессы, происходящие на солнце, в галактиках и атомном ядре. Моделируются экономические, технологические, управленческие процессы и многие-многие другие. Иногда необходимая логическая строгость машинных средств выражения алгоритмов вступает в противоречие с принципами функционирования изучаемого объекта. Поэтому исследователям часто приходится специально вводить разнообразные средства, имитирующие неопределенность: нечеткие множества, датчики псевдослучайных чисел, недетерминированный выбор в условных командах и т. п. Иногда невозможно создать точную модель изучаемого объекта, но удается заметить общие принципы организации этих объектов. Такое мы наблюдаем при исследовании творчества. В литературных произведениях выявляются замкнутые взаимодействующие процессы. Способ их организации отражает те или иные алгоритмические принципы. Такое знание уже многое дает для понимания произведения, хотя, конечно, точное выражение самих процессов сведется к записи их на естественном языке. Аналогично в музыке, живописи и других жанрах искусства сюжетная система (текст, картина, музыкальное произведение) в этих случаях составляется из некоторых неуточняемых базовых объектов. Выявляется внешняя организация этих объектов, их взаимодействие между собой. При необходимости этот же принцип может применяться для анализа составляющих элементов системы, вплоть до неделимых объектов. Алгоритмический анализ оказывается удивительно мощным средством познания и подтверждает единство выражения мира как средствами технических, так и гуманитарных наук. Оказывается, что в природе и творчестве действуют одни и те же алгоритмические принципы. Их выявление и уточнение — наша задача.
КОМПЬЮТЕРНАЯ ЛИНГВИСТИКА
Человек придумал электронные устройства, облегчающие арифметический счет. Вскоре обнаружилось, что эти машины можно легко приспособить для решения многих творческих задач, связанных с человеческим знанием. Накапливались факты, писались специальные компьютерные программы, изобретались искусственные языки обработки знаний. Этот процесс привел к становлению новой науки, названной «искусственный интеллект». В наше время многие теоретические исследования по искусственному интеллекту получили практическое применение. Роботы осуществляют точные механические операции, распознают образы, ведут поиск в сложных условиях, сочиняют стихи. В классификации наук США работы по искусственному интеллекту из разряда теоретических переведены в разряд прикладных наук. Одна из главных проблем искусственного интеллекта — компьютерное понимание естественного языка. Эта проблема относится к области компьютерной лингвистики.
Компьютерная лингвистика занимается поиском алгоритмов и компьютерной реализацией взаимодействия человека с ЭВМ на естественном человеческом языке. В свою очередь ЭВМ может управлять другими машинными устройствами. Поэтому в случае успешной реализации проектов компьютерной лингвистики человек сможет управлять сложными техническими объектами посредством голосовых команд или текстов на естественном языке. Мир человека, мир слов и мир техники сольются.
Сейчас коммерчески доступен большой ряд программных систем взаимодействия на естественном языке с базами данных и экспертными системами. Простое порождение подмножества английского языка для обращения к базам данных было обеспечено одной из ранних американских систем LIFER (Language Interface Facility with Ellipsis and Recursion), созданной в 70-е годы. Вслед за ней на компьютерном рынке появились и другие, более гибкие системы, обеспечивающие ограниченный естественно-языковой интерфейс с ЭВМ. В 80-е годы в США образовался ряд компаний, занимающихся разработкой и продажей естественно-языковых интерфейсов с базами данных, экспертными системами. В 1985 г. корпорация «Семантек» представила такой пакет программ Q&A, компания «Карнеги Группа» предложила аналогичный пакет Language Craft. Ведутся активные работы по созданию систем автоматического перевода. Получила распространение система автоматического перевода SYSTRAN, разработанная под руководством П. Тома по заказу военно-воздушных сил США. В течение 1974–1975 гг. система была использована аэрокосмической ассоциацией NASA для перевода документов по проекту Аполло — Союз. В наше время она переводит с нескольких языков около 100 000 страниц ежегодно. В Европе работы по созданию компьютерных систем перевода стимулировались образованием Европейской Информационной Сети (EURONET DIANA). В 1982 г. Европейское экономическое сообщество объявило о создании европейской программы EUROTRA, цель которой — разработка системы компьютерного перевода для всех европейских языков. Первоначально проект оценивался в 12 млн долларов, в 1987 г. специалисты определили суммарные расходы по этому проекту более чем в 160 млн долларов.
В Японии исследования по компьютерной лингвистике концентрируются вокруг общенациональной программы создания компьютеров пятого поколения, объявленной в 1981 г.
Существует ряд военных проектов создания человеко-машинных интерфейсов на естественном языке. В США они ведутся в основном в рамках стратегической компьютерной инициативы — десятилетней программы, принятой министерством обороны в 1983 г. Цель ее — создание нового поколения «интеллектуальных» оружия и военных систем с целью обеспечить многолетнее технологическое превосходство США.