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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

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

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

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

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

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

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

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

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

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

  • V – глагол

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

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

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

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

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

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

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

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

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

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

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

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

Источник: https://habr.com/ru/post/726176/


Интересные статьи

Интересные статьи

Архитектура x86 лежит в сердце процессоров, на которых уже более двух десятилетий работают наши домашние компьютеры и удаленные серверы. Умение читать и писать код на низкоуровневом языке ассемблера...
Нередко при работе с Bitrix24 REST API возникает необходимость быстро получить содержимое определенных полей всех элементов какого-то списка (например, лидов). Традиционн...
Ваш сайт работает на 1С-Битрикс? Каждому клиенту вы даёте собственную скидку или назначаете персональную цену на товар? Со временем в вашей 1С сложилась непростая логика ценообразования и формирования...
Привет, Хабр! Сегодня мы начнём говорить на очень важную тему — функциональное программирование. Значение ФП в современной веб-разработке трудно переоценить. Архитектура любого крупного совре...
Приветствую вас (лично вас, а не всех кто это читает)! Сегодня мы: Создадим приложение (навык) Алисы с использованием нового (октябрь 2019) сервиса Yandex Cloud Functions. Настроим н...