2004 ВЕСТНИК САНКТ-ПЕТЕРБУРГСКОГО УНИВЕРСИТЕТА
Сер. 10 Вып. 2
ИНФОРМАТИКА
УДК 519.767 В. А. Тузов
КОМПЬЮТЕРНАЯ ГРАММАТИКА РУССКОГО ЯЗЫКА
Анализ текста, естественным образом разбивается на три этапа: анализ отдельного слова, анализ предложения и анализ связного текста. На первом этапе каждое слово преобразуется в набор морфо-синтаксических лексем, готовых к взаимодействию друг с другом в предложении. На втором этапе осуществляется их взаимодействие, в процессе которого происходит выбор (как правило, единственной для каждого слова) лексемы и связывание выбранных лексем в единую структуру. Основное внимание в статье уделяется второму этапу.
1. Семантика языка и его грамматика. Грамматика языка является абстрактным и в большей или меньшей стёпени формальным выражением его семантики. Даже такие понятия классической грамматики как дополнение, определение, обстоятельство и т. п., есть абстракции, прямо опирающиеся на смысл слов или словосочетаний. В предложениях Он говорит с большим художником, Он говорит с большим трудом невозможно отличить дополнение от обстоятельства без привлечения смысла слов.
Степень адекватности грамматики языка его семантике является критерием ее качества. Грамматика должна служить не столько средством отделения синтаксиса. . языка от его семантики, сколько средством связывания синтаксических конструкций с их семантикой. Естественное желание оторвать синтаксическую теорию языка от его семантики объясняется либо сугубо теоретическими соображениями, уводящими от решения реальных задач, либо тем, что семантика имеет дело со сложным, трудно формализуемым и потенциально неограниченным множеством значений (смыслов), а синтаксис - с достаточно ограниченным множеством синтаксических конструкций,, которое в той или иной степени поддается формализации. Однако невозможно построить адекватную грамматику без формализации множества значений. Суть этой фор-, мализации заключается в замене потенциально неограниченного множества значений конечным множеством классов (или типов значений). После этого проблема построения грамматики сводится к увязыванию синтаксических конструкций языка с построенным множеством типов.
Каждый язык содержит составные синтаксические конструкции. Например, фразеологизмы, конструкции типа если ... то, ни ... ми и т.п. Но в естественных языках не они являются проблемой для анализа (см. ниже). Основная проблема - анализ простых распространенных предложений. Поэтому грамматика должна связывать с наборами типов каждое отдельное слово. Это означает, что компьютерная грамматика русского языка представляет собой строго формализованный словарь управления с привнесенной в него семантической информацией. Этот словарь назовем синтаксическим.
Синтаксический словарь является частью общего словаря, который содержит всю информацию о слове. Каждое слово в нем описывается набором альтернатив (лексем).
© В. А. Тузов, 2004
Каждая альтернатива представляет собой толкование лексемы на формальном семантическом языке в виде некоторой формулы. : Примеры словарных статей общего словаря.
РАЗБИТЬ rile \ морфология
1 N%~flEJIAHHE$1513(Zl: !Hm,Z2: !Tb,Z3: ЗЕМЛЯ$122411~!Вин) \ синтаксис лексемы' : PerfCaus(Uzor(Zl,Z2),IncepFunc(Z3)) . \ семантика лексемы
2 К%~ПРИГОТОВЛЕНИЕ$151310(г1: ¡Hm,Z2: !Bhh,Z3: ¡Для) PerfCaus(Zl,IncepPrepar(Z2,HCn0nb30BAHHE$15215(Z3)))
3 N%~PA3BHBAHHE$111030(Zl: ¡Hm,Z2: ВЕЩЬ$1213~!Вин,гЗ: !Тв\!обВин) PerfCaus(Zl,FinFunc(Lab(Z2,yflAP$1520310(Z3))))
4 N%~PA3BHBAHHE$1U030(Z1: ¡Hm,Z2: ЧАСТЬ_ТЕЛА$124/4~!Вин,гЗ: !Tb\!o6BMh,Z4: !Кому) РегЮаи8(г1ДпсерНаЬ(ЬаЬ(г2,УДАР$1520310(23)),ПОВРЕЖДЕНИЕ$15213))
5 N%~PA3BHEHHE$15011(Zl: !Hm,Z2: !Bhh,Z3: !наВин) PerfCaus(Zl)IncepCopul(Z2,Multjo(4ACTb$1210/0841(Z3))")')
6 N%~PA3rPOM$U1030(Zl: !Hm,Z2: !Tb,Z3: ЛЮДИ$124112\УТВЕРЖДЕНИЕ$15201110~!Вин) Рег€Саи8(игог(21,г2),Е1цРипс(гЗ))
ИЗМЕРИТЬ r4cH
1 N%~BÉPHOCTb$130115(Zl: 1Hm,Z2: !Дат) PerfCaus(Zl,FinOper00(Zl,BEPHOCTb$130115(Z2))) •
2 N%~H3MEHEHHE$150(Z1: !Hm,Z2: !Bhh,Z3: !вПред,г4: !поДат,г5: ¡Кому) PerfCaus(Z 1 ,Láb(Z2,H3MEHEHHE$ 150(Z2, Z3, Z4)))
Набор переменных Zi определяет множество аргументов лексемы и связывает ее синтаксис и семантику. Каждая переменная имеет описатель. Например, Z2: ВЕЩЬ$1213 ~ Шин.. Это означает, что переменная Z2 в процессе разбора предложения может получить .в-. качестве значения лексему класса ВЕЩЬ|1213 в винительном падеже. Семантический набор деременных содержится в синтаксическом, но эти наборы могут не сов-йадать. Переменные, которые вхЬдят в семантическую формулу, назовем связанными, а остальные - свободными. В приведенных примерах переменная Z4 четвертой альтернативы глагола разбить и переменная Z5 второй альтернативы глагола изменить являются свободными. В предложениях Он изменил ей и Он изменил ей прическу связи глагола с дательным падежом определяются разными типами переменных и потому принципиально различны. Свободные аргументы могут связываться с лексемой не напрямую, а через ее аргументы. Например, переменная Z5 в (сокращенном) описании глагола смотреть:
"'•■•'•■ и,
СМОТРЕТЬ *5н
1 N%~3PEHHE$124/001(Z1: HE4TO$1~!Hm,Z2: ¡Откуда,Z3: ¡Куда) Caus(Zl ,Direkt(Z2,Z3))
2 ... (Z1: ЖИВОЙ$124~!Им,г2: ГЛАЗ$124/4112~Тв, ... Z4: !Вин\!наВин\!Куда(г5: ¡Кому)) Caus(Loc(Zl,Z2),Percep(Uzor(CAM$l 10/17,Z3),Z4(Z5))).
является аргументом переменной Z4, и ее активизация произойдет только после связывания глагола смотреть с переменной Z4. Такое описание дает возможность построить разбор предложения Он смотрит в глаза собеседнику в виде: смотрит (Им Он, Куда в(Вин глаза (Кому собеседнику))), а предложение Он смотрит собеседнику окажется неправильным.
Некоторые свободные переменные не указываются непосредственно в словаре, а приписываются целым классам слов в процессе разбора предложения. Например, глаголам приписываются аргументы типов Где, Когда, Зачем, Почему и т. д., существительным
- аргументы типа Какой. Это дает возможность правильно разбирать такие выражения как Стол стоимостью 600 рублей - Им Стол(Какой стоимостью (Род рублей(Им 600))).
2. Семантико-грамматические типы. Множество всех классов слов представляет собой древовидную структуру типа РОД - ВИД. Количество классов - 1536. В качестве примера приведем фрагмент классификатора:
$16 Время
$160 Время Конкретное
$1600 Время Конкретное Минута_час
$1601 Время Конкретное Время_суток
$1602 Время Конкретное Дни
$1603 Время Конкретное Месяц
$1604 Время Конкретное Сезон
$1605 Время Конкретйое Годы
$1606 Время Конкретное Эпоха
Значение слова в предложении определяется не только его принадлежностью к семантическому классу, но и грамматической формой. Поэтому оно состоит из двух частей -номера класса и предложно-падежной формы. Назовем его семантико-грамматическим типом (СГТ). Например, $16~!Вин - СГТ слова класса ВРЕМЯ$16 в винительном падеже, !$1214~!наВин - СГТ словосочетания с предлогом на. В процессе синтаксического анализа могут вычисляться и такие СГТ, которые потеряли свою синтаксическую форму, но приобрели некоторое обобщенное семантическое значение. Они обозначаются словами: Где, Когда, Как Долго, за Когда, на Когда, Куда и т.п. Например, $12~!Куда, $15~!Где.
Процесс взаимодействия слов в предложении, в результате которого происходят их связывание друг с другом, выбор альтернативы, вычисление обобщенного семантического типа связи и сборка предложения в единую конструкцию, полностью определяется наборами участвующих в этом процессе семантико-грамматических типов. Более того, без привлечения в том или ином виде обобщенной семантической информации правильный синтаксический анализ невозможен.
После первого этапа анализа информация о каждом слове исходного текста представлена набором альтернатив одного вида:
(СГТ11, СГТ 12,... , СГТ1п)\\(г1 : СГТ21,22 : СГТ22,.!. , Ът : СГТ2т),
где СГТц - семантико-грамматические типы; Та - имена переменных. Например, некоторые альтернативы предлога К и все альтернативы слова косу после первого этапа анализа:
($1 ~ @кДат$1213 ~ @Для) \\ (21: : ВЕЩЬ$1213 ~ Щат)
($1~ @кДат$16 ~ @Когда) \\ (21 : ВРЕМЯ$16 ~ !Дат)
($15- - @кДат) \\ (21: : ДЕЙСТВИЕ$ 15 ~ !Дат)
($1~ @кДат$12 ~ ©Куда) \\ (Ъ\ ; : МЕСТО$12 ~ !Дат)
($1- @кДат$130 ~ ©ДееКак) \\ {Ъ1 : : ДУША$130 ~ Щат)
косу
($1241/121 ~ @ОНА$17@Вин) \\ {21 : $12413130 ~ !Род\!У)
($1213113 ~ @ОНА$17@Вин) \\ {Ъ1 : !Род\!У,22: Щля)
($122416 ~ @ОНА$17@Вин) \\ (21: !Род,г2:!Где)
Эту информацию о слове поставляют морфологический анализатор и синтаксический словарь. Левую часть альтернативы назовем ее семантико-грамматическим значением, правую часть - ее аргументами.
Грамматическое значение альтернативы содержит информацию о том, к каким альтернативам она может присоединиться, аргументы - какие альтернативы она может присоединить. Например, при анализе выражения к лесу будет выбрана четвертая альтернатива предлога К и собранная конструкция получит СГТ - @Куда, выражение к утру - @Когда, к своему ужасу - @ДееКак (как бы деепричастие); при анализе выражения Русая коса у Марии будет выбрана первая альтернатива слова коса, при анализе Острая коса у Петра - вторая, Длинная коса у острова - третья.
Синтаксическая структура предложения предопределена наборами СГТ входящих в него слов. Например, предложение Он шел к лесу на самом внешнем (морфологическом) уровне будет представлено в виде
@Им(Он) шел(!Им,... , ¡Куда) к{@Дат, @Пред}(лес).
Вычислим значение предлога К на слове лес:
@Им(Он) шел(!Им,... , !Куда)@Куда(к@Дат(лес)). .
Соединяя правые части альтернатив одних слов с левыми частями других, получим разборспредложения:
шел(!Им@Им(Он),... , !Куда@Куда(к@Дат(лес))).
Различные синтаксические конструкции могут вырабатывать один и тот же грамматический тип, а внешне одинаковые - различные СГТ. Например, выражения у сарая, около сарая, под сараем, на крыше и т. д. выработают один и тот же СГТ (Где), а выражения - с большим художником, с большим трудом - разные (сТв и Как).
3. Свободные предложно-падежные формы. Предложно-падежная форма в предложении может быть связанной или свободной. Свободная форма - это такое слово или словосочетание, грамматический тип которой не является семантическим аргументом ни одной альтернативы других слов предложения. Например, в предложениях Он смотрит волком и Он смотрит левым глазом творительный падеж в первом предложении является свободной формой, а во втором - нет. Наличие свободных форм казалось бы указывает на недостаточность синтаксического словаря, но это не так. Свободная форма самодостаточна в том смысле, что сама вырабатывает свой обобщенный семантический тип.
Среди свободных форм можно выделить подкласс абсолютно независимых падежных форм. Это .явление наблюдается тогда, когда с падежной формой слова напрямую связывается его семантика, подавляя ее первичный СГТ. Например, второй аргумент глагола читать - Вин, однако при синтаксическом разборе предложения Он читает целый час - читает(Им Он,КакДолго час(Им целый)) - первичный тип Вин выражения целый час будет заменен на СГТ — Как Долго.
Свободная форма вырабатывает дополнительный СГТ, который зависит от падежа
и номера класса. Некоторые из нйх:
Падеж
Номер класса СГТ
Примеры
Дательный $124 Винительный $160 Творительный $160
Кому
КакДолго
Когда (ед. число)
КакДолго (мн. число)
КакКто
Где
наПред
Какой
Как
Как
Как
Как(!Куда)
\построил дом сыну
\шли два часа
\шли утром
\шли месяцами
\ревет медведем
\бежит лесом
\едет поездом
\ростом, стоимостью
\входят парами
\идет расхлябанной походкой
\идет шагом
\спиной к стене
Творительный $1242 Творительный $1224 Творительный $121424 Творительный $12/005 Творительный $12421 Творительный $121424 Творительный $15304 Творительный $124/4
Некоторые свободные предложно-падежные формы вырабатывают СГТ ДееКак (как бы деепричастие). Его вычисление осуществляет предлог. Это достаточно широкий класс словосочетаний, которые присоединяются к глаголу и занимают промежуточное положение между наречием и деепричастием. Например, в разъяснение тезиса, с помощью лестницы, в условиях плохой погоды, наряду с разработкой, по его словам и т. п.
Свободными формами являются все предложно-падежные формы, которые вырабатывают СГТ - Где, Когда, КакДолго, Зачем, Почему, заКогда, наКогда. Все они присоединяются к глаголу.
4. Дополнительные аргументы. Перед началом анализа к каждой лексеме добавляются дополнительные аргументы. Набор этих аргументов определяется частью речи, к которой принадлежит лексема. Все существительные приобретают новые аргументы: !0Какой, ¡Вместе, $1210/08 ~ @КакВ. К существительным классов $1211 (Вещества), $12123 (Строительные материалы), $1213 (Вещь), $14132 (Скульптура), $1232 (Сооружения), $124/1 (Пища) добавляется аргумент !1Какой; к существительным класса $1224 (Ландшафт) - !2Какой; к существительным класса $1241 (Человек) — $12136 ~ @вПред (в одежде).
Всем глаголам и предикатам добавляются аргументы: ¡Где, ¡Когда, ¡Как, ¡Почему, ¡Зачем, ¡КакКто, ¡наКогда, ¡заКогда, ¡ДееКак, $1102 —!Тв (Способ), ¡Для, ¡Сколько, ¡Сравн, Щеепр. Имперфектным глаголам - аргумент ¡КакДолго. Глаголам класса $153 (Перемещение) - аргумент ¡Навстречу.
Прилагательные приобретают аргумент ¡Как, местоимения - аргументы ¡ОКакой и !сТв, сравнения - аргументы ¡Род, ¡Вопр, ¡Как, ¡наВин, числительные в именительном падеже - ¡У.
По окончании анализа, если предложение не собрано полностью, лексемы приобретают дополнительные аргументы и грамматические типы значений.
К существительным и местоимениям добавляются аргументы ¡Где, !сТв, ¡Включая, ¡Без, ¡Откуда, ¡ДееКак, ¡Куда, ¡У, к глаголам - ¡Дат. Существительные во множественном числе и творительном падеже приобретают новое грамматическое значение -@Как.
5. Синтаксический анализатор. Анализатор решает две основные проблемы: правильный выбор (как правило, единственной) альтернативы слова и связывание вы-
бранных альтернатив в единую конструкцию. Он представляет собой связку рекурсивных функций, каждая т которых ориентирована на работу с определенной частью речи: оЬ£]а - обработка глаголов, оЪвиЪ. - обработка существительных, оЬргс! - обработка предлогов и т.д. Каждая из этих функций точно определяет ту роль, которую данная часть речи может играть в предложении.
Единственной действующей операцией является операция связывания слов или уже собранных конструкций. Она состоит из двух частей. Первая часть выявляет наличие связи, сопоставляя аргументы присоединяющей конструкции с семантико-граммати-ческими значениями присоединяемой. При отсутствии связи вычисление заканчивается и выдается значение неуспех. При наличии связи из множества всех связей выбираются связи с максимальным номером класса, после чего описания обеих конструкций модифицируются, одна из них упрятывается под другую, вычисляются семантико-грамматические значения составной конструкции и выдается значение успех. Согласование прилагательного и числительного с существительным осуществляется этой же операцией, только роль аргументов выполняют семактако-гр&шл&тачестае значения прилагательного или числительного.
Упрятанные слова не теряют своей активности и продолжают участвовать в анализе. Это дает возможность присоединять слова еще не собранных конструкций, позволяя настолько упростить алгоритм анализа, что о реализации этой возможности хотя бы очень коротко стоит сказать.
Пусть уже собранная конструкция х1(х2,... , хЗ(х4,...)) с любой глубиной вложенности упрятанных слов пытается присоединить слово у. Вначале все слова хг упорядочиваются по степени их близости в предложении к слову у. После этого во взаимодействие со словом у вступает ближайшее к нему слово, которое в случае успеха присоединяет слово у. В случае неуспеха во взаимодействие вступает следующее слово и т. д. Таким образом еще несобранная конструкция собирается внутри конструкции х1 или в одной из ее подконструкций. При таком методе сборки предложение просматривается анализатором один раз слева направо независимо от глубины вложенности подконструкций.
Алгоритм анализа полностью детерминирован, не содержит механизма возвратов и тем не менее способен анализировать достаточно сложные предложения.
Составные конструкции типа Если ... то, ни ... ни, вложенные предложения, начинающиеся с вопросительных союзов что, где, когда, какой, который и т.п., союзами чтобы, хотя к т.п. анализируются абсолютно так же, как соответствующие конструкции в языках программирования. Если точнее, то так же как в языке Форт. Например, при анализе конструкций типа Если ... то, слово если управляет сборкой сначала первой части предложения, потом присоединяет ее в качестве своего первого аргумента, после чего повторяет то же самое со второй частью предложения, сохраняя в качестве разделителя союз то. Это хорошо видно из процесса анализа предложения Если будет дождь, то он не придет. Процесс анализа: апаПгБ Если\будет\о оЬксН Если\будет\0 апаПгЗ будет\дождь\0
будет\дождь\0 СВЯЗЬ: \ГлагСущ1\ будет =>■ дождь с^1а будет\ЗутЬо1: ,\1 СВЯЗЬ: \ЧтобыВопр\ Если будет \\ присоединение первой части апаНгЭ то\он\2 СВЯЗЬ: \ЧтобыТо\ Если => то апаНиБ Бсли\он\з оЬкоЬ Если\он\з
апаНгЭ он\нелридет\з
оЬтзЬ он\неглридет\з СВЯЗЬ: нелридет ==> он
СВЯЗЬ: Если =>• не_придет \\ присоединение второй части
Результат анализа (описания слов и типы связей опущены):
№ слова Разбор СГТ
001 Если [Условие]
002 будет [Глагол]
003 дождь [Что]
005 то [Союз]
008 не_придет [Глагол]
006 он [Кто-Что]
6. Заключение. Основное внимание в статье было уделено вопросам, непосредственно связанным с понятием семантико-грамматического типа, лежащем на стыке синтаксиса и семантики русского языка. Замена каждого слова предложения во время его разбора на множество альтернатив, содержащих наборы СГТ, оказалась необходимой и достаточной для того, чтобы синтаксический анализатор был в состоянии построить синтаксическую структуру предложения, совпадающую с его семантической структурой. Это говорит об адекватности построенной грамматики русского языка его семантике.
Summary
Tuzov V. A. Coputer grammar of Russian language.
One of the main problems of modern computer science, that of Russian texts semantic analysis is principally solved. The main tool of this problem solution is Russian computer grammar to whose basics outline this article is devoted.
Статья поступила в редакцию 10 мая 2004 г.