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

 

Компьютерная лингвистика — это, по сути дела, прикладная область, то есть это набор задач, которые мы можем решить, обрабатывая языки, тексты, созданные на определенном языке, при помощи компьютера. Здесь проще всего ответить на вопрос «Зачем это нужно?», потому что в компьютерную лингвистику в большей степени чем когда-либо вкладываются именно коммерческие компании, и получается то, что сейчас называется коммерческим продуктом.

Что умеют благодаря компьютерной лингвистике компьютеры? Они умеют понимать, что за слово перед ними. Это не такой простой вопрос, потому что, казалось бы, слово и слово, но в русском языке слова умеют склоняться и в разных падежах выглядят немного по-разному. Как объяснить компьютеру, что это одно и то же слово, а не разные? Для этого есть несколько способов. Один из первых, давно понятный, наиболее трудоемкий и, пожалуй, не всегда эффективный, — это способ правил. Он заключается в том, что мы берем некоторые правила и говорим компьютеру, что в языке все устроено так, а не иначе.

Но, к сожалению, описать правилами все многообразие языка невозможно, и поэтому возникают разные ошибки. Например, если можно сказать компьютеру, что есть определенная, как говорят лингвисты, парадигма склонения некоего слова: окно, окном, окну, окнами — это все одно и то же слово, а именно «окно». А если перед нами, например, слово, оканчивающееся на , если есть некое правило, то компьютер начинает думать: а может быть, слово, оканчивающееся на , — это на самом деле повелительное наклонение от какого-то глагола, который должен оканчиваться на -ить?

И вот, например, компьютер видит слово «Саркози» — это фамилия бывшего президента Франции. Компьютер не может знать всех слов, язык устроен так, что в нем постоянно появляются и исчезают какие-то слова. И поэтому компьютер, естественным образом сверяясь с тем правилом, которое ему назначили, думает, что Саркози — это на самом деле повелительная форма от глагола «саркозить». И таких случаев очень много, хотя на самом деле тексты в основном состоят из понятных слов, все-таки это не тот способ, которым мы можем решить все проблемы, поэтому всегда остается какой-то процент ошибок.

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

Но надо сказать, что компьютерная лингвистика или близкая к ней математическая лингвистика имеет давнюю традицию. Еще в 1960-е годы решались какие-то теоретические вопросы, и во многом благодаря тому, что было сделано тогда, для русского языка сравнительно быстро, иногда даже быстрее, чем для других языков развитых стран, появились важные компьютерные инструменты. Что это еще за инструменты кроме тех, которые позволяют выяснить, что за слово перед нами?

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

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

Кроме того, в текстах иногда бывают разного рода запутанности. Например, случаи, связанные с так называемой анафорой, когда есть некоторое местоимение, например «он», и не всегда понятно, к чему оно в предыдущем тексте относится. Вот надо компьютеру объяснить, что такое «он», кто такой этот «он», кто такой этот Вася или Петя, который упоминался в предыдущем предложении. И такого рода мелкие задачи довольно характерны для современного состояния компьютерной лингвистики, когда нам нужно разрешить все неоднозначности, которые есть в языке. Тот же «лук», например. Все мы с детства знаем, что «лук» может быть оружием, а может быть продуктом питания. Что же это за вещь, которая упомянута в тексте? Компьютер видит «лук» и знает, что у него есть два значения, но помочь компьютеру определить, что за значение конкретно сейчас перед ним, — это тоже актуальная задача, которую решает компьютерная лингвистика, и часто решает даже довольно неплохо.

Компьютерно-лингвистические продукты, особенно в интернете, находятся везде. Они буквально обступают нас со всех сторон, и не всегда мы это замечаем, но они действительно постоянно нам помогают. Вот как господин Журден у Мольера не знал, что он разговаривает прозой, хотя он разговаривал прозой всю жизнь, так же, может быть, и мы не видим компьютерной лингвистики за теми простейшими фактами, которые встречаются нам в браузере, в интернете постоянно и оказываются для нас полезными. Например, те же самые пользовательские запросы, которые мы вводим в поисковых системах. Теперь они умеют нам подсказывать какие-то сопутствующие запросу слова, и это тоже отчасти заслуга компьютерной лингвистики, хотя, конечно, здесь она во многом находится в содружестве с математикой, с сomputer science, с нейронными сетями и подобного рода вещами.

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

Еще один важный аспект связан с проявленным в тексте настроением — то, что называетсяsentimental analysis. Это оценка того, сказано о чем-то хорошо или плохо. Те же самые бренды, названия банков или имена политиков — они упоминаются в положительном контексте или в отрицательном? Мы не всегда это можем понять с помощью компьютерного анализа, потому что можно сказать: «Ну хорош человек, хорош!», и для компьютера формально здесь будет все вполне себе пристойно, а благодаря интонации мы, люди, поймем, что на самом деле выражено недовольство. Но самая важная вещь, о которой нужно сказать, которая составляет некоторую моду последнего времени в компьютерной лингвистике, — это вещи, связанные с семантикой, которые были раньше нам недоступны.

Дело в том, что лингвисты очень давно поняли, что слова, появляющиеся в похожих контекстах, похожи друг на друга и по значению. Но как реализовать это соображение практически, было не совсем понятно. С развитием компьютерных технологий, с увеличением тех объемов текстов, которые у нас есть, мы все больше и больше получаем возможность анализировать эти материалы с разных точек зрения и выяснять, что, действительно, это соображение было правильным и справедливым. И если мы применим некоторые хитрые математические алгоритмы к большим объемам текстов, то мы сможем объяснить компьютеру не с помощью правил и словарей, а исходя из данных, которые он получит на вход, что два каких-то слова похожи между собой, что они являются синонимами (как говорят, квазисинонимами). Это то, что называется дистрибутивной семантикой или векторными моделями в лингвистике, в построении семантики.

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