АОТ   Автоматическая Обработка Текста

главная о нас продукты скачать  демо технологии   ^

Первичный семантический анализ

Первичный семантический анализ

  Введение

  Вход семантического анализа

  Выход семантического анализа

Алгоритм поверхностно семантического анализа

  Общая схема работы

  Инициализация семантических узлов и синтаксических вариантов фрагментов

  Построение множества словарных интерпретации узлов

  Построение групп времени

  Построение узлов в кавычках

  Построение узлов типа "друг друга"

  Подключение операторов типа не, только

  Построение устойчивых словосочетаний

  Построение лексических функций-параметров

  Установление отношений между локативными узлами

  Интерпретация тезаурусных должностей и организаций

  Процедура инициализации валентной структуры

  Процедура построения графа гипотетических связей

  Построение множественных актантов

  Процедура удаления длинных связей

  Процедура построения вариантов деревьев

  Оценка деревьев

  Проверка отношений по семантическим характеристикам

  Проективность деревьев

  Нарушение первой валентности (FirstValencyViolationCoef) и валентности из добавочных статей (RelationsNotFromRossCount)

  Построение отношений по умолчанию

  Межклаузные связи

  Правило восстановления анафорических местоимений

 

Первичный семантический анализ ^


Введение ^

Этот этап мы условно называем семантическим, поскольку на нем впервые используется валентная структура, записанную в словаре РОСС. Семантический анализ строит семантическую структуру одного предложения на русском языке. Семантическая структура состоит из семантических узлов и семантических отношений. Семантические отношения уже были описаны выше. Семантический узел – одно из центральных понятий семантической теории, которую мы взяли за основу (см. подробнее Леонтьева[1990]). Интуитивное определение узла формулируется так:

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

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

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

Как и на всех этапах анализа, семантические узлы образуются из слов исходного предложения. Главный источник гипотез о составе семантического узла дает, безусловно, синтаксический анализ. Многие синтаксические группы могут перейти в семантические узлы, другие должны превратиться в атрибуты узлов. Другими источниками являются словарь временных групп, РОСС и все тезаурусы.

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

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

 

Вход семантического анализа ^

Синтаксическое представление одного предложения на русском языке.

Все семантические словари и тезаурусы, привлеченные к реализации в системе ДИАЛИНГ.

 

Выход семантического анализа ^

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

ПРИНАДЛ (Пашков,дом)
П-АКТ(дом,стоял)
ЛОК ( пригорке,стоял)

Кроме слов, семантические узлы могут включать:

  • Знаки препинания. Например, для предложения Он купил картошку, лук.
  • Устойчивые обороты. Например, для предложения По правде говоря, я сплю:
  • Абстрактные узлы Copul или ModalCopul. Например, для предложения Он считал этого человека великим ученым:
  • Устойчивые словосочетания. Например, Ему не хватило духа сказать об этом:
  • Жесткие синтаксические группы, например, для словосочетания двадцать два мальчика:

Каждому узлу приписано множество атрибутов:

  • Набор графематических слов, из которых состоит данный узел;
  • Номер семантически главного слова в узле;
  • Грамматическая интерпретация узла (внешняя синтаксическая характеристика);
  • Номер фрагмента (клаузы), которому принадлежит узел;
  • Предлог, который в синтаксисе управлял этим узлом;
  • Ссылка на словарную статью в семантических словарях, которая является интерпретацией этого узла (может быть не определена);
  • Ссылка на словарную статью открытого словосочетания и номер элемента в поле СОСТАВ этого словосочетания (может быть не определена);
  • Флаги: IsMNA – является или нет этот узел оператором однородности;
    IsCopul, IsModalCopul - является или нет этот узел копульным или модально копульным (см. параграф "Абстрактные узлы"); IsEachOtherOborot – является или нет этот узел оборотом типа "друг друга" и др.
  • Теперь перечислим параметры семантического отношения. Кроме названия, у семантического отношения могут быть следующие параметры:
  • ссылка на словарную статью, откуда было взято это отношение, и номер валентности в этой статье;
  • перечень русских слов, которые являются лексическими реализациями этого отношения во входном тексте (предлоги, союзы и т.д);
  • русское синтаксическое отношение, которое является реализацией этого семантического отношения;
  • флаг IsSemFetAgree – согласовано или нет это отношение по СХ.
  • условная длина.

 

Алгоритм поверхностно семантического анализа ^


Общая схема работы ^

Ниже будет приведена общая схема работы алгоритма:

for V Є {синтаксический вариант фрагмента}
{
  инициализация  семантических  узлов (V);
  построение множества словарных интерпретации узлов (V);
  построение групп времени  (V);
  построение узлов из словосочетаний в кавычках  (V);
  построение узлов типа "друг друга" (V);
  подключение операторов типа не, только (V);
  for L Є {лексические варианты для фрагмента V}
  {
    построение устойчивых словосочетаний (L);
    построение лексических функций-параметров(L)
    установление отношений  между локативными  узлами (L);
    интерпретация тезаурусных должностей и организаций (L);
    построения графа гипотетических связей (L);
    построение множественных актантов (L);
    for T Є {варианты деревьев для лексического варианта L}
    {
      проверка по семантических характеристикам(T);
      проверка проективности(T);
      другие структурные оценки(Т);
      построение отношений по умолчанию (L);
    }
  }
  for (H Є {вариант приписывания фрагментам лучших деревьев}
  {
    построение межклаузных связей (H);
    построение анафорических связей(H)
    оценка (H);
  }
}

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

 

Инициализация семантических узлов и синтаксических вариантов фрагментов ^

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

Назовем синтаксические отношения ПРЯМ_ДОП, ПОДЛ, ДЕЕПР, ОДНОР_ИГ, НАРЕЧ_ГЛАГОЛ, ПРИЧ_СУЩ, ПЕР_ГЛАГ_ИНФ, СУЩ_ОБС_ПРИЛ, ОДНОР_ИНФ, ГЕНИТ_ИГ, Р_С_ОДНОР_СУЩ, Р_С_ОДНОР_ИНФ, НАР_ПРЕДИК, ПРИЧ_СУЩ слабыми синтаксическими отношениями, а все остальные сильными. Если из Х в Y идет сильное синтаксическое отношение, то семантика имеет права только проинтерпретировать это отношение, а не уничтожать. А если из Х в Y идет слабое отношение, то это отношение может быть удалено. Смысл разделения синтаксических отношений на слабые и сильные состоит в том, что сильные отношения устанавливаются обычно без ошибок, а слабые нет.

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

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

 

Построение множества словарных интерпретации узлов ^

Процедура построения словарных интерпретаций приписывает каждому СемУ множество словарных входов, которым могут быть приравнены эти СемУ. Например, слову "коса" будет приписано множество словарных входов {коса1, коса2, коса3}. Словарная интерпретация может относиться к одному узлу, а может к некоторому множеству узлов (термин, группа времени). Последний случай называется интерпретацией открытого словосочетания в том смысле, что здесь словарную интерпретацию получает связный подграф (открытое словосочетание), а не один узел. Каждому узлу открытого словосочетания приписывается ссылка на словарную статью и номер элемента в поле СОСТАВ, которому приравнен данный узел.

Фрагмент, в котором для каждого узла указана одна возможная словарная интерпретация, назовем лексическим вариантом фрагмента.

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

 

Построение групп времени ^

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

Weight(H)= m_LengthInText*1000
           +(m_LengthInTitle-(m_CountOfHoles-m_CountOfLexFet))*100
           + m_LengthInTitle,

где m_LengthInText – число слов, которые вошли в эту группу времени, m_LengthInTitle – число элементов заголовка группы времени (дырок и недырок), m_CountOfHoles – число дырок в заголовке, m_CountOfLexFet – число элементов заголовка, для которых определено поле ЛХ. Таким образом, выбираются гипотезы, которые покрывают наибольшее число слов и содержат наименьшее число дырок, не снабженных полем ЛХ. 

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

Сама функция порождения гипотезы от слова c номером K по словарной статье Z выглядит следующим образом. Пусть поле СОСТАВ словарной статьи Z состоит из n элементов T1,...,Tn. Гипотеза W будет равна набору W1,...,Wi,..,Wn таких, что

  • Wi - либо одиночное слово, либо жесткая синтаксическая группа длиной Len(Wi) вида Wi[1],...,Wi[Len(Wi )];
  • за последним словом Wi-1 сразу идет первое слово элемента Wi;
  • W1[1] = K.

Набор W объявляется гипотезой, если для любого элемента Wi  (1<=i<= n) верно, что:

  • Если Ti – дырка и в статье Z определено поле ЛХi, то Wi должно быть одиночным словом равным одному из значений поля ЛХi в полном или сокращенном виде (здесь учитываются аббревиатуры);
  • Если Ti – дырка, и статья Z содержит "ГХi = ЦК", то:
      а) Wi должно быть одиночным словом,  помеченным графематическим дескриптором ЦК или ЦБК;
      б) Wi должно быть одиночным числительным;
      в) либо Wi совпадает с синтаксической группой КОЛИЧ.
  • Если статья Z содержит "ГХi = POS, GR" (POS – часть речи, GR – граммемы), то семантически главное слово Wi должно принадлежать части речи POS и иметь граммемы GR;
  • Если статья Z содержит СХi = Х, тo:
      а) если Х = ДЕНЬ_НЕД или МЕСЯЦ, то словарь групп времени должен содержать слово семантически главное слово Wi, в словарной статье которого есть СХ = ДЕНЬ_НЕД или МЕСЯЦ соответственно;
      б) если Х = ВРЕМЯ, то РОСС должен содержать семантически главное слово Wi, словарная статья которого содержит СХ = ИНТРВЛ. 
  • Если статья Z содержит СИНП = r(i,j), тo нужно проверить, что синтаксис установил отношение r между элементами Wi и Wj;
  • Если статья Z содержит поле ПРЕДЛОГi(j), то нужно проверить, что на i-ом месте стоит один из предлогов, указанных в этом поле.

 

Построение узлов в кавычках ^

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

Нажмите кнопку "read"

Читать статью о налогах в "Нью-Йорк Таймс"

Другой тип – это активный текст. Здесь кавычки придают некоторую условность тексту, но не запрещают управлять другими узлами. Например:

Для тех, кто не смог "настроиться" на этот канал в реальном времени.

Люди осознали возможность "разговаривать" с сотнями людей по сети.

Unix хранит файлы в "директориях".

...,что "отменит удаление" сообщения

Необходимо отличать один тип от другого.

К первому типу относится текст, который либо содержит только латиницу и знаки препинания, либо первому слову этого текста приписан графематический дескриптор "ИМ?". Все остальные случаи отнесем ко второму типу.

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

Если в клаузе только одна кавычка, то такая кавычка игнорируется, узел для нее не строится.

Если в клаузе нечетное число кавычек (более одной), то предпоследняя кавычка игнорируется. Например, для словосочетания вида "Х "Y Z" будет построен один узел, состоящий из слов Х, Y и Z.

 

Построение узлов типа "друг друга" ^

Оборот "друг друга" [1]и все его предложно-падежные формы требуют отдельного описания. Например,

 Исследователи начали эксперименты по соединению компьютеров друг с другом.

 Каталоги могут быть вставлены друг в друга.

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

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

*соединение компьютера друг с другом, а нужно соединение компьютеров друг с другом.

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

 

Подключение операторов типа не, только ^

Словам типа не, только приписана категория КАТ = ОПЕР. Эти слова не заполняют валентности предикатов, а только модифицируют отношение, которое идет к узлу, стоящему сразу после этих слов. Например, в предложении:

Я знаю только этих людей.

Здесь слово только модифицирует отношение СОДЕРЖ(люди, знать), поэтому оператор только не считается узлом, а объявляется параметром отношения СОДЕРЖ(люди, знать). Операторы бывают постпозиционными (же,-то) и препозиционными (не, только, даже, ни). Одному отношению может быть приписано много операторов.

 

Построение устойчивых словосочетаний ^

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

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

  • Проверка лексического состава: удостоверяемся, что слова из словосочетания встречаются в тексте. Если словосочетание состоит только из дырок ("_"), то эта проверка избыточна. Здесь же обрабатываются сокращения, которые приравниваются к полным формам.
  • Проверка позиционных ограничений. Слова и дырки должны стоять в том порядке, в котором они указаны в поле СОСТАВ. Дырки могут быть приравнены любой подстроке.
  • Проверка грамматических характеристик по полю ГХ(i): проверяются граммемы и часть речи. Для дырок могут быть указаны тип синтаксического узла или графематические дескрипторы.
  • Проверка поля ПРЕДЛОГ(i): проверяем, что указанный предлог связан с элементом под номером i.
  • Проверка полей СХ(i): проверяем, что указанная СХ присвоена элементу под номером i в словаре.
  • Проверка поля СИНП: удостоверяемся, что синтаксис построил все перечисленные в этом поле отношения.

Если все условия выполнены, то создается один узел, для которого инициализируются все характеристики и валентная структура.

 

Построение лексических функций-параметров ^

Информация о значениях лексических функциях записывается в словарных статьях (поле ЛФ).

Пусть в словаре есть запись X = F(Y), где F – лексическая функция-параметр, а Х и Y - слова. Задача данного алгоритма найти все такие пары Х,Y в пределах одного фрагмента и поместить их в специальное множество. В зависимости от типа лексических функций для пары Х,Y должны выполняться синтаксические ограничения:

  • если F – функция Magn,Bon,Ver, то Х – наречие, Y – глагол, либо Y – существительное, а Х-согласованное с ним прилагательное;
  • если F – функция Operi, то Y может быть вторым актантом Х по синтаксическим критериям;
  • если F – функция Funci, то Y может быть первым актантом Х по синтаксическим критериям.

В проекте ДИАЛИНГ рассматриваются только самые частые синтаксические модели лексических функций. Например, не рассматривается вариант, когда F – функция типа Magn, Y – глагол, а Х – предложная группа.

Если пара Х,Y удовлетворяет всем вышеперечисленным критериям, то она помещается во множество найденных лексических функций, которое потом используется на этапе трансфера.

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

Если установлена связь между Х,Y по лексической функции, то эта связь является гипотезой синтаксической связи (если такова еще не была построена). Если, в конце концов, эта гипотеза синтаксической связи будет отвергнута, то и сама связь по лексической функции должна быть уничтожена.

 

Установление отношений между локативными узлами ^

Локативные узлы – это такие узлы, которые могут заполнять валентность ЛОК(,) у слов категорий ЭТК.ОБ и ЭТК.СИТ. Сами локативные узлы могут принадлежать как категории ЭТК.ОБ, так и ЭТК.СИТ. В случае с ЭТК.СИТ разрешено использование только предлога в, а сама локализация понимается виртуально:

В сказке можно покататься на луне.

В иммиграции находилось два человека.

Чтобы определить, является ли данный узел(ЭТК.ОБ) локативным, нужно поставить его в контекст: X, где..., например:

Москва, где каждый может ездить в метро

В шкафу, где лежали сигареты.

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

  • Х получен из локативного тезауруса;
  • КАТ(Х) = ЭТК.ОБ, и Х-у приписан локативный предлог в, на, из, от, по, к, до, через, перед, над, под, за, около.

Локативные узлы, которые стоят рядом друг с другом в тексте, обычно связаны отношением уточнения. Направление уточнения зависит как от экстралингвистических характеристик локативных узлов, так и от синтаксических характеристик узлов.

Между двумя локативными узлами У1 и У2 проводится связь:

  • ЛОК (У2, У1), если У1 - беспредложная именная группа, У2 - предложная именная группа;
  • ЛОК (У1, У2), если У2 - предложная именная группа, У1 - предложная именная группа.

Например:

библиотека в штате Вашингтон=>ЛОК(штат Вашингтон, библиотека)

в доме на компьютере=>ЛОК(дом, компьютер)

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

 

Интерпретация тезаурусных должностей и организаций ^

Тезаурусная должность (организация) – это такой текстовый вход Х одного из тезаурусов, что ВЫШЕ(ДОЛЖНОСТЬ, Х) (ВЫШЕ (ОРГАНИЗАЦИЯ, Х)). Для езаурусных должностей и организаций сделано несколько правил вида У1,У2 => R(У2,У1), где У1 и У2 - два узла, причем У2 идет сразу за У1, R – семантическое отношение между У1 и У2. Ниже перечислены реализованные правила:

Если ВЫШЕ (ДОЛЖНОСТЬ, У1), ВЫШЕ (ОРГАНИЗАЦИЯ, У2) => МАСШТАБ(У2, У1);

Если ВЫШЕ (ОРГАНИЗАЦИЯ, У1), У2 – локативный узел => МАСШТАБ (У2, У1);

Если ВЫШЕ (ОРГАНИЗАЦИЯ, У1), ВЫШЕ (ОРГАНИЗАЦИЯ, У2) => ПРИНАДЛ (У1, У2).

Например, для словосочетания Агентство Перспективных Проектов Министерства Обороны США будут построены отношения:

ПРИНАДЛ (Агентство Перспективных Проектов, Министерство Обороны)

МАСШТАБ (США, Министерство Обороны).

 

Процедура инициализации валентной структуры ^

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

===========
 ЗГЛ   =   +ЭТК.СИТ
 КАТ   ==  1  ЭТК.СИТ // поле условия
 ВАЛ   =   ЛОК , А1 , С
           ВРЕМЯ , А2 , С
           ЦЕЛЬ , А3 , С
 ГХ1   =   1  ОБСТ_ГР
 ГХ2   =   1  ОБСТ_ГР
 ГХ3   =   1  к_доп : для+Р
===========
 ЗГЛ   =   +СРАВН
 ИЛЛ   =   Принципы  важнее денег в два раза
 ГХ    ==  1  П сравн
           2  СРАВН
 ВАЛ   =   ЗНАЧ , А1 , С
 ГХ1   =   1  к_доп : на+В
           2  к_доп : в+В
 ЛХ1   =   в_раз
===========
 ЗГЛ   =   +ВМЕСТЛ
 ИЛЛ   =   мешок с зерном
 СХ    ==  1  ВМЕСТЛ
 ВАЛ   =   ВМЕСТЕ , А1 , С
 ГХ1   =   1  к_доп : с+Т
===========
 ЗГЛ   =   +ПРИЗН_ПОСТПОЗИЦ
 ИЛЛ   =   появилась женщина , такая красивая , что они остановились
 ГХ    ==  1  С
 ВАЛ   =   ПРИЗН , С , А1
 ГХ1   =   1  уточн : ПРИЛ

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

 

Процедура построения графа гипотетических связей ^

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

  • Обязательное заполнение зависимого узла отношения ИДЕНТ узлом, первое слово которого обладает графематической пометой Бб, ББ, ЦК или ЦБК;
  • Возможное заполнение валентности КОЛИЧ актантом с пометой ЦК или построенным на группе КОЛИЧ.

Для того чтобы описать, как сопоставляются ГХi c некоторым узлом вводятся обозначения:

  • ЧАСТЬ_РЕЧИ(У)=Х обозначает, что семантически главному слову узла У приписана часть речи Х.
  • Х Є ГРАММЕМЫ(У) обозначает, что узлу У приписаны граммема Х;
  • Х Є ГР_ДЕСКР(У) обозначает, что Х – один из графематических дескрипторов семантически главного слова У;
  • Х = ТИП_ГРУППЫ(У) обозначает, что узел У образован из синтаксической группы Х;
  • Х Є ПРЕДЛОГИ (У) обозначает, что узлу У приписан предлог Х;
  • Х = КАТ (У) обозначает, что узлу У приписана категория Х;
  • CЛАБ_СИН(У) - истина, когда в У не входит ни одного сильного синтаксического отношения.

Ниже будет определен предикат P(У1, ГХi, У2), который равен 1, если узел У2 удовлетворяет значению поля ГХi, входящего в словарную статью семантически главного слова узла У1 ( в противном случае предикат равен 0).

Итак, P(У1,ГХi,У2) равен:

1 если ГХi = подл:*
2 то если         ЧАСТЬ_РЕЧИ(У1)=INFINITIVE
3        или      ЧАСТЬ_РЕЧИ(У1)=PARTICIPLE
4    то return 0;
5    иначе  если  ГХi = подл:инф
6           то return (ЧАСТЬ_РЕЧИ(У2)=INFINITIVE);
7           иначе return (им Є ГРАММЕМЫ(У2));
8 иначе
9    если         КАТ(У1) ≠ ЭТК.СИТ
10       и        ЧАСТЬ_РЕЧИ(У1)=NOUN
11       и        ЧАСТЬ_РЕЧИ(У2)=PRONOUN
12       и        Зл, рд Є ГРАММЕМЫ (У2) 
13   то     return 0;
14   иначе
15   если         (ГХi = r:*)
16       и        (r Є {Д_СИН_О, Д_ГРУППЫ})
17   то     если           (ГХi = r:с)  
18              и          (с Є Д_ПАДЕЖИ)
19          то     return  (с Є ГРАММЕМЫ(У2))  
20                       и    (     ЧАСТЬ_РЕЧИ(У2) Є{NOUN,
21                                  PRONOUN,PRONOUN_P }
22                            или     (CЛАБ_СИН(У2)
23                                  и    ЧАСТЬ_РЕЧИ(У2)= ADJ_FULL)
24                            или      ИЛЕ Є ГР_ДЕСКР(У2)
25                            )
26          иначе  если    (ГХi = r:инф)
27                 то      ЧАСТЬ_РЕЧИ(У2)=INFINITIVE;
28                 иначе  если      (ГХi = r:p)  
29                            и          (r  Є {Д_СИН_О, Д_ГРУППЫ}) 
30                            и          (p Є Д_ПРЕДЛОГИ)
31                            то     return  p Є ПРЕДЛОГИ(У2)
32                            иначе  если    (ГХi = r:ИЛЕ)
33                                   то      return ИЛЕ Є ГР_ДЕСКР(У2)
34                                   иначе ->
35 если     (ГХi = прим_опр:ИГ)
36 то return       (У1 и У2 согласованы по числу и падежу);
37          или    (ИЛЕ Є ГР_ДЕСКР(У2))
38 иначе    если   (ГХi = ОБСТ_ГР:НАР)
39          то      return  (ЧАСТЬ_РЕЧИ(У2) = ADV)
40          иначе   если    (ГХi = ОБСТ_ГР)
41                  то       return      (ПРЕДЛОГИ(У2) ≠ Ø) 
42                  или     (ЧАСТЬ_РЕЧИ(У2) = ADV)

Строки 1-7 относятся к установлению отношения от сказуемого к подлежащему. Подлежащее от инфинитива и причастия (стр 2-4) строится только на межклаузном уровне. Согласование по числу не проверяется, поскольку оно является семантически обусловленным.

Строки 9-13 представляют собой одну из эвристик (остальные для краткости опущены). В этом условии говорится, что не нужно связывать существительное (≠ЭТК.СИТ) с личным местоимением в родительном падеже третьего лица. Таким образом, в словосочетаниях его дом, ее дом, их дом будет выбираться не личное местоимение, а притяжательное.

Строки 15-24 обрабатывают падежное управление. Прилагательное, которое не было подчинено узлу посредством сильного синтаксического отношения, приравнивается ИГ (стр. 22-23). Группа с пометой ИЛЕ (стр. 24) подчиняется любому падежному управлению (для групп с ИЛЕ категория падежа принимает все возможные значения).

Строки 26-32 - проверка падежного управления. Строки 35-37 - отношения примыкания. Строки 40-42 - свободной обстоятельственной группы.

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

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

Идеальным соотношением между числом гипотетических связей и числом узлов была бы 1, так как число отношений в любом дереве на 1 меньше, чем число узлов. На обработанных нами примерах (Приложение 2) это соотношение колеблется от 1 до 2. Мы считаем, это хорошим результатом, поскольку в самом худшем случае (полный граф) оно равно числу связей. Соотношение между числом гипотетических связей и числом узлов может использоваться в качестве оценки сложности фрагмента F (обозначение Compl(F)). В текущей реализации фрагмент F считается сложным, если Compl(F) > 1.5, в таком случае включаются некоторые программные упрощения, о которых будет сказано ниже.

Подытоживая вышесказанное, заметим, что, вообще говоря, рассматриваемая процедура строит все возможные грамматические решения. Задача дальнейших этапов - оценить и упорядочить по перспективности построенные гипотезы. Фактически же, построенный граф - это таблица возможного управления, как она была введена Кулагиной[1979] в т.н. методе фильтров.

 

Построение множественных актантов ^

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

  • процедура построения множественного актанта с союзом как, например: Протокол обрабатывает датаграмму как независимую единицу;
  • процедура построения сравнительного оборота с союзом чем, например: Он был больше учителем, чем сторожем;
  • процедура построения сравнительного оборота без союза чем, например: Я не знаю человека добрее Васи;
  • процедура построения предложного однородного ряда, например: В лесу и на огороде;
  • процедура построения отношений, выходящих из оператора однородности для простых однородных рядов типа Х,Y и Z;
  • процедура построения отношений, входящих в оператор однородности для простых однородных рядов типа Х,Y и Z.

Рассмотрим две последние процедуры. Оператором однородности в этом случае считается любой сочинительный союз (не двойной и не повторяющийся). Пусть Х - ИГ, следующая сразу же за оператором однородности. Считаем, что Х входит в однородный ряд, а это значит, что нужно провести стрелку от оператора однородности к Х. Объявляем, что Х - самый правый элемент однородного ряда. Все остальные члены должны быть левее оператора однородности. Теперь идем влево до тех пор, пока не встретился глагол в личной форме. Все ИГ, согласованные с Х по падежу, включаем в однородный ряд. Между найденными ИГ обязательно должна быть хотя бы одна запятая (запятых может быть много, например, в том случае, если вместо одного члена однородного ряда стоит другой однородный ряд). Однородный ряд может начинаться с предлога, который в текущей версии приписан первому элементу однородного ряда, а, на самом деле, должен быть приписан все ряду сразу.

Процедура построения отношений, входящих в оператор однородности для каждого отношения R, идущего из некоторого узла Z в какой-нибудь член однородного ряда М, создает отношение из Z в оператор однородности. Характеристики нового отношения равны характеристикам отношения R . Например, во фразе знать Петю и Васю  оператор однородности - союз и. Предыдущая процедура построила два отношения и->Вася, и->Петя. В графе гипотетических связей (по второй валентности) были построены связи знать->Петя, знать->Вася. Значит, у нас есть даже двойное подтверждение связи знать->и. Вообще говоря, первоначально, для проведения отношения к оператору однородности требовалось двойное подтверждение, поскольку минимальное число членов однородного ряда - 2. Но именно из-за случая с предлогом в начале однородного ряда двойное подтверждение пришлось заменить одинарным [2]. 

В итоге, работа этих процедур сводится к построению гипотез отношений, входящих и выходящих из оператора однородности.

 

Процедура удаления длинных связей ^

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

Он пилил старую и гнилую сосну очень тупой ножовкой.

условная длина отношения пилить->ножовкой будет равно 1, поскольку старую и гнилую сосну - это одно дерево с сильными синтаксическими отношениями.

Пусть М - множество отношений, которые идут от существительного к любому узлу, если только этот узел не является оператором однородности. Все отношения из М длиной более 3 уничтожаются сразу же, а если сложность фрагмента больше 1.8, то уничтожаются все отношения из М длиной больше 1.

Эти экспериментально вычисленные коэффициенты позволяют понизить сложность фрагмента на 20-30 процентов.

 

Процедура построения вариантов деревьев[3] ^

Эта процедура по графу гипотетических связей строит множество остовных деревьев [4], в которых нет двух семантических отношений с одинаковым непустым названием, идущих от одного узла к двум разным узлам. Несмотря на то, что эта процедура носит явно технический характер, время ее работы значительно (до 30 процентов). Связано это, в первую очередь с тем, что число остовных деревьев для фрагмента в 10-15 слов может быть несколько тысяч. Сама процедура выделения остовных деревьев, как нам кажется, не достаточно совершенна, но все наши усилия как по программной, так и по логико-комбинаторной оптимизации ни к чему не привели.

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

 

Оценка деревьев ^

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

(1) Общие коэффициенты

Проективность (ProjectnessCoef = 0, если дерево проективно, 1 – в противном случае);

Число отношений, которые не прошли проверку по семантическим характеристикам (SemFetDisagreeCount);

Число актантов, нарушающих заданный статьей порядок (ValencyDisorder);

Число операторов однородности, подчиняющих меньше двух узлов или подчиняющих не два узла (в случае двойных союзов) (MNAViolationsCount);

Число слов, для которых не найдено заполнение первой валентности (FirstValencyViolationCoef);

Число связей в графе, которые были получены из добавочных статей (RelationsNotFromRossCount);

Общая длина всех отношений(RelationsLength). Длинаодного отношения равна расстоянию между ближайшими словами узлов;

(2) Грамматические коэффициенты

Равна или нет вершина построенного графа сказуемому в синтаксическом анализе (AgreeWithSyntaxTopCoef);

Число узлов, нарушающих грамматические ограничения, записанных в поле ОГРН (GramRestrViolationsCount); 

Удовлетворяет ли корень дерева морфологическим критериям (TopAgreeWithSyntaxCriteria);

Число отношений, которые не2 согласованы с частью речи узла, в который они входят(SemRelPOSViolationsCount);

Число узлов (не операторов однородности), у которых подчиненные узлы разделены запятой (CommaBetweenActantsExceptMNAViolationsCount);

Проверка согласования подлежащего и сказуемого (SubjectPredicateViolationsCount);

(3) Словарные коэффициенты

Общее число валентностей, которые заполнены одним из значений стандартной лексической функции (поле ЛХ) (LexFetAgreeCount);

Число узлов, построенных на лексических функциях (LexFunctsNodesCount);

Число условных закрытых словосочетаний (CollocsCountCoef);

Число обстоятельственных оборотов (OborotAdverbialCountCoef);

(4) Лексические коэффициенты

Нарушение, связанное со словом сам (SAMNodeViolation);

Число узлов, которые, подчиняя оборот типа друг друга, не имеют другого актанта во множественном числе (EachOtherOborotViolationCount);

Вес остовного дерева вычисляется по следующей формуле:

WEIGHT(Ti) =
                           
   +ProjectnessCoef*100 
   + SemFetDisagreeCount*20
                           
   +ValencyDisorder*7 
   +MNAViolationsCount*200 
   +FirstValencyViolationCoef*30 
   +RelationsNotFromRossCount*90 
   + RelationsLength*10
                           
   -AgreeWithSyntaxTopCoefCoef*20 
   +GramRestrViolationsCount*100 
   -TopAgreeWithSyntaxCriteria*10 
   + SemRelPOSViolationsCount*5
                           
   +CommaBetweenActantsExceptMNAViolationsCount*100 
   +SubjectPredicateViolationsCount*50 
   -LexFetAgreeCount*40 
   -LexFunctsNodesCount*30 
   -CollocsCountCoef*15 
   -OborotAdverbialCountCoef*10 
   +EachOtherOborotViolationCount*50 
   + SAMNodeViolation*500.

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

 

Проверка отношений по семантическим характеристикам ^

Эта процедура проверяет отношение между узлами, главные слова которых были найдены в словаре. Пусть Host - словарная статья главного слова узла, от которого идет рассматриваемое отношение (далее просто отношение). Пусть Slave – словарная статья главного слова узла, к которому идет отношение.

Сейчас нам понадобятся только поля СХ из этих двух словарных статей. Напомним, что поля СХ содержат дизъюнкцию конъюнкций, т.е. нормальную форму, семантических характеристик или отношений. Дизъюнкты нумеруются начиная с 1. Например:

СХ(Host)    =  1 ФИН, ОРГ
               2 ОДУШ

Пусть отношение, которое мы проверяем, стоит i-ым по порядку в словарной статье слова Host. Считается, что отношение удовлетворяет критерию семантических характеристик, если какой-либо из дизъюнктов СХi(Host) полностью вкладывается в какой-либо дизъюнкт СХ(Slave).

Например, если:

СХi(Host)   =  ОРГ 
СХ(Slave)   =  ОРГ, ФИН.

Т.е., в СХ(Slave) записано, что Slave – финансовая организация, а в ограничениях i-ой валентности записано, что i-ая валентность – просто организация, значит, может быть и финансовой.

 

Проективность деревьев ^

Проективность проверяется непосредственно по определениям, данным в книге Гладкий[1985]. Сначала проверяется слабая проективность, а именно, что для любых четырех узлов a,b,c,d из a->b, с->d следует, что пары a,b и c,d не разделяют друг друга. Потом проверяется проективность, причем проективность (но не слабую проективность!) разрешено нарушать инфинитивным конструкциям, например:

на него стоит настроится.

Здесь стрелка от "настроится" идет к "на него" через "стоит", который сам управляет "стоит".

 

Нарушение первой валентности (FirstValencyViolationCoef) и валентности из добавочных статей (RelationsNotFromRossCount) ^

Коэффициент FirstValencyViolationCoef понижает оценку вариантов, где у узлов (ЭТК.СИТ) не заполнены первые валентности. A RelationsNotFromRossCount понижает оценку тем вариантам, в которые входят валентности из добавочных статей. Таким образом мы пытаемся различить обязательные и факультативные валентности. Конечно, случаи опущения первой валентности достаточно распространены, например:

Он хочет есть. (1)

Он забыл, что уже сказал об этом. (2)

Пойду в магазин, куплю что-нибудь. (3)

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

 

Построение отношений по умолчанию ^

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

 

Межклаузные связи ^

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

  • Правило деепричастного оборота;
  • Правило причастного оборота;
  • Правило чтобы(что)+ГГ;
  • Правило подчинительного союза;
  • Правило двойного союза;
  • Правило союзного слова;
  • Правило сочинительного союза;
  • Правило союзного слова что;
  • Правило для который;
  • Правило для бессоюзного подчинения.
  • Правило деепричастного оборота заполняет первую валентность деепричастия подлежащим подчиняющего предиката. Например, я шел, улыбаясь => СУБ (я, улыбаться).
  • Правило причастного оборота ищет согласованное существительное в подчиняющей клаузе и заполняет первую свободную валентность причастия этим словом. Например, стул, использованный мной => ОБ(стул, использовать).
  • Правило с чтобы(что)+ГГ  ищет в подчиняющей клаузе слова со свободной валентностью, чья ГХ равна чтобы(что)+ГГ, чтобы(что)+инф или чтобы(что)+ГГ_прш, и заполняет эту валентность главным предикатом подчиненной клаузы.
  • Правило подчинительного союза проверяет согласование между ГХi союза и клаузами, которые стоят слева и справа. Союзы чтобы и что  обрабатываются предыдущим правилом. Далее между вершинами клауз проводится отношение,  записанное в статье союза.
  • Правило двойного союза работает так же, как и предыдущее правило.
  • Правило союзного слова состоит из трех частей. Во-первых, в подчиняющей клаузе ищется соотносительное местоимение (то-что, там-где и др.). Если местоимение было найдено, то проводится связь ТОЖД между ним и союзным словом, а после этого выходим из правила. Во-вторых, в подчиняющей клаузе ищутся слова, которые имеют валентности на придаточное предложение с союзным словом (кроме что). Например, вопрос, где нам жить. Если такое слово было найдено, то заполняется его валентность, и после этого выходим из процедуры. В-третьих, проверяются возможные локативные или временные связи типа: дом, где я жил; в день, когда я приехал. Здесь тоже проводится связь ТОЖД.
  • Правило сочинительного союза просто соединяет два соседние клаузы, отношением записанным в статье сочинительного союза.
  • Правило союзного слова что  разбирает три случая. Во-первых, когда в подчиняющей клаузе есть слов с валентностью на придаточное предложение с союзным словом что: я знаю, чем нужно пилить. Во-вторых, достаточно распространенная конструкция типа: я сделал, что ты просил.  У глагола сделать нет валентности на придаточное предложение, но зато есть валентность на прямое дополнение. В-третьих (по умолчанию), придаточное предложение со что соединяется с вершиной подчиняющей клаузы валентностью СОДЕРЖ, например: клиенты разбросаны по большой территории , что затрудняет эффективное расширение сети.
  • Правило для союзного слова который ищет в подчиняющей клаузе согласованное по роду и числу слово и проводит к нему стрелку ТОЖД.
  • Правило для бессоюзного подчинения обрабатывает конструкции типа я думаю, ты ушел.

 

Правило восстановления анафорических местоимений ^

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

 

 

[1] Похожую обработку проходят слова кое-кто (кое у кого, кое с кем), некого и нечего (не у кого, не с кем).

[2] Во фразе зависеть от Пети и Васи  в графе гипотетических связей не будет отношения зависеть->Вася,   поскольку предлог от+Р приписан только узлу Петя.

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

[4] Остовное дерево связного графа – это максимальный подграф, который является деревом. Очевидно, что остовных деревьев у одного связного графа может быть много. Мы можем сказать только, что число остовных деревьев полного графа с числом вершин n больше n!.

главная о нас продукты скачать  демо технологии   ^

 
Разработка DiP.
© 2003 АОТ. Все права защищены.