Сборник 2001

КОМПЬЮТЕРНАЯ СЕМАНТИКА РУССКОГО ЯЗЫКА[1]

В.А.Тузов

Санкт-Петербургский государственный университет

 

 

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

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

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

Функциональная природа языка. С точки зрения этого подхода любое слово русского языка является именем (названием) функции f(x1, …, xn), которая связывается с этим словом и называется его семантикой. Каждое свое конкретное значение слово получает только после подстановки конкретных значений – также как функция sin(x) получает свое значение только после подстановки конкретного аргумента. Смысл слова вычисляется в процессе выполнения функции f.

Предложение – единая законченная суперпозиция функций. Т.е. предложение это выражение – в математическом смысле этого слова. Например, sin(x+y)– выражение, а sin(x+ – не выражение. “Он смотрит в глаза собеседнику” – предложение, а “Он  смотрит  собеседнику" – не предложение. Смысл предложения вычисляется в процессе построения и выполнения суперпозиции.

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

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

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

Часто используемое в лингвистике понятие валентность следует понимать буквально, в химическом смысле: кислород и водород, реализуя свои валентности, перестают быть кислородом и водородом, а создают новую сущность – воду. С точки зрения информатики, присоединяемые слова являютсяаргументами, из которых присоединяющее их слово строит новую конструкцию, семантика которой может существенно отличаться от семантики ее составляющих. Любой достаточно развитый язык имеет функциональную природу, и только суперпозиция функций адекватна структуре предложений такого языка.

Функциональная природа языка проявляется на всех его уровнях – от механизма словообразования до механизма построения текста. Достаточно посмотреть на аффикс как на функцию, аргументом которой является корень слова, чтобы увидеть удивительную регулярность механизма словообразования русского языка. Благодаря этой регулярности вначале удалось формализовать семантику словообразования, затем автоматически построить семантическое описание большого количества производных слов, сведя эти описания к описанию слов более простых по морфемному составу. Это позволило существенно автоматизировать процесс построения компьютерного семантического словаря и, в конечном счете, построить его.

В качестве примера рассмотрим два суффикса: -тель и –ость. При помощи суффикса -тель образуются отглагольные существительные, называющие первый аргумент глагола (учить – учитель). Число таких слов в стотысячном словаре 692. Из них 671 слово подпадает под это правило. Исключением является 21 слово: приятель, неприятель, числитель, знаменатель и другие. Поэтому описание семантики подавляющего числа таких слов сводится к описанию семантики соответствующего глагола при помощи одной и той же формулы x –> s1 x.. Смысл суффикса -ость, с помощью которого от прилагательных образуются существительные (дряхлый – дряхлость), выражается формулой x –> Copul_o(Род,x). Всего таких слов 3177, исключение 53 слова: ревность, стоимость, промышленность, решимость и другие.

Не менее ярко функциональная природа языка проявляется при вычислении семантико-грамматических типов предложных выражений, что хорошо видно из примеров, построенных семантическим анализатором:

 

@Какой В($11/0~@Вин ширину)                                               @Как Во(@Вин ширь($1~@ОНА$5@Вин всю))          

@Как Во(@Вин дух($15~@ОН$5@Винн весь))                           @Как Во(@Вин опор($15~@ОН$5@Винн весь))

@Как Во(@Вин прыть($15~@ОНА$5@Вин всю))                      @Как Во(@Вин голос($1~@ОН$5@Винн весь))

@Когда На($12/1~@Пред зорьке)                                                               @Когда На($17~@Пред закате)                                 

@Когда На(@Пред зорьке(@ОНА$5@Пред утренней))                               @Когда В(@(Вин погоду($1~@ОНА$5@Вин другую))

@Откуда Из($12~@Род деревни)                                              @Откуда Из($18~@Род полета)                                

@Откуда Из($14/0~@Род живота)                                                @ИзКого Из($141~@ОНИ$5@Род крестьян)

@ИзКого Из($141~@ОНИ$5@Род дворян)                                      @Откуда Из($113~@Род кастрюли)                            

@Откуда Из($12~@Род берегов)                                               @Почему Из($150~@Род уважения)                            

@Почему Из($150~@Род любви)                                                 @Когда Из($17~@Род года)                                    

@Когда В($17~@Вин год)                                                              @Когда Ко($17~@Дат дню(@Род рождения))            

@Куда К($141~@Дат крестьянам)                                                        @Куда К($12~@Дат острову)                               

@Куда Ко($5~@Дат мне)                                                                            @Когда К($17~@Дат утру)                                            

@Как С($15~@Тв печалью)                                                            @сКем С($14~@Тв другом)                                

@Как С($15~@Тв выкрутасами)                                                     @Как С($15~@Тв антипатией)

@Почему Со($15~@Род смеху)                                                 @Какой С(@ОНА$5@Вин гору)

@Как С($15~@Тв предубеждением)                                               @Почему С($10/4~@Род похмелья)

@Как С($15~@Тв уверенностью)                                                    @Как С($15~@Тв убеждением)

@Как С($15~@Тв почтением)                                                         @Как С($15~@Тв ненавистью)

@Откуда@Какой Со($14~@Род слона)                                   @Откуда С($12~@Род горы)

@Почему С($15~@Род горя)                                              @Как С($15~@Тв уважением)

@Откуда С($12~@Род запада)

 

Поясним эти записи на примере выражения @Почему С($15~@Род горя). Предлог С на классе $15 существительных (класс существительных с условным названием Психика) в родительном падеже вырабатывает семантико-грамматический тип Почему. Это происходит следующим образом. После предварительной обработки описание слова Горя будет представлено в виде трех морфосемантических альтернатив (чувство, подвергаться действию огня и проявлять сильное желание).

 

Горя

ГОРЕ       {Сущ Неодуш $150023~@ОНО$5@Род} $150023(!Род)

                  ГОРЕТЬ  {Глаг} Caus(ПРИЧИНА$10/05~!От,Lab(!Деепр,ОГОНЬ$125~!Тв))

                  ГОРЕТЬ  {Глаг} Oper00(!Деепр,Magn_a~ЖЕЛАНИЕ$1503(!Тв))

 

Одна из альтернатив предлога С (всего их – 34)

 

С  {Предл $15~@Почему} Caus_y(ПСИХИКА$15~!Род,#)

 

может взаимодействовать с первой альтернативой слова Горя. В результате взаимодействия этих альтернатив вычисляется значение Почему.

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

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

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

Семантический словарь. Словарная статья компьютерного семантического словаря содержит заголовочное слово и его толкование на семантическом языке. Многие слова, – а это, как правило, часто используемые слова – содержат более одного толкования. Пожалуй, наиболее многозначным является глаголидти, сокращенное семантическое описание которого имеет вид:

 

ИДТИ

Caus(#,IncepLab(МЕСТО$111~!Им,ДЕЙСТВИЕ$13~!Куда))

Caus(#,IncepUsor(ДЕНЬГИ$1114~!Им,!наВин))

Caus(ЖЕНЩИНА$11413119~!Им,Incep~Loc(!Им,ЗАМУЖ$81\НЕКТО$1141~!заВин)))

Caus(ДОРОГА$1121~!Им,Func(ВОЗМОЖНОСТЬ$10/08~ХОД$13304(!Где,!поДат,!Откуда,!Куда)))

Caus(НЕКТО$1141~!Им,IncepCopul(#,СПЕЦ$114132~!вКого))

Caus(НЕКТО$1141~!Им,IncepOper01(!Им,ДЕЙСТВИЕ$13~!Куда))

Caus(Oper01(!Им,ХОД$13304(!Где,!поДат,СЛЕДОМ$3(!заТв),!Откуда,!Куда)),Incep(!Инфин)))

Func(ДЕЙСТВИЕ$13\ОСАДКИ$112/15\РЕЧЬ$132011~!Им)

IncepFunc(СОБЫТИЕ$10/1\ВРЕМЯ$14\СИЛА$13422\ПУТЬ$112431~!Им)

Oper00(#,СОГЛАСИЕ$121127)

Oper00(ОДЕЖДА$11136~!Им,СООТВЕТСТВИЕ$10/031(!Дат))

Oper01(МЕСТО$111~!Им,ХОД$13304(НЕЧТО$1~!Где,!поДат,СЛЕДОМ$3(!заТв!),!Откуда,!Куда))

Oper01(ЧАСЫ$1113231~!Им,РАБОТА$1311)

Caus(Oper01(НЕКТО$1141~!Им,ХОД$13304(!наПред,!поДат,!Откуда,!Куда)),Incep(!Инфин))

 

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

 

Oper00(x,y) – x проявляет [СВОЙСТВО] y;                               Oper01(x,y) – x совершает [ДЕЙСТВИЕ] y;

Oper03(x,y) – x испытывает [ЧУВСТВО] y; и т.д.         (Всего в языке - 12 функций  класса Oper)

Caus (x,y) –x делает так, чтобы y (x каузирует y)                         Func(x) -  имеет место быть x.

Loc(x,y) - x находится в y,                                                  Usor(x,y) – x используется для y 

Incep(x)  - x начинается и т.д.                                                               $<номер>  - номер базового класса (понятия).

# - замещает отсутсвующий аргумент                                         ! ,@ и т.п. – вспомогательные символы

 

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

 

Caus(ЧЕЛОВЕК$141~!Им,IncepOper01(ЧЕЛОВЕК$141~!Им,ДЕЙСТВИЕ$18~!Куда)) 

!Им  (класса ЧЕЛОВЕК) делает так, чтобы начать совершать [ДЕЙСТВИЕ]  !Куда   

 

Oper00(ОДЕЖДА$1136~!Им,СООТВЕТСТВИЕ$10/031(!Дат)) -

!Им  (класса ОДЕЖДА) проявляет СООТВЕТСТВИЕ  (кому-чему)  !Дат

 

Приведем по одному примеру на каждую альтернативу этого описания: Сырье идет в переработку. Деньги идут на строительство. Идти замуж. Дорога идет в лес. Идти в космонавты. Идти в полет. Машина идет. Дождь идет. Речь идет о хлебе насущном. Гроза идет. Шляпка ей идет. Лед идет. Идет (выражение согласия). Часы идут. Человек идет по улице.

 

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

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

 

Бумага

  БУМАГА {Сущ Неодуш $11127~@ОНА$5@Им} $11127(!Род,!Из)

идет  (в описании из-за его громоздкости оставлена лишь одна альтернатива)

  ИДТИ {Глаг} Caus(#,IncepLab(МЕСТО$111~!ОН$5\!ОНА$5\!ОНО$5,ДЕЙСТВИЕ$13~!Куда))

в

  В {Предл @вВин @вПред @вКого @вОНИ$5@Им} $71(!Вин\!Пред\!Кого\!ОНИ$5@Им)

  В {Предл $18~@Куда} Direkt_y(#,ДЕЙСТВИЕ$13~!Вин) ,

  В {Предл $12~@Куда} Direkt_y(#,ВНУТРИ$30003~ПРИРОДА$112~!Вин)

и т.д.,  всего 33 альтернативы.

 

переработку

 ПЕРЕРАБОТКА {СущНеодуш$13~@ОНА$5@Вин} $1327(!Тв,!Род, !вВин\!наВин)

Symbol:  .

 

После предварительной обработки описание каждого слова предложения представляет собой набор одинаковых по форме альтернатив, каждая из которых состоит из двух частей: морфологической и семантической. Морфологическая часть (в фигурных скобках) содержит информацию, к чему может присоединиться данная альтернатива; семантическая часть – информацию о том, что эта альтернатива может к себе присоединить. Вся эта информация является необходимой и достаточной для выбора правильной альтернативы и правильного связывания слов в предложении.

Подвергнув такой обработке все словоформы исходного словаря, можно легко построить единый морфосемантический словарь, использование которого снимает необходимость в морфологическом анализе и предварительной обработке текста. Время анализа существенно сокращается, но объем рабочего словаря увеличивается в тридцать два раза (9 Мб и 288 Мб).

Сущность семантического анализа. На этапе семантического анализа происходит отбор нужных для данного предложения морфосемантических альтернатив и связывание слов в единую структуру. В нашем примере Бумага идет в переработку морфологическая часть описания слова ПЕРЕРАБОТКА ($13~@ОНА$5@Вин) используется семантическим анализатором как средство для выбора той альтернативы предлога В, семантическая часть описания которой содержит тот же класс и тот же падеж, т.е. альтернативы

 

В {Предл $13~@Куда} Direkt_y(#,ДЕЙСТВИЕ$13~!Вин) ,

 

которая вырабатывает семантико-грамматический тип $13~@Куда. Описание слова бумага содержат морфологическую часть – ($111~@ОНА$5@Им), которая вместе с семантическим типом $13~@Куда словосочетания в переработку позволяют семантическому анализатору однозначно выбрать альтернативу для глагола идти:

 

     ИДТИ {Глаг} Caus(#,IncepLab(МЕСТО$111~!ОН$5\!ОНА$5\!ОНО$5,ДЕЙСТВИЕ$13~!Куда)) .

 

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

Caus(#,IncepLab(БУМАГА$11127,ПЕРЕРАБОТКА$13)) .

(Кто-то делает так, чтобы бумага начала подвергаться переработке)

 

Рассмотрим еще один пример, иллюстрирующий работу семантического анализатора. Возьмем прилагательные любознательный и любопытный.

 

ЛЮБОЗНАТЕЛЬНЫЙ               {Прил$141~@ОН$5@Им} EmCaus_a1(!%1,Hab(!%1,ЗНАНИЕ$151542))

                                                            (Такой человек, который склонен приобретать знания)

ЛЮБОПЫТНЫЙ            {Прил @ОН$5@Им}  Caus_a1(!%1,Oper02(!Для,ЛЮБОПЫТСТВО$15151(!Тв)))

(Такой, который вызывает любопытство)

ЛЮБОПЫТНЫЙ            {Прил $141~@ОН$5@Им} EmOper02_a1($141~!%1,ЛЮБОПЫТСТВО$15151)

(Такой человек, который склонен проявлять любопытство)

Любознательный случай.

СЛУЧАЙ                {Сущ $10/11~@ОН$5@Им $10/11~@ОН$5@Винн} $10/11(!сТв\!уРод\!Среди\!Где)

Связь между прилагательным и существительным невозможна из-за несовпадения семантических классов –  $141 и $10/11. Результатом является несвязный текст.

 

Любознательный человек.

ЧЕЛОВЕК {Сущ Одуш $141~@ОН$5@Им} $141(!Род)

Между прилагательным и существительным есть связь   $141~@ОН$5@Им. Результат:

EmCaus_o1(ЧЕЛОВЕК$141,Hab(ЧЕЛОВЕК$141,ЗНАНИЕ$151542(!вПред)))

 

Любопытный случай.

Связь образует только первая альтернатива. Результат:

Caus_o1(СЛУЧАЙ$10/11,Oper02(!Для,ЛЮБОПЫТСТВО$15151(!Тв)))

 

Любопытный человек.

Менее сильную связь (только по падежу) образует первая альтернатива. Результат:

Caus_o1(ЧЕЛОВЕК$141,Oper02(!Для,ЛЮБОПЫТСТВО$15151(!Тв)))

Более сильную связь (по номеру класса и падежу) образует вторая альтернатива. Результат:

EmOper02_o1(ЧЕЛОВЕК$141,ЛЮБОПЫТСТВО$15151)

 

Выражение Любопытный для меня человек однозначно:

Caus_o1(ЧЕЛОВЕК$141,Oper02(Я,ЛЮБОПЫТСТВО$15151(!Тв)))

 

Аналогичным образом вычисляются точные семантические значения таких выражений, как Красная смородина, Красный партизан, Красный цветок и т.п.

Как видим, наличие хорошего семантического словаря позволяет сделать семантический анализ текста достаточно простым: нужно лишь связать те концы альтернатив, которые согласуются по номеру семантического класса и по морфологическим (грамматическим) характеристикам.

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

Проиллюстрируем это на примере. Возьмем типичное семантическое описание какого-либо прилагательного, например, прилагательного кофейный.

 

КОФЕЙНЫЙ

   Copul_a1(ЦВЕТ$11/012~!%1,ТЕМНО-КОРИЧНЕВЫЙ$206)

   Usor_a1(ПОСУДА$1131111~!%1,КОФЕ$14/112)

   Rel_a1(НЕЧТО$1~!%1,КОФЕ$14/112)

 

Такое описание слова кофейный соответствует его толкованию в толковом словаре: если существительное принадлежит классу ЦВЕТ$11/012, то кофейный = темно-коричневый, если – классу ПОСУДА$1131111, то это посуда, которая используется для кофе, иначе – это нечто, имеющее какое-то отношение к кофе.

Допустим, в конкретном тексте встретилось выражение кофейная собака. Семантический анализатор переведет это выражение как

                                    Rel_o1(СОБАКА$14224112~!%1,КОФЕ$14/112) –

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

 

Hab_a1(СОБАКА$14224112~!%1,ЦВЕТ$11/012(КОФЕ$14/112))

Oper09_a1(СОБАКА$14224112~!%1,ОХРАНА$182036(Rel_o1(ПЛАНТАЦИЯ$12411~!%1,КОФЕ$14/112))),

 

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

Заключение. Из сказанного следует, что семантический анализатор текстов на русском языке аналогичен синтаксическому анализатору для языков программирования с сильно развитой системой типов значений. Результатом семантического анализа является текст на формальном семантическом языке, который представляет собой запись суперпозиций из базисных функций и базовых понятий. При решении практических задач требуется привязка этих текстов как к самой задаче, так и к конкретной предметной области, т.е. требуется прагматический анализ текста, в результате которого должно быть построено его отображение в виртуальную действительность. Представление текста в виде суперпозиций функций позволяет сделать этот анализ прямым продолжением (конкретизацией) семантического анализа: базисные понятия преобразуются в действующие объекты, а базисные функции –  в операции, определяющие взаимодействие объектов.

 

 

[1] Работа выполнена при поддержке РФФИ, проект № 00-01-00443.