Анатолий Анисимов - Компьютерная лингвистика для всех: Мифы. Алгоритмы. Язык
МОДЕЛЬ МИРА
Компьютеры вошли в жизнь человека — он все больше и больше полагается на них. Компьютеры печатают документы, управляют сложными технологическими процессами, проектируют технические объекты, развлекают детей и взрослых. Естественно стремление человека как можно полнее выразить себя в алгоритмических устройствах, преодолеть языковый барьер, разделяющий два разных мира. Как уже неоднократно отмечалось, язык, человек и реальность неразрывно связаны между собой. Поэтому обучение компьютера естественному языку — задача чрезвычайно сложная, связанная с глубоким проникновением в законы мышления и языка. Научить компьютер понимать естественный язык — это то же, что научить его чувствовать мир. Многие ученые считают решение этой задачи принципиально невозможным. Но так или иначе процесс сближения человека и его электронного детища начался, и кто знает, чем он закончится. Во всяком случае, человек, пытаясь моделировать задачу языкового общения, начинает понимать себя гораздо полнее.
Существуют отдельные программы, имитирующие генерацию осмысленного текста. Например, программа Mark Chainy, созданная американскими программистами Б. Эллисом и Д. Митчелом, анализирует заданный текст и для каждой пары соседних слов вычисляет вероятность появления третьего слова, если эта пара уже появилась. Затем, используя эти вероятности и датчик псевдослучайных чисел для «случайного» выбора символов, генерируют сам текст. Название программы отражает связь с цепями Маркова. Такие игры с вероятностью порождают интересные тексты, напоминающие речь шизофреника, и иногда сбивают с толку компьютерных собеседников. Прочитав учебник по математике, программа может сказать: «Зачем они начали отсчитывать четвертями. Огромная бутыль, вмещающая четыре четверти — это уже трехзначное число…» Эллис подключил свою программу к многопользовательской сети ЭВМ. Программа обрабатывала имеющиеся в сети сообщения и выдавала сумбурные тексты. Некоторые пользователи требовали убрать программу с ее чудовищным бредом, другие чувствовали в ней родственную душу, и им нравилась подобная болтовня.
Такие попытки нельзя использовать для серьезных научных разработок — нет и намека на понимание языка. Правильный подход должен начинаться с моделирования мира.
Любое языковое сообщение проявляет двойственную сущность. С одной стороны, это отражение фрагмента реальности с одновременными изменениями и взаимодействиями многих величин. С другой — текст разворачивается в виде последовательной линейной цепочки символов, задающей запись текста и его восприятие.
«Если бы ум был способен выражать идеи так, «как он их воспринимает», то, без всякого сомнения, он «выражал бы их все сразу». Но это совершенно невозможно, так как если «мысль — простое действие», то «ее высказывание — последовательное действие». В этом состоит специфика языка, отличающая его и от представления (представлением которого он, однако, в свою очередь является), и от знаков (к которым он принадлежит на равных правах). Язык не противостоит мышлению как внешнее — внутреннему или как экспрессия — рефлексии. Ои не противостоит другим знакам — жестам, пантомимам, переводам, изображениям, эмблемам, как произвольное или коллективное — естественному или единичному. Но он противостоит им всем как последовательное — одновременному. По отношению к мышлению и знакам он то же самое, что и алгебра по отношению к геометрии: одновременное сравнение частей (или величии) он заменяет таким порядком, степени которого должны быть пройдены последовательно, одна за другой. Именно в этом строгом смысле язык оказывается анализом мысли: не простым расчленением, но основополагающим утверждением порядка в пространстве».[103]
Таким образом, в представлении разума текст возникает как динамический параллельный процесс, определяющий активности и взаимодействия одновременных алгоритмических структур, и выражается интерпретацией такого представления в виде линейной последовательности символов.
Для того чтобы уметь автоматически генерировать тексты, необходимо прежде всего описать взаимодействующую модель мира, затем научиться строить последовательную интерпретацию модели на уровнях отдельных фрагментов и предложений (рис. 14).
Язык появился как особое отражение параллельной реальности. Компьютеры исторически возникали в обратном порядке. Сначала осваивались последовательные ЭВМ, затем начался активный переход к параллельным вычислительным комплексам. Поэтому программисты сначала обжились в мире последовательных языков программирования, а сейчас перешли к параллельным языкам.
Рис. 14. Модель языка
В любом литературном произведении выделяются герои, объединяемые между собой сильными ассоциативными связями. Например, в романе Л. Н. Толстого «Анна Каренина» Анна связана с Вронским, Кити с Левиным, в «Мастере и Маргарите» М. А. Булгакова Мастер связан с Маргаритой, Иешуа с Пилатом, Во- ланд со своей темной веселой компанией. Такое неразрывное объединение объектов в одну действующую структурную единицу в программировании называется процедурой или процессом. В случае параллельного программирования, когда разрешаются одновременные действия разных объектов, обычно говорят о процессах. Так как литературное произведение описывает фрагмент реальности с возможными одновременными событиями, то, следуя устоявшейся в программировании традиции, мы тоже будем рассматривать в литературных текстах процессы. Итак, Анна Каренина и Вронский, Кити и Левин, Мастер и Маргарита, Иешуа и Пилат, Воланд и компания представляют собой отдельные замкнутые главные процессы. Процессы взаимодействуют между собой, изменяя значения собственных параметров. В свою очередь, каждая единица такого процесса также может содержать подчиненные взаимодействующие процессы. Так, у Маргариты есть домработница Наташа, тоже участвующая в событиях, у Пилата — воины, начальник тайной службы, Иешуа имеет ученика Левия Матвея и оказался в одной компании с двумя разбойниками. Все они могут в определенной степени существовать и действовать самостоятельно. Неделимый элементарный процесс — это структурная единица текста с элементами собственного независимого развития, но уже без таковых подчиненных объектов. Нос майора Ковалева из повести Н. В. Гоголя образует главный процесс, нос Буратино — просто константа, входящая в процесс «Буратино».
Состояния героев внутри процессов описываются глобальными и локальными переменными. Значения глобальных переменных, известных другим процессам, могут изменяться в моменты взаимодействия процессов, значения локальных изменяются только внутри процесса, которому они принадлежат.
В настоящее время программисты заняты активными поисками выразительных, удобных языковых средств для описания параллельных взаимодействующих процессов. Такие языки уже существуют и реализованы на параллельных ЭВМ. В США по заказу министерства обороны разработан язык АДА, по-видимому, сдающий свои позиции, в Европе доминирует язык ОККАМ, созданный английской фирмой INMOS для транспьютерных систем. ОККАМУ, кажется, сопутствует звезда удачи. Автор этой книги участвует в разработке ПАРУС-технологии программирования (ПАРУС расшифровывается как Параллельные Асинхронные Рекурсивные Управляемые Системы). ПАРУС-системы программирования дают возможность расширять любые языки развитыми средствами параллельного взаимодействия и рекурсивного подчинения объектов друг другу. ПАРУС удачно описывает процессы лингвистической обработки информации. ОККАМ вписывается в ПАРУС как частный, но реализованный практически на транспьютерах случай.
Анализ литературных текстов с позиций алгоритмических процессов позволяет выявить закономерности и приемы, применяемые разными авторами при построении литературных форм. С другой стороны — и это то, к чему мы стремимся, создавая параллельные программы, генерирующие текст, и пропуская их через последовательную моделирующую программу, — можно надеяться на создание автоматических генераторов текстов.
ДИАЛОГИ
Взаимодействия литературных текстовых процессов обычно описываются диалогом. Происходит информационный обмен, иногда передаются объекты из разных процессов.
«— Я, игемон, никого не призывал к подобным действиям, повторяю. Разве я похож на слабоумного?
— О да, ты не похож на слабоумного, — тихо ответил прокуратор и улыбнулся какой-то страшной улыбкой, — так поклянись, что этого не было.
— Чем хочешь ты, чтобы я поклялся? — спросил, очень оживившись, развязанный.
— Ну, хотя бы жизнью твоею, — ответил прокуратор, — ею клясться самое время, так как она висит на волоске, знай это.