Языки программирования в лингвистике

ScienceHub #06: Компьютерная лингвистика

Продолжая поездки по лабораториям ученых, мы попали в компанию ABBYY, и побеседовали с Анатолием Старостиным, руководителем группы семантического анализа и преподавателем кафедры «Компьютерная лингвистика» в МФТИ. Он рассказал о работе своей группы, направлениях компьютерной лингвистики в ABBYY и кто такие онтоинженеры.

Языки программирования в лингвистике. Смотреть фото Языки программирования в лингвистике. Смотреть картинку Языки программирования в лингвистике. Картинка про Языки программирования в лингвистике. Фото Языки программирования в лингвистике

Для начала нужно определиться с терминологией. Итак, компьютерная лингвистика – это наука, с одной стороне, о языке, а с другой стороны – о том, как работать с языком (не всегда естественным) с помощью компьютерных методов. Это наука, возникшая на стыке лингвистики и computer science. Компьютерная лингвистика под разными углами рассматривает естественный, формальный язык. В центре этой науки понятие языка, которое можно рассматривать с разных сторон. Его можно рассматривать, например, формально. Есть еще такая область, как математическая лингвистика, она возникла раньше компьютерной и представляет собой раздел математики, в котором есть свои теоремы, доказательства, формальные объекты.

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

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

Языки программирования в лингвистике. Смотреть фото Языки программирования в лингвистике. Смотреть картинку Языки программирования в лингвистике. Картинка про Языки программирования в лингвистике. Фото Языки программирования в лингвистике

Омоним как проблема

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

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

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

Языки программирования в лингвистике. Смотреть фото Языки программирования в лингвистике. Смотреть картинку Языки программирования в лингвистике. Картинка про Языки программирования в лингвистике. Фото Языки программирования в лингвистике

История

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

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

А. С. :«В какой-то момент был бум методов машинного обучения. Он случился, когда люди поняли, что с помощью методов математической статистики и специальных алгоритмов можно делать так, чтобы компьютер достаточно точно воспроизводил какое-то интеллектуальное поведение человека. Могу привести пример задачи, которая по сей день очень актуальна. Это задача нахождения в текстах именованных сущностей, когда нужно найти в тексте все упоминания персон или все упоминания организаций. Оказывается, что эту задачу можно решать аналитически (писать правила, сложные алгоритмы). А можно решать эту задачу другим образом, взяв пачку текстов, разметить в ней руками, где персоны, а где организации. После этого дать ее компьютеру, сказать: «Посмотри, в этих текстах персоны здесь, а организации – здесь». И с помощью методов научного обучения компьютер может впитать в себя это знание. И на других текстах, которые он до этого еще не видел, это повторить с довольно высокой точностью. То есть, он возьмет другой текст, которого он еще раньше не читал, и по аналогии с теми текстами угадает, где там упоминание персон, где – организаций. В этот момент он, естественно, воспользуется некоторыми признаками, которые он сам выучил. Эти признаки: большие буквы, какие-то морфологические формы. Есть разные зацепки и крючки, которые в тексте на самом деле есть. Мы читаем, понимаем, что это персона. А на самом деле персона обычно употребляется в таких-то контекстах. Мы даже этого не знаем. А компьютер с помощью метода машинного обучения может в себя впитать эти контексты и воспроизвести. Когда люди это поняли, возникло очень много приложений на базе машинного обучения. Методы машинного обучения сегодня очень существенная часть компьютерной лингвистики применительно к задачам анализа текстов с разных сторон. С помощью машинного обучения решается очень много разных задач».

Языки программирования в лингвистике. Смотреть фото Языки программирования в лингвистике. Смотреть картинку Языки программирования в лингвистике. Картинка про Языки программирования в лингвистике. Фото Языки программирования в лингвистике

Профессия «компьютерный лингвист»

Есть несколько основных профессий, использующихся для компьютерной лингвистики. Одна профессия – это программист. Другое дело, что обычно все программисты приходят работать недоученными, и их нужно доучивать. Но нужны и лингвисты, потому что они носители знаний о естественном языке. Лингвисты, попадая в зону компьютерной лингвистики, тоже должны получить новые знания, стать более структурными и формальными для работы в Computer science.

А. С.: «Компьютерная лингвистика предполагает сотрудничество лингвистов и программистов. И они идут друг другу навстречу. Программисты, которые занимаются компьютерной лингвистикой, поскольку они описывают объект, должны в нем разобраться. Любой программист, например, у нас (в ABBYY), понимает, что такое синтаксическое дерево, понимает, как слова связываются друг с другом, много знает о лингвистике, понимает, что такое род, число, падеж. И у нас в ABBYY в чистом виде делают специальные уровни абстракции. То есть, для лингвистов создают какие-то формальные языки, среды, внутри которых они работают, и которые приближены к их взгляду на мир. Они приближены к языку, естественно. И лингвисты варятся в этих средах. Но при этом все равно они хорошо знают, что здесь они сейчас напишут такое-то правило. И это правило будет подхвачено таким-то алгоритмом и так-то использовано. Такие представления у лингвистов есть. Без этого они не смогли бы работать. Подготовка лингвистов с оглядкой на компьютерную лингвистику существенно влияет и на самих лингвистов. Более или менее современные лингвисты сегодня (если говорить о людях, которые занимаются естественным языком, пишут теоретические работы об этом), давно перешли на представления о компьютерных методах».

Языки программирования в лингвистике. Смотреть фото Языки программирования в лингвистике. Смотреть картинку Языки программирования в лингвистике. Картинка про Языки программирования в лингвистике. Фото Языки программирования в лингвистике

Онтоинженеры в ABBYY

Базовый лингвистический компонент, который является фундаментом технологии Compreno, разрабатывают в ABBYY последние много лет. Это программа, которая строит семантико-синтаксические деревья.

Используя базовую прослойку, которая любое предложение на естественном языке превращает в семантико-синтаксическое дерево, можно решать более высокоуровневые задачи. В частности извлечение информации. Это разные аббревиатуры, в основном англоязычные, но они все имеют и русские аналоги. Собственно это комплекс задач вокруг анализа информации. Если на входе есть текст, то нужно его определенным образом проинтерпретировать. Этим Анатолий и занимается в своей группе в ABBYY.

А.С.: «Если говорить чуть детальней, что значит определенным образом проинтерпретировать и что-то извлечь? Задачи изучения информации всегда ставятся следующим образом. Первым делом описывается модель предметной области. То есть, мы всегда знаем, какую задачу мы решаем. И формально это фиксируем. Эта модель предметной области еще называется онтологией. Мы заранее рисуем, что нас интересуют, к примеру, персоны: организации, факты работы персон в организациях. Или нас интересуют локации: факты расположения организаций в локациях. То есть, мы рисуем концептуальную схему предметной области. И под призмой этой концептуальной схемы рассматриваем текст. То есть нам нужно из текста извлечь не всю информацию, которая есть в тексте (что было бы абсолютно неопределенно, потому что в любом тексте очень много разной информации). Нам нужно извлечь только ту информацию, которая укладывается в полочки, которые мы себе заранее нарисовали. Так ставятся задачи изучения информации».

Сами онтологии бывают очень разные, обычно они тематические. Это может быть онтология медицины, бизнеса, это может быть онтология спорта. Всегда сначала описывается онтология. Дальше начинается разработка. Это делают специальные люди, которые называются онтоинженерами.

Онтоинженеры — хороший пример симбиоза лингвиста и программиста, обычно, это выпускники математических вузов, потому что они должны хорошо концептуализировать действительность, разбивать задачи на подзадачи, понимать, где какие сущности, как они связаны. С другой стороны, они должны хорошо представлять себе, что такое семантико-синтаксические деревья, то есть иметь лингвистические знания.

А. С.: «Онтоинженеры садятся и на высокоуровневом языке пишут правила. На входе этот язык получает семантико-синтаксические деревья, а на выходе порождает концептуальный граф соответствующей модели предметной области. Простой пример, у вас в компании есть персоны, организация и факты работы. И у вас есть предложение «Вася работает в ABBYY». Программа должна извлечь персону «Вася» (то есть конкретный экземпляр концепта персоны), извлечь организацию ABBYY (конкретный экземпляр концепта организация) и понять, что эти два экземпляра связаны между собой отношением работы. Это типичный пример извлечения информации. Сложность здесь в том, что в естественном языке один и тот же концепт можно выражать очень разными способами. Это всегда огромное многообразие способов сказать одно и то же. Можно сказать: «Вася сотрудник ABBYY». Можно сказать: «Вася работает в ABBYY». Можно сказать: «Вася был уволен из ABBYY», и это все равно будет значит, что он когда-то был сотрудником. Можно сказать: «Вася работает в ABBYY на полставки». Все эти фразы надо понять и свести к общему знаменателю. Вот задача извлечения информации в модельном виде».

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

А.С. :«Если кто-то положил в структурированную базу данных, мы взять можем, потому что они структурированы. Надо только разобраться в формате, то есть в том, как они их выложили. А если это написано текстом, то, казалось бы, это может понять только человек. Оказывается, что с помощью таких методов можно написать программы, которые поймут вместо человека. Это, грубо говоря, конвертеры неструктурированной информации в структурированную. Вот что мы создаем в рамках моей группы в ABBYY».

Все то же самое, но в видео формате можно узнать здесь.

Источник

Компьютерный лингвист

Компьютерный лингвист – специалист, разрабатывающий алгоритмы распознавания звучащей речи, QA-систем, систем машинного перевода и т. д. Профессия подходит для людей, которые из всех школьных предметов выделяют иностранный и русский язык, литературу, математику и информатику. Кстати, в 2021 году центр профориентации ПрофГид разработал точный тест на профориентацию. Он сам расскажет вам, какие профессии вам подходят, даст заключение о вашем типе личности и интеллекте.

Краткое описание

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

Особенности профессии

Компьютерная лингвистика – прикладная наука, зародившаяся в США во второй половине XX века. Сегодня эта сфера активно развивается, ведь огромное количество пользователей из разных точек мира используют интернет, ПО, компьютеры, девайсы для поиска и обработки информации, аналитики, обучения – решения любых задач. Компьютерные лингвисты выполняют большой блок работ, направленных на создание:

Деятельность компьютерных лингвистов имеет важное социальное значение, ее результаты применяются в сфере artificial intelligence, машинного обучения, Big Data. Специалисты свободно работают с SQL, технологиями обработки естественного языка, разнообразными библиотеками, программированием. В это же время они безупречно знают русский язык – от семантики до диалектов.

Языки программирования в лингвистике. Смотреть фото Языки программирования в лингвистике. Смотреть картинку Языки программирования в лингвистике. Картинка про Языки программирования в лингвистике. Фото Языки программирования в лингвистике

Плюсы и минусы профессии

Плюсы

Минусы

Важные личные качества

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

Обучение на компьютерного лингвиста

Необходимо пройти подготовку в вузе, приоритетное направление – «Фундаментальная и прикладная лингвистика» (код: 45.03.03). Профильным ЕГЭ для указанной специальности является иностранный язык, дополнительно абитуриенту нужно сдавать экзамены по математике, литературе, обществознанию или информатике. Обучение можно продолжить, например, в НИУ «ВШЭ», ведь в вузе открыта магистерская программа «Компьютерная лингвистика». Нередко студенты и выпускники профильных вузов проходят дополнительную подготовку, посещая курсы, связанные с AI, ML и другими смежными областями.

Источник

Параллели между естественными языками и языками программирования

Языки программирования в лингвистике. Смотреть фото Языки программирования в лингвистике. Смотреть картинку Языки программирования в лингвистике. Картинка про Языки программирования в лингвистике. Фото Языки программирования в лингвистике

Рубрика: 5. Общее и прикладное языкознание

Дата публикации: 04.12.2016

Статья просмотрена: 1061 раз

Библиографическое описание:

Овчарова, М. В. Параллели между естественными языками и языками программирования / М. В. Овчарова, С. А. Хаустова. — Текст : непосредственный // Филологические науки в России и за рубежом : материалы IV Междунар. науч. конф. (г. Санкт-Петербург, декабрь 2016 г.). — Санкт-Петербург : Свое издательство, 2016. — С. 43-45. — URL: https://moluch.ru/conf/phil/archive/233/11553/ (дата обращения: 30.04.2021).

В настоящее время крайне насущны вопросы обучения как естественным языкам, так и языкам программирования.

Издавна параллельно существуют такие дисциплины, как информатика и лингвистика. У каждой из них свое поле деятельности, своя история, свои достижения и насущные задачи. На первый взгляд, они весьма слабо связаны друг с другом. Действительно, лингвистика изучает человеческие языки — как существующие, так и вышедшие из употребления (или мертвые). Лингвистика в большей мере является гуманитарной наукой, чем точной. Информатика (или, как теперь принято говорить, computer science) — скорее область математики. Она изучает алгоритмы и вычисления, а также все, что связано с этими понятиями. Иногда даже ее называют вычислительная математика. Если лингвистика как наука существует с древних времен, то и информатика как академическая дисциплина появилась только в конце 50-х гг. XX века. Прикладное использование информатики при решении лингвистических задач достаточно широко распространено, особенно при обработке данных. Существует даже компьютерная лингвистика, которая своей целью ставит использование математических моделей при описании естественных языков. Но нет, к примеру, «лингвистической информатики». Однако в развитие информатики большой вклад внесли именно лингвисты. [1]

Информация становится понятной, если она выражена языком, на котором говорят те, кому предназначена информация.

В процессе развития человеческого общества люди выработали большое число языков.

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

‒ ·набором используемых знаков;

‒ правилами образования из этих знаков таких языковых конструкций, как “слова”, “фразы” и “тексты” (в широком толковании этих понятий);

‒ набором синтаксических, семантических и прагматических правил использования этих языковых конструкций.

Все языки можно разделить на естественные и искусственные.

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

‒ почти все слова имеют не одно, а несколько значений;

‒ часто встречаются слова с неточным и неясным содержанием;

‒ значения отдельных слов и выражений зависят не только от них самих, но и от их окружения (контекста);

‒ распространены синонимы (разное звучание — одинаковый смысл) и омонимы (одинаковое звучание — разный смысл);

‒ ·одни и те же предметы могут иметь несколько названий;

‒ есть слова, не обозначающие никаких предметов;

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

Основными функциями естественного языка являются:

Все языки можно разделить на естественные и искусственные.

Естественными называются “обычные”, “разговорные” языки, которые складываются стихийно и в течение долгого времени. История каждого такого языка неотделима от истории народа, владеющего им.

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

Любой язык, и естественный и искусственный, обладает набором определенных правил. Они могут быть явно и строго сформулированными (формализованными), а могут допускать различные варианты их использования. [2]

Формализованный(формальный) язык — язык, характеризующийся точными правилами построения выражений и их понимания. Он строится в соответствии с четкими правилами, обеспечивая непротиворечивое, точное и компактное отображение свойств и отношений изучаемой предметной области (моделируемых объектов).

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

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

Формальные языки часто конструируются на базе языка математики. Веком бурного развития различных формальных языков можно считать XX век.

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

Языков программирования и их диалектов (разновидностей) насчитывается несколько тысяч.

По некоторым данным, в мире насчитывается около 7000 естественных живых языков и одновременно около 8500 языков программирования. Конечно, эти цифры достаточно приблизительны.Несмотря на большие различия, естественные языки имеютнекоторые общие черты. Они называются универсалиями. Различаютфонологические, грамматические и некоторые другие универсалии.

Как невозможно изучить иностранный язык, не изучив фразеологизмы, так невозможно изучить и язык программирования, не узнав часто употребляемые идиомы. И вот что интересно. Как в разных естественных языках встречается много идиом с близким смыслом, так и в разных языках программирования встречаются одни и те же конструкции (быть может, с разным синтаксисом, но с близким содержанием). [3]

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

Исходный текст проходит ряд этапов обработки: первичный анализ (графематический анализ, морфологический анализ, фрагментация текста), затем лексический, синтаксический, семантический анализ (локальный и глобальный), после этого идет межъязыковый переход, и в обратном порядке этапы синтеза: семантический, синтаксический, лексический, морфологический.

При этом может происходить возврат на предыдущий этап, например, при обнаружении синтаксической неоднозначности, она может разрешиться на этапе семантического анализа. При всех усилиях, затрачиваемых на создание таких систем, их работа оставляет желать лучшего. Какую же параллель можно увидеть в информатике? Конечно же, машинный перевод с одного языка программирования на другой. [6]

Прежде всего, это перевод на машинный язык. Такой переводчик так и называется — транслятор. Однако обратный перевод с машинного на язык программирования очень затруднен. Фактически он работает только для языков самого низкого уровня — ассемблеров. Поэтому он и называется дизассемблер. Но и в этом случае зачастую перевод далек от совершенства. Хотя команды ассемблера однозначно переводятся в машинные команды, но возникает проблема разграничения области данных и области инструкций, т. е. проблема контекста.

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

Еще сложнее картина возникает при попытке перевода на язык более высокого уровня. Задача становится настолько сложной, что такие переводчики даже не создаются — цель не оправдывает средств. [5]

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

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

Похожие статьи

Обзор систем машинного перевода | Статья в журнале.

язык, язык программирования, естественный язык, долгое время, машинный перевод, семантический анализ, история народа, информатик, слово.

Семантический анализ текстов. Основные положения

Семантика в задачах автоматической обработки данных

язык, язык программирования, естественный язык, долгое время, машинный перевод, семантический анализ, история народа, информатик, слово. Метапредметные связи на уроках информатики.

Методология реализации естественно-языкового.

язык, язык программирования, естественный язык, долгое время, машинный перевод, семантический анализ, история народа, информатик, слово.

Машинный перевод: история, классификация, методы

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

Основные современные языки программирования

Ключевые слова: язык, С++, программирование, Java, ЭВМ, Python, код, синтаксис.

Использование современных языков программирования для. В то же время стандартная библиотека

То есть, фактически, код приложения не компилируется в машинный код, но.

Проблемы выбора языка программирования в школьном курсе.

Некоторые считают, что не так важно, какой язык программирования взять: на уроках информатики нужно учить не языку программирования, а

Но нет смысла обучать всему «от и до» на языке Pascal и его библиотеки. Лучше это время потратить на изучение языков и.

Трудности перевода реалий русского языка на персидский язык

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

Основные термины (генерируются автоматически): русский язык, реалия, словарь, слово, язык, персидский язык, перевод реалий, переводчик.

Проблемы и преимущества автоматизированного и машинного.

Машинный перевод: история, классификация, методы. Ключевые слова: компьютерная лингвистика, машинный перевод, обработка естественного языка, автоматическое понимание текстов, статистический перевод, перевод «по правилам».

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *