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

в 14:27, , рубрики: ABBYY, Блог компании ПостНаука, Компьютерная лингвистика, технологии, метки: , ,

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

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

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

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

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

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

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

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

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

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

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

История

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор: JuliaP

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js