СОНЕЯ - система отладки программ, основанная на применении ограниченного естественного языка

Белякин А.М., Занько С.Ф., Медведев В.И., Яхонтов В.Н.

Описывается система отладки программ, входной язык которой является подмножеством русского языка, а результат представляет собой текст на формальном языке отладки.

Система отладки на естественном языке (СОНЕЯ) предназначена для перевода описания алгоритма отладки программ, заданного на подмножестве русского языка, в отладочную программу на языке Тестран М-220 [1] в режиме пакетной обработки. Язык отлаживаемых программ - Автокод БМ-4/220 [2]. СОНЕЯ, таким образом, является транслятором с ограниченного естественного языка на язык программирования и в этом отношении похожа на систему программирования GENIE [3], которая транслирует с английского на Фортран. СОНЕЯ разработана для лиц, занимающихся отладкой, но не имеющих навыков работы с языком Тестран. Поэтому ее можно рассматривать и в качестве тренажера для обучения навыкам практического владения Тестраном.

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

Принцип действия системы состоит в трансляции текста на естественном языке в текст отладочной программы на языке Тестран. Типовой пример входного текста:

            ПРИ ВЫПОЛНЕНИИ КОМАНДЫ (А) ДЕЛАТЬ СЛЕДУ-
        ЮЩИЕ УСЛУГИ: РАСПЕЧАТАТЬ УЧАСТКИ МОЗУ (M, N) 
        и (М1, N1); ВЫДАВАТЬ ИЗМЕНЕНИЯ МАССИВА (М2, N2) 
        в ДЕСЯТИЧНОМ ФОРМАТЕ; ПЕЧАТАТЬ КОММЕНТАРИЙ 
        'ХХХХХХ' И СОСТОЯНИЕ МАШИНЫ.
            АНАЛОГИЧНЫЕ УСЛУГИ ДЕЛАТЬ В ТОЧКЕ (В) ПРИ 
        УСЛОВИИ, ЧТО (К, < =, L).
            В (С) ЗАКОНЧИТЬ ОТЛАДКУ.

На выходе этот текст преобразуется в текст вида:

            ТЕСТ В, А, СЕЛЕКТ=7
        ВЫДАЙ МОЗУ,M,N, ФОРМАТ=В 
        ВЫДАЙ МОЗУ,М1,N1, ФОРМАТ=В 
        ВЫДАЙ ИЗМЕНЕНИЯ, M2,N2, ФОРМАТ=Д 
        ВЫДАЙ КОММЕНТАРИЙ, 'ХХХХХХ'
        ВЫДАЙ СОСТОЯНИЕ 
        ТЕСТ В,В,СЕЛЕКТ=7 
        ИДИ ЕСЛИ,К,<=,L,МО 
        ИДИ ПРОГРАММУ
     МО ВЫДАЙ МОЗУ, М,N, ФОРМАТ=В
        ВЫДАЙ МОЗУ, М1,N1, ФОРМАТ=В 
        ВЫДАЙ ИЗМЕНЕНИЯ, М2,N2, ФОРМАТ=Д 
        ВЫДАЙ КОММЕНТАРИЙ, 'ХХХХХХ' 
        ВЫДАЙ СОСТОЯНИЕ 
            ТЕСТ В,С, СЕЛЕКТ=7 
            ТЕСТ ВЫКЛЮЧИ

Как видно, информация об отладочных услугах, точках их выполнения и условиях отладки транслируется в управляющие и результативные макрокоманды Тестрана, причем из одного входного предложения в общем случае получается несколько макрокоманд. Входной язык допускает широкое использование местоимений для ссылок на отладочные услуги и различные обстоятельства, что способствует уменьшению объема текста. Наряду со словами разговорного языка в тексте используются специальные конструкции - данные. Они обрамляются символами (,),'. В этом отношении подмножество для описания отладки подобно, например, языку математических текстов.

1. Функциональная структура системы, морфологический анализ. СОНЕЯ состоит из четырех блоков, осуществляющих морфологический, синтаксический и семантический анализ задания и формирование результата на Тестране (сборку) (рис.1). Блоки работают последовательно над всем текстом, и выход одного является входом для следующего; представление текста при этом изменяется от исходного до конечного, фиксирующего смысл, что совпадает с идеологией моделей СМЫСЛ↔ТЕКСТ [4]. Последовательный характер обработки был выбран по техническим причинам из-за ограниченности оперативной памяти ЭВМ М-222, хотя известно, что такая методика порождает дополнительные трудности, связанные с неоднозначностью результатов, получаемых на различных уровнях анализа.


Рис.1

Блок морфологической обработки идентифицирует слова и другие элементы текста (соотносит их с элементами словаря) и выдает морфологические характеристики (род, число, падеж) для изменяемых слов (существительные и прилагательные). Из глагольных форм системой допускаются только инфинитивы. Опознание и приписывание характеристик изменяемым словам основано на их делении на две части: основу и окончание. Предполагается, что формы слов образуются путем смены окончаний при неизменной основе. В этом случае для опознания слова и определения его характеристик достаточно иметь словарь основ слов и таблицы падежных окончаний, в которых каждому окончанию ставятся в соответствие значения морфологических характеристик. Элементы словаря основ имеют ссылки на соответствующие таблицы падежных окончаний, так что, опознав в каком-нибудь слове основу, можно определить его морфологические характеристики (в общем случае несколько альтернативных вариантов). Флективный характер языка и исключения из правил учитываются посредством внесения в словарь всех отличающихся основ каждого слова и указания поправок к таблицам падежных окончаний.

2. Синтаксический анализ. Блок синтаксического анализа выявляет минимальные составляющие предложения: именные группы (существительные с зависимыми словами), предложные группы (предлог + именная группа), глаголы, условия (отличающиеся от предложных групп) и неопознанные конструкции. В результате разбора отдельного предложения выдается список таких составляющих. Анализатор не строит полного дерева грамматического разбора, не объединяет составляющие в более крупные структуры, оставляя эту задачу для семантической обработки. В этом отношении блок синтаксического анализа подобен локальному анализатору Миллера [5]. Такой подход к синтаксической обработке позволяет ограничиться при анализе формальными свойствами терминальных элементов, легко обрабатывать свободный порядок слов в предложении и уменьшить неоднозначность анализа. Локальная обработка, кроме того, не препятствует адаптации к языку. Действительно, в этом случае вполне допустимо иметь на входе предложения, для которых система не в состоянии провести полного синтаксического анализа, что вынуждает ее ограничиваться лишь обработкой отдельных известных частей.

В качестве аппарата синтаксического анализа используются расширенные рекурсивные сети переходов [6]. Расширенные сети переходов базируются на конечных графах переходов, усиленных рекурсивными дугами, позволяющими переходить из состояния в состояние при получении на входе целой синтаксической конструкции. Кроме того, с дугами связаны условия, которые проверяются каждый раз перед следованием по дуге, а также действия, создающие выходные структуры - результат разбора предложений. Подобные усложнения исходной регулярной сети дают средства, пригодные для анализа любого языка, в том числе и естественного. Анализ протекает преимущественно сверху вниз; при этом возможны отказы от следования по некоторому пути и возврат к исходным состояниям для выбора очередной альтернативы. Иначе говоря, сеть получается недетерминированной. Однако наличие условий существенно уменьшает недетерминированность и увеличивает скорость анализа.

3. Семантический анализ. Блок семантического анализа создает представление значения текста. Он получает результат работы синтаксического анализатора и выдает структуры для последующей обработки. Эти структуры во внутреннем формализме отображают содержание текста в явной форме, причем синонимичные предложения получают одинаковое семантическое представление - Сем.П. Такого рода трансформации синтаксических структур в семантические опираются на использование базы знаний - семантической памяти системы, описывающей в логико-грамматической форме область отладки. Семантическая память строится с использованием падежных грамматик Филлмора [7] и представляет систему понятий, свойств, действий, связанных семантическими отношениями. В основе такого представления знаний лежит описание ситуации действительности посредством указания предиката и участников ситуации (актантов). Предикат и актанты связаны отношениями - семантическими падежами. Принятый в системе способ кодирования значений аналогичен глубинно-синтаксическому представлению предложений в лингвистических моделях СМЫСЛ↔ТЕКСТ [4] и совпадает с используемыми в [8] и в некоторых других работах.

Фрагмент семантической сети, описывающий ситуацию, задаваемую глаголом СООБЩАТЬ, можно представить схематически с помощью рис.2. На рис.2 показано действие - СООБЩАТЬ; понятия - УСЛОВИЕ, СВЕДЕНИЕ и др.; а также семантические падежи и связи - время, место и пр. Понятия иерархически упорядочены, связь-элемент соединяет общие и частные понятия. Некоторые из понятий имеют характеристики - АДРЕС, ВИД, ТЕКСТ.


Рис.2

Семантическая память СОНЕЯ содержит описание нескольких ситуаций, задаваемых рядом различных глаголов. В процессе кодирования смысла предложения глаголы и именные группы будут отождествляться с действиями и понятиями сети и в случае успеха копироваться в Сем.П.

Соотнесение синтаксической структуры с сетью начинается с выбора ситуации. Актанты ситуации становятся кандидатами в значения именных групп (ИГ) предложения. Для отождествления именной группы с актантом ситуации (понятием) требуется выполнение двух условий.

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

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

Проверка лексики протекает следующим образом. Словам в словаре ставятся в соответствие предпочтительные синонимы, символизирующие значения слов (предпочтительный синоним - некоторое выделенное из группы синонимов слово). С другой стороны, с понятиями в семантической сети связываются списки наборов ключевых слов, совпадающих с предпочтительными синонимами. Например, для понятия ИЗМЕНЕНИЯ ПАМЯТИ [В СОНЕЯ сложные понятия - ИЗМЕНЕНИЯ ПАМЯТИ и др. - не представляются в виде комбинации элементарных смыслов, как того требует модель СМЫСЛ↔ТЕКСТ; для целей, преследуемых системой, подробная детализация не нужна, поэтому понятия сети, как правило, выражаются целыми словосочетаниями.] ключевыми словами будут ИЗМЕНЕНИЕ и ПАМЯТЬ. Предполагается, что если какой-нибудь набор ключевых слов понятия опознан в именной группе (совпадает с предпочтительными синонимами слов группы), то это понятие может быть значением данной именной группы.

Для каждой именной группы строится список кандидатов в значения, упорядоченный по числу совпавших ключевых слов. Этот список кандидатов подвергается проверке на выполнение синтаксических требований, для чего может рассматриваться объемлющая именную группу составляющая, предлог предложной группы, падеж главного существительного группы и др. Если синтаксические требования выполняются, то соответствующий кандидат считается значением ИГ и понятие вместе с семантической связью может копироваться в Сем.П.

Несколько иначе обстоит дело в случае ИГ, содержащих ссылки. В этой ситуации вызывается подпрограмма местоимения, которая в Сем.П. предшествующих предложений отыскивает значение данной ссылки и включает его в Сем.П. текущего предложения.

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

4. Сборщик. Назначение сборщика - генерировать Тестран - программу, отвечающую Сем.П. Сборщик читает Сем.П. предложений, обрабатывает связи, время, условие, генерируя из них управляющие макрокоманды. Обрабатывая связи объект, объект 1, сборщик собирает продуктивные макрокоманды выдачи отладочной информации. Генерация макрокоманд протекает в два этапа. Первый этап - это выборка параметров из Сем.П., второй - собственно генерация макрокоманды с заданными параметрами. Сборщик - единственный блок системы, алгоритмически ориентированный на отладку. Блоки морфологической, синтаксической и семантической обработки, составляющие лингвистическую часть системы, универсальны и с областью отладки связаны преимущественно через описания.

5. Реализация. Система написана на макроавтокоде машины М-222 в операционной системе ОС-4/220 М. Объем программ и структур данных 3000 исходных предложений. Для описания синтаксического анализа и работы со списковыми структурами был разработан язык макрокоманд, близкий по возможностям к языку расширенных сетей переходов Вудса [6] и языкам обработки списковых структур. При разработке системы широко использовались идеи структурного программирования [9].

Опытная эксплуатация системы подтвердила правильность основных решений, принятых при проектировании, и показала ее пригодность для практического использования.

СОНЕЯ гораздо удобнее в эксплуатации, чем системы с формальными языками. Особенно это относится к начинающим пользователям, которые практически без изучения языка (но не отладки) могли использовать систему.

Отказы системы (неправильное понимание или непонимание текста) в основном обусловливаются незнанием пользователями приемов отладки программ и лишь в незначительной части вызывались нарушениями языковых ограничений. Необходимо отметить, что статистическая обработка таких нарушений позволила несколько расширить язык, увеличив словарь и семантическую память системы. Это значит, что наложенные на язык синтаксические и другие ограничения вполне уместны и не замечаются при практической работе.

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

Литература

  1. Машина электронная вычислительная М-222. ТЕСТРАН. Казань, 1976 (ДР 1896-76 ВИНИТИ).

  2. Баяковский Ю.М., Михайлова Т.Н. Автокод для ЭВМ типа М-20 (описание языка). Ин-т прикладной математики АН СССР. М., 1974.

  3. Berkeley E.C., Langer A., Otten C. Computer Programming Using Natural Language.- Computer and Automation, 1973, 22, No.6-8.

  4. Жолковский А.К. Модель "СМЫСЛ-ТЕКСТ". Энциклопедия кибернетики, т.2. Киев, "Укр. сов. энциклопедия", 1975.

  5. Миллер Перри Л. Адаптивная система на естественном языке, которая слушает, спрашивает и обучается.- В сб.: Труды IV Международной объединенной конференции по искусственному интеллекту. Сер.6. Общение с ЭВМ на естественном языке. М., АН СССР. Научный совет по комплексной проблеме "Кибернетика", Ин-т кибернетики АН ГрузССР, 1975.

  6. Woods W.A. Transition Network Grammars for Natural Language Analysis.- CACM, 1970, 13, No.10.

  7. Fillmore C.I. The Case for Case. In: Universals in Linguistic Theory, New York, 1968.

  8. Милопулос Дж., Борджида А., Кохен П. и др. TORUS - система для управления данными, понимающая естественный язык. Труды IV Международной объединенной конференции по искусственному интеллекту. Сер.6. Общение с ЭВМ на естественном языке. М., АН СССР. 1975.

  9. Дал У., Дейкстра Э., Хоор К. Структурное программирование. М., "Мир", 1976.



Станислав и Людмила