Синтаксический анализ

Автор: Игорь Ножов
Опубликовано в журнале «Компьютерра» №21 от 05 июня 2002 года

«А есть журнал «Картофель и овощи», с картинками. А есть «За рулем». А есть «Сибирские огни». А есть «Синтаксис», слово какое-то вроде как непристойное, а что значит, не понять. Должно, матерное».
Татьяна Толстая. «Кысь»



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

Аналогию между системой языка и шахматами впервые предложил швейцарский лингвист Фердинанд де Соссюр. Как не меняются суть и правила игры в зависимости от размера доски или цвета фигур, так и сохраняют сходство грамматические структуры и законы внешне абсолютно разных языков. Белопольный слон никогда не займет черную клетку; каждое слово занимает только отведенное его роли место в структуре или линейном порядке предложения (например, в русском существительное не может стоять до предлога, от которого оно зависит). Любая удачная комбинация в партии есть продуманная последовательность ходов, где каждая фигура защищена другой, и если фигура удалена от «своих» и остается без защиты, она будет съедена или заперта фигурами противника, а партия проиграна. Грамматически верное и однозначное высказывание — результат хорошо построенной непрерывающейся структуры, где каждое слово имеет хозяина, и если слово не связано ни с одним из других слов в предложении, оно «выбивается» из контекста, искажая смысл всего высказывания.

«Большого охотник убил кролика хитрый». Такое предложение является грамматически неверным в русском языке, но правильно построенным в австралийском языке вальбири, где господствует свободный порядок слов. Один из главных критериев правильности синтаксической структуры — принцип проективности: структура проективна, если ни одна из стрелок не пересекает другую стрелку.

Проективность можно проиллюстрировать примером 1 (рис. 1). Пример на рис. 2 является непроективным.

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

Степень свободы линейного порядка слов в предложении определяется сложностью морфологии языка. Так, русский перевод английской фразы «The farmer kills the duckling», то есть «Фермер убивает утенка», имеет 3! способа линейного расположения слов во фразе без ущерба принципу проективности («Утенка убивает фермер», «Утенка фермер убивает» и т. д.), в то время как любая перестановка слов в английском эквиваленте приводит либо к изменению смысла высказывания («The duckling kills the farmer» — «Утенок убивает фермера»), либо к грамматической неправильности («Kills the farmer the duckling»). Падежные окончания русских существительных позволяют свободно менять порядок слов во фразе, сохраняя смысл исходного высказывания (кто и кого убил).

В лингвистике существуют две основополагающие гипотезы о связи человеческого интеллекта и системы естественного языка. Гипотеза лингвистической относительности Сепира-Уорфа, согласно которой структура языка определяет структуру мышления и способ познания внешнего мира, и гипотеза о врожденности языковой способности, высказанная Хомским, согласно которой «форма языка, схема его грамматики в большой степени дана заранее». Каждая из этих теорий имеет своих сторонников и противников. Но достоверно можно утверждать только одно: абстрактная синтаксическая структура действительно отражает индивидуальные навыки мышления каждого человека и его способы выражения на родном языке знаний о внешнем мире. Ниже для сравнения приведены фрагменты автоматического синтаксического анализа текстов из произведений А. Чехова («Крыжовник») (рис. 3) 2 и В. Набокова («Сестры Вэйн») (рис. 4).

Структура Чехова — параллельная, Набокова — иерархическая.

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

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

В примере (рис. 5) слова «глокая», «куздра» и др. не существуют в словаре, но успешно предсказываются их морфологические значения «прилагательное», «существительное» и т. д., которые и позволяют построить связанную синтаксическую структуру предложения, используя правила согласования и знания о линейном порядке слов. Хотя эта структура вряд ли сможет получить какую-либо смысловую интерпретацию, но, анализируя связи, можно сказать, что «глокая» является характеристикой «куздры», а «штеко», возможно, усиливает действие, выраженное глаголом «будлануть». Действительно, человек с богатым воображением сможет подробно объяснить значение и первой, и второй фразы.

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

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

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

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

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

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

Явление морфологической омонимии весьма негативно отражается на скорости работы программы синтаксического анализа. На «длинных» предложениях количество комбинаторных вариантов иногда достигает нескольких сотен, поэтому используются разного рода математические и лингвистические ухищрения, позволяющие избежать анализа всех комбинаторно возможных вариантов. Для сравнения (www.aot.ru): скорость программы морфологического анализа составляет 6000 слов в секунду, синтаксического — 300 слов в секунду.

В англоязычном мире программы синтаксического анализа давно нашли применение в системах автоматической индексации, реферирования текстов, машинного перевода и интеллектуального поиска. Примером могут служить продукты компании Inxight (www.inxight.com) и Xerox. Одной из самых известных и свободно распространяемых программ анализа английского предложения является LinkParser, разработанная сотрудниками Стэнфордского университета.

Пример анализа системы LinkParser 4 (рис 9).

Синтаксический анализ русского языка, за редким исключением, используется только в системах машинного перевода. Хотя существуют и весьма неожиданные области применения. Например, компания «ВААЛ» (www.vaal.ru) использует синтаксический модуль группы «Диалинг» (www.aot.ru) для создания психологических методик анализа предвыборных, социологических и политических текстов.

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


1 — Направление стрелки — от главного слова к зависимому.
2 — Группа «Диалинг». Разработчики синтаксического анализа: Л. Гершензон, Т. Кобзарева, Д. Панкратов, А. Сокирко, И. Ножов. Здесь и далее (если не оговорено иного) схемы сделаны на основе интерфейса программы синтаксического анализа www.aot.ru.
3 — Использован пример и интерфейс программы научной группы ФтиПЛ (Институт лингвистики) РГГУ (Т. Ю. Кобзарева, Д. Г. Лахути, И. Ножов).
4 — Использован интерфейс программы LinkParser (www.link.cs.cmu.edu/link).

Оставить комментарий


Примечание - Вы можете использовать эти HTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>