# Крис Мэннинг рассказал о нейросетевой революции в синтаксическом анализе

Источник: https://www.youtube.com/watch?v=KVKvde-_MYc
Канал: Stanford Online
Опубликовано: 04.03.2025

---

В рамках знаменитого курса Стэнфордского университета CS224N «НЛП с глубоким обучением» профессор Крис Мэннинг представил детальный разбор синтаксического анализа зависимостей (Dependency Parsing). Лекция охватывает эволюционный путь лингвистических моделей от классических контекстно-свободных грамматик до современных нейросетевых архитектур линейного времени, способных эффективно разбирать структуру человеческой речи. Слушатели узнают, как современные модели преодолевают глобальную двусмысленность живых текстов и почему переход к плотным векторным представлениям признаков произвел настоящую революцию в компьютерной лингвистике.

## 🏗️ От структуры фраз к синтаксису зависимостей
[[JUMP:2:13]]

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

Однако существует альтернативный метод — грамматика зависимостей (dependency grammars), составляющая основу современных систем обработки естественного языка (NLP). Вместо группировки слов в абстрактные фразы данный подход выявляет непосредственные бинарные связи между главным словом (head) и его зависимыми элементами или модификаторами. Например, в командной фразе «посмотри в большой ящик на кухне у двери» центральным узлом (вершиной) становится глагол «посмотри», а все остальные компоненты образуют дерево подчинения, последовательно уточняя детали действия.

## 🕵️ Ловушки живой речи: глобальная двусмысленность человеческого языка
[[JUMP:14:49]]

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

Крис Мэннинг демонстрирует это на классических примерах из прессы:

* **Привязка предложных групп (PP attachment ambiguity):** Заголовок «Ученые считают китов из космоса» можно понять двояко. Либо ученые находятся на орбите и ведут подсчет, либо они считают гигантских «космических китов». В больших предложениях из финансовых изданий вроде Wall Street Journal, где подряд могут идти четыре предложные группы, количество вариантов прочтения растет экспоненциально в соответствии с комбинаторным рядом Каталана. Четыре предложные группы дают 13 вариантов разбора, а пять — уже 27. В отличие от языков программирования, где локальные неопределенности жестко разрешаются правилами компилятора, в человеческом языке синтаксическая неоднозначность носит глобальный характер.
* **Область действия координации (coordination scope):** Фраза «Ветеран Шаттла и давний руководитель NASA Фред Грегори» оставляет неясным, идет ли речь об одном человеке или о двух разных лицах.
* **Пунктуационная и смысловая игра:** Заголовки вроде «Doctor-- No heart, cognitive issues» или двусмысленное «Students get first hand job experience» наглядно показывают, как синтаксические связи меняют восприятие текста от профессионального до курьезного.

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

## 📜 От древнеиндийских сутр до Хомского: краткая история грамматики
[[JUMP:29:04]]

Вопреки популярному мнению, именно грамматика зависимостей, а не контекстно-свободные правила, имеет самую долгую историю в человеческой цивилизации. Первым в истории лингвистом и создателем формальной грамматики зависимостей признан Панини, живший в древней Индии (приблизительно между IV и VIII веками до нашей эры на территории современного Афганистана). Движимый религиозными мотивами, Панини разработал строгое устное описание санскрита. Поразительно, но эта сложнейшая система передавалась из поколения в поколение наизусть за сотни лет до появления первых рукописей на бересте. В первом millennium'е нашей эры аналогичные подходы на основе зависимостей активно развивали арабские языковеды.

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

Современный синтаксис зависимостей во многом опирается на труды французского лингвиста Люсьена Теньера, который закрепил стандарт направления стрелок: от главного слова к зависимому. Для удобства вычислений к структуре каждого предложения сегодня принято добавлять искусственный корневой элемент (fake root node), служащий отправной точкой анализа.

## 📊 Эпоха Treebanks: как размеченные данные спасли компьютерную лингвистику
[[JUMP:39:07]]

На заре развития систем искусственного интеллекта инженеры пытались прописывать грамматические правила вручную. Этот подход полностью провалился. Живой язык обладает бесконечным «длинным хвостом» нестандартных конструкций, сленга и креативных вольностей (от манеры речи магистра Йоды из «Звездных войн» до ироничного добавления отрицания «not» в конце фразы). Ручные правила не позволяли эффективно выбирать лучший вариант из десятков потенциальных деревьев разбора.

Решением стало создание размеченных корпусов — банков деревьев зависимостей (Treebanks), начавшееся на рубеже 1980-х и 1990-х годов. Крупнейшим международным проектом в этой области стал Universal Dependencies — кросс-лингвистическая база данных, объединяющая более 100 языков с единым формализмом разбора.

Появление Treebanks дало индустрии два мощных рычага:

1. Появилась возможность собирать статистику распределения частот модификаторов, что легло в основу вероятностных моделей и машинного обучения.
2. Лингвисты впервые получили строгую методологию оценки систем. Если в 1950–1970-х годах качество парсера доказывалось демонстрацией его работы на одном удачном предложении, то с появлением тестовых датасетов на 1000 вручную разобранных фраз оценка качества стала точной и революционной наукой.

## ⚙️ Алгоритм Transition-Based Parsing: синтаксический анализ за линейное время
[[JUMP:53:32]]

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

* **Билексическая близость (bilexical affinities):** правдоподобие пары «главное-зависимое» (например, связь «обсуждение проблем» естественна, а связь артикля с глаголом — абсурдна).
* **Расстояние зависимости (dependency distance):** большинство связей в языке реализуются на коротком расстоянии, между соседними словами. Связи редко пересекают другие глаголы или знаки препинания.
* **Валентность вершин (valency):** знание того, сколько аргументов слева и справа может иметь конкретное слово (например, глагол «разбил» требует субъекта слева и объекта справа).
* **Проективность (projectivity):** свойство, при котором стрелки зависимостей в графе не пересекаются. Пересечения (непроективные связи) возникают в вопросительных предложениях или при дистанционном уточнении, однако базовые парсеры для простоты ограничиваются только проективным разбором.

Наиболее эффективным практическим методом стал синтаксический анализ на основе переходов (transition-based parsing). Он задействует структуры данных, напоминающие работу компилятора: буфер (Buffer), содержащий слова входящей строки, и стек (Stack) для промежуточного хранения строящихся фрагментов дерева. На каждом шаге у системы есть выбор из трех базовых операций (транзиций):

1. `Shift` (сдвиг): перенос слова из вершины буфера в стек.
2. `Left-Arc` (левая дуга): установление связи, где верхний элемент стека становится главным, а второй сверху — зависимым, после чего зависимый удаляется.
3. `Right-Arc` (правая дуга): установление обратной связи, где второй элемент стека подчиняет себе верхний.

Процесс на примере фразы «I ate fish» («Я съел рыбу») выглядит следующим образом: начав со стека с техническим корнем `[ROOT]` и полным буфером, парсер делает последовательные сдвиги (`Shift`), связывает левой дугой местоимение «I» с глаголом «ate», сдвигает существительное «fish» и закрывает его правой дугой под глагол «ate». В финале глагол связывается с `ROOT`. Буфер пуст, на стеке остается только `ROOT` — разбор завершен.

Главное преимущество этого метода, предложенного шведским ученым Йоакимом Нивре в начале 2000-х, заключается в его феноменальной скорости. Поскольку на каждом шаге принимается одно детерминированное решение без глобального перебора, алгоритм работает за линейное время $O(n)$. Традиционные алгоритмы контекстно-свободных грамматик требуют кубического времени $O(n^3)$.

## 🧠 Нейросетевая революция: от разреженных признаков к Parsey McParseface
[[JUMP:1:04:39]]

Качество работы парсера оценивается по двум метрикам: UAS (Unlabeled Attachment Score — процент правильно найденных стрелок без учета их типа) и LAS (Labeled Attachment Score — точность с учетом грамматических ролей, таких как субъект или объект).

В оригинальной версии 2005 года Йоаким Нивре использовал традиционное машинное обучение (логистическую регрессию или SVM) с символьными индикаторными признаками. Инженеры сочетали слова, их части речи и контекст, что порождало миллионы разреженных, уникальных комбинаций. Программа тратила до 90% процессорного времени не на вычисление самой модели, а на громоздкое извлечение этих признаков в памяти.

Прорыв совершила аспирантка Криса Мэннинга — Данци Чэнь (Danqi Chen). В 2014 году она спроектировала первый нейросетевой transition-based парсер. Вместо миллионов разреженных индикаторов ее модель использовала компактные плотные векторы — эмбеддинги для слов, детализированных частей речи и типов связей.

Архитектура парсера Данци Чэнь работает по следующим шагам:

1. Из стека и буфера извлекаются ключевые элементы (например, первое слово в буфере и два верхних слова в стеке).
2. Их векторные представления конкатенируются в один большой входной вектор.
3. Вектор подается на скрытый слой полносвязной нейросети, где вычисляется линейное преобразование $Wx + b$ с последующей нелинейностью ReLU.
4. На выходном слое вычисляется операция $Uh + b_2$, результаты которой через Softmax превращаются в вероятности трех доступных действий (`Shift`, `Left-Arc`, `Right-Arc`).

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

В 2016 году эта технология привлекла внимание компании Google. Их инженеры углубили нейросеть, оптимизировали гиперпараметры и добавили алгоритм пучкового поиска (beam search) для рассмотрения нескольких альтернативных гипотез. Продукт был выпущен под ироничным названием Parsey McParseface и вызвал мощный резонанс в технологических медиа уровня WIRED как самый точный парсер в мире, подняв показатель UAS до рекордных 94.6%.

## 🕸️ Альтернативный путь: графовые парсеры и библиотека Stanza
[[JUMP:1:15:00]]

В завершение лекции Крис Мэннинг кратко описал второй фундаментальный нейросетевой подход — графовые парсеры (graph-based dependency parsers). В отличие от пошагового алгоритма переходов, графовый метод оценивает предложение целиком. Для каждого слова вычисляется оценка его связи со всеми остальными $n^2$ словами предложения. На основе полученной матрицы весов запускается алгоритм поиска минимального каркасного дерева (Minimum Spanning Tree, MST), гарантирующий отсутствие изолированных островков текста или замкнутых циклов.

Уже к 2017 году нейросетевые графовые парсеры превзошли по точности Parsey McParseface более чем на 1%. Именно эта более совершенная архитектура легла в основу Stanza — открытой библиотеки Stanford University для высокоточного многоязычного синтаксического анализа текстов, используемой разработчиками по всему миру.