Чем лингвистика похожа на программирование

Будучи лингвистом, я вела много интересных бесед с программистами о схожестях между лигвистикой и программированием.

Это пример простого лингвистического дерева для предложения «Интернет любит котиков» (“The internet loves cats”) (что, конечно же, ещё и правдиво!)

Чем лингвистика похожа на программирование

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

Примечание: аббревиатуры, которые я использую:

  • S – предложение 

  • NP – именная (субстантивная) группа

  • N – существительное 

  • D – детерминант (артикль, указательное местоимение, притяжательное местоимение и.т.д)

  • VP – глагольная группа

  • V – глагол

Такая древовидная структура полезна лингвистам, поскольку показывает сразу несколько фактов о предложении. Например, и «интернет», и «котики» — именные группы, но одно из них — субъект и связано с самим предложением, а другое — объект и связано с глагольной группой. Если мы поменяем позиции именных групп («Котики любят интернет»), мы получим всё ещё адекватно звучащее предложение, которое, впрочем, больше не означает то же самое.

С другой стороны, если мы поменяем местами, например, именную группу «интернет» и глагольную группу «любит котиков» («Любит котиков интернет»), тогда мы не получим нормально звучащее английское предложение, хотя оно и будет вполне подходить для стиля речи магистра Йоды. («Loves cats the internet»)

Пять копеек от переводчика

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

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

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

Если вы знакомы с языком программирования LISP, вы, вероятно, уже заметили некоторые сходства; но давайте заменим маркированные скобки XML-тегами, чтобы сделать картину совершенно ясной.

И с традиционными отступами:

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

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

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

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

 

Источник

Читайте также