Как стать автором
Поиск
Написать публикацию
Обновить

Эмбеддинг с навесом: перегрузка лексических парсеров вложением неявных ссылок

Уровень сложностиСложный
Время на прочтение6 мин
Количество просмотров827

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

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

The chap the cat the girl owned scratched screamed.

Что происходит? The chap – какой-то «пацан» (далее – «парень»). Но что с ним? Не понятно. Тем не менее, это грамматически корректная фраза на современном английском. У неё конкретное значение, но вытащить это значение в «область осознания» не так уж просто. Проблема именно у парсера, какова бы ни была его природа. Парсер читает слова слева направо и видит какую-то странную череду артиклей и существительных. В начале предложения каждое слово открывает новую ветку разбора, но ветка – подвисает. Как показывает практика, закрыть ветку получается не сразу.

Это пример так называемого «центрального встраивания», «центрального эмбеддинга» (а ещё точнее: «center embedding» на английском). Лингвистическое явление, важность которого для парсинга языковых грамматик, в том числе людьми, определил Хомский.

Вернёмся к фразе ещё раз:

The chap the cat the girl owned scratched screamed.

Можно использовать фигурные скобки и переписать предложение так, что получится «код» на некотором условном языке «программирования». Условном, но зато очень высокого уровня.

The chap {
	the cat {
		the girl owned 
	} scratched 
} screamed.

И это уже можно разобрать. Пошагово выписываем то, что за внутренними скобками:

The chap – screamed,
the cat – scratched, 
the girl – owned.

Если, как говорится, своими словами, то так: «Парень вскричал, потому что его поцарапала кошка, принадлежавшая девушке» (или кот? nyet, «кот» – был бы tom). Owned – относится к кошке, со стороны девушки. Если переставить слова, то получим: the girl owned the cat. И эта кошка поцарапала парня. Поцарапанный принадлежащей девушке кошкой парень – вскричал: screamed.

Эмбеддинг позволяет вложить отношения одно в другое, «подвесив» каждую половину пары в ожидании глагола, а все три смысловых пары – в ожидании возникновения структуры вложенности.

Реально ли то же самое проделать на русском? Можно попробовать, но результат всегда будет лишь приблизительный, да и то, только если без запятых. Причина в том, что русский – не столь аналитический, как английский. Например:

«Парень кошкой девушке принадлежащей поцарапанный вскричал».

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

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

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

Другой вариант на русском:

«Парень, кошка, — девушка владела, — поцарапала, вскричал».

В каком-то смысле, этот вариант лучше. Естественно, на русском тут необходимы запятые, да ещё и тире, иначе предложение записано неверно. Кстати, если вам говорят, что «в английском запятые не нужны», то это не так – ещё как нужны, но не в рассматриваемом предельном случае. Впрочем, теперь и русский вариант понять можно без запятых:

«Парень кошка девушка владела поцарапала вскричал».

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

Более того, если использовать множественное число, то можно отказаться от артиклей the (для единственного – отказаться никак нельзя: получится сильно «неграмматический» вариант). Например, в подборке головоломок Quanta Magazine предлагалось раскодировать следующую, чисто рекурсивную, фразу:

Bulldogs bulldogs bulldogs fight fight fight.

Опять же, это грамматически корректное предложение на английском. Но понять, кто тут кого «борет» – непросто. (Весьма вольный перевод, в котором все «бульдоги» – это бульдоги из разных стай: «бульдоги, которые дерутся с дерущимися бульдогами, тоже нарвались на бульдогов, которые дерутся». Ну или что-то в этом роде: бульдоги – они такие.)

В разговорном языке подобные конструкции, – третьего уровня, – практически не встречаются. Тем не менее, вот более чем реальный пример «канцелярита» из документа под названием British road traffic act, 1972 (это что-то вроде дополнений к правилам дорожного движения, не важно) – вчитайтесь:

A person who, when riding a cycle, not being a motor vehicle, on a road or other public place, is unfit to ride through drink or drugs shall be guilty of an offence.

Всё понятно? Конечно. «Лицо, которое, когда едет на велосипеде, который не является транспортным средством, по дороге или по другому общедоступному пространству, не способно ехать из-за алкогольного или наркотического опьянения, должно быть признано совершившим правонарушение». Всё верно, но – уф!

Другой пример, уже на «американском» языке, но тоже хороший – между прочим, это фраза из интервью футболиста (американского), но в 1985 году:

It's ironic that I'm here, where the man the trophy I won is named after coached.

(Источник: Fred Karlsson, Multiple Center-embedding in Spoken English.)

Отличный стиль встраивания: тут дважды повторяется двухуровневый эмбеддинг! Подобную игру слов, пусть и без «местных идиоматических выражений», не перевести на русский точно. Впрочем, вот вариант: «Есть некоторая ирония в том, что и я – здесь, где человек, в честь которого назван Приз, который я выиграл, был тренером».

В ходе непростого декодирования подобных конструкций парсер вынужден «подвешивать» существительные до момента их «разрешения», например, глаголами. При этом двойное подвешивание вообще не составляет проблемы в английском и встречается: the ball the cat dropped bounced. Действительно сложные случаи почему-то начинаются с трёх подвешиваний.

Возможно, причина в том, что каждое подвешенное существительное потребляет некоторый важный ресурс парсера. Скорее всего, рассматривая примеры предложений выше, вы сами можете почувствовать это исчерпание ресурса, приводящее к «зависанию» уже самого «сознательного парсера». То есть речь тут вовсе не про программу или LLM. Что это за ресурс? Возможно, специальная структурная лексическая память, а возможно, некий «модуль» «разрешения противоречий». Предположим, данный модуль должен заранее занять некий объём доступных связей, чтобы потом собрать из них уже осмысленный, непротиворечивый вариант, присоединив понятия лексическими коннекторами одно к другому так, как нужно. Однако, при разборе подобного эмбеддинга, вместо подключений смыслов происходит «тик, тик, тик» по уровням, и каждый «тик» – это подвешенный коннектор, который требует предварительного захвата кучи связей для обеспечения своего «висения» против всего корпуса возможных смыслов.

Описанное переполнение в английском наступает раньше, и это переполнение – однонаправленное (слева направо). Вернёмся к исходному предложению: The chap the cat the girl owned scratched screamed – может, пацан-парень (the chap) тут – это тот, который принадлежит кошке и девушке (the cat the girl owned)? Мало ли – они могли его захватить. Но тогда не хватает союза (and?) и повисает царапанье (scratched). Вспомогательные элементы, типа «который», «где» и др. – они как бы есть в английском варианте, но там они «нулевые», обозначены пустыми словами, и только если рассматривать текст во всей полноте, тут же возникают в построенной структуре. Это, кроме прочего, подтверждает, что в любом тексте, – как в тексте, – никакого смысла нет: смысл образуется в представлении читающего. Конечно же, можно добавить структурных элементов, типа who, what, that и пр., в английский текст. И получится знаменитый This Is the House That Jack Built:

This is the cat
That killed the rat that ate the malt
That lay in the house that Jack built.

Схема в чём-то похожая, но парсер уже не переполняющая.

Теги:
Хабы:
+2
Комментарии11

Публикации

Ближайшие события