Компьютер не понимает человеческий язык
Искусственный интеллект активно проникает в нашу повседневность. При этом он становится всё более умным, а сферы его применения — всё более широкими. Сегодня от него может зависеть даже человеческая жизнь. Но как определить, машины действительно научились нас понимать — или же ловко имитировать понимание? Журнал Quanta — о том, как ученые ищут ответ на этот далеко не праздный вопрос.
IBM Watson — суперкомпьютер, победивший лучших игроков американской телевикторины Jeopardy. В посвященном ему рекламном ролике 2010 года утверждалось, что «Watson понимает естественный язык со всей его сложностью и неоднозначностью». Несмотря на это, компьютер не смог «произвести революцию в медицине с помощью искусственно интеллекта». Стало очевидно: если на первый взгляд кажется, что компьютер понимает язык, не факт, что так оно и есть.
Понимание обыденного языка — одна из главных задач ИИ. Изначально ученые пытались вручную запрограммировать машины для понимания новостей, литературы и других текстов. Как показал пример Watson, это был тупик: все правила, необходимые для понимания текста, записать невозможно. Поэтому был разработан иной поход и теперь вместо программирования конкретных правил ученые позволяют компьютерам учиться самостоятельно, обрабатывая огромное количество текстов и угадывая слова. Так создается языковая модель. С помощью нейросетей вроде OpenAI GPT-3 подобные модели способны генерировать на удивление убедительные тексты, демонстрировать продвинутое языковое мышление и даже писать стихи.
Но удалось ли GPT-3, обученной на тысячах сайтов, книг и энциклопедий, превзойти Watson? Понимает ли модель генерируемый ей язык? Инженеры пока не могут прийти к однозначному выводу. Раньше ответить на этот вопрос пытались философы, однако за последние десять лет ИИ покинул стены лабораторий и вышел в реальный мир, где недостаток понимания может иметь катастрофические последствия.
Например, оказалось, что IBM Watson предлагал «многочисленные неправильные и небезопасные методы лечения», а гугл-переводчик совершает существенные ошибки в переводе медицинских рекомендаций для неанглоязычных пациентов.
Как определить, что машина понимает? В 1950 году Алан Тьюринг, один из отцов современной кибернетики, попытался ответить на этот вопрос и создал свою знаменитую игру, известную сегодня как «тест Тьюринга». В рамках этого теста человек взаимодействует с компьютером и с другим человеком: отвечая на вопросы, он должен определить, с кем разговаривает. Согласно Тьюрингу, если человек не в состоянии отличить компьютер от человека, можно сделать вывод, что компьютер способен мыслить, а значит — и понимать.
К сожалению, Тьюринг недооценил способность компьютера обманывать. Даже примитивным чатботам, вроде созданной Йозефом Вайценбаумом в 1966 году программы Элиза, не раз удавалось убедить людей, что те имеют дело с одушевленным существом.
В статье 2012 года три специалиста в области информатики, Эктор Левеск, Эрнест Дэвис и Леора Моргенштерн, предложили более объективный тест, который они назвали «схемой Винограда». Позже этот тест был признан исследователями ИИ как лучший, хоть и не совершенный, способ оценки способности компьютера к пониманию. Схема Винограда, названная в честь исследователя Терри Винограда, состоит из пар сопровождающихся вопросами предложений, которые отличаются друг от друга всего одним словом.
Вот несколько примеров:
Предложение 1: Я наливал воду из бутылки в чашку, пока она не стала полной.
Вопрос: Что было полным, бутылка или чашка?Предложение 2: Я наливал воду из бутылки в чашку, пока она не стала пустой.
Вопрос: Что стало пустым, бутылка или чашка?Предложение 1: Дядя по-прежнему играет в теннис лучше Джо, несмотря на то, что он на тридцать лет старше.
Вопрос: Кто старше, Джо или его дядя?Предложение 2: Дядя по-прежнему играет в теннис лучше Джо, несмотря на то, что он на тридцать лет младше.
Вопрос: Кто младше, Джо или его дядя?
Авторы разработали несколько сотен схем, которые, по их словам, являются «гугл-стойкими». Это значит, что компьютер не может подобрать ответы на тестовые вопросы с помощью запросов в гугле.
Не совсем. Несмотря на все усилия ученых, схемы Винограда не являются гугл-стойкими. Как и многие другие тесты на понимание языка, они содержат лазейки, позволяющие нейросетям давать правильные ответы, не понимая их смысла. Взять, к примеру следующую пару предложений: «спортивный автомобиль обогнал почтовый грузовик, так как он ехал быстрее» и «спортивный автомобиль обогнал почтовый грузовик, так как он ехал медленнее».
Языковая модель, обученная на большом корпусе англоязычных текстов, знает о взаимосвязи между словами «спортивный автомобиль» и «быстрый» с одной стороны, и «почтовый грузовик» и «медленный» с другой, а следовательно, может дать правильный ответ на основании данной взаимосвязи. Схемы Винограда содержат множество подобных лазеек.
Затем исследователи с помощью простого алгоритма устранили предложения, содержащие статистические лазейки. Как и ожидалось, оставшиеся предложения оказались для компьютеров намного труднее, чем оригинальные схемы Винограда. Люди, как и раньше, отлично справлялись с ответами на вопросы, в то время как ИИ, который до этого показывал хорошие результаты на оригинальных схемах Винограда, теперь справлялся куда хуже. В определенном смысле испытание на гугл-стойкость лишь закрепило схемы Винограда как самый адекватный способ оценки здравого смысла.
Улучшение результатов достигается благодаря увеличению языковых моделей, а также благодаря росту объемов данных для их обучения.
Удалось ли более крупным нейросетям достичь понимания наравне с человеком? Опять же, не совсем. Говоря о новых результатах, нужно сделать несколько оговорок. Во-первых, поскольку новые предложения были придуманы пользователями Amazon Mechanical Turk, их качество разнится. Кроме того, возможно, что алгоритм, использовавшийся для отсеивания не гугл-стойких предложений, был слишком простым и не заметил всех лазеек.
Какой вывод можно сделать из всей этой истории? Очевидно, на основании результатов тестов до сих пор трудно определить, понимают ли ИИ обрабатываемый им текст или нет. Нейросети в самом деле благодаря лазейкам часто добиваются высоких результатов по схемам Винограда и другим популярным способам оценки общего понимания языка.
На мой взгляд, суть проблемы в том, что понимание языка невозможно без понимания мира, а компьютер, который имеет дело только с языком, пониманием мира не обладает. Что нужно для того, чтобы понять предложение «спортивный автомобиль обогнал почтовый грузовик, так как он ехал медленнее»? Нужно знать, что такое спортивный автомобиль и что такое почтовый грузовик, что машины могут обгонять друг друга и что машины — это объекты материального мира, которыми управляют люди, у которых есть собственные цели.
Для нас, людей, всё это самоочевидно. Но не для компьютеров. Эту самоочевидность нельзя конвертировать в текст, чтобы затем обучить на нем модель. Некоторые ученые-когнитивисты утверждают, что люди используют врожденные базовые знания о пространстве, времени и других ключевых характеристиках мира в процессе изучения и понимания языка.
Если мы хотим, чтобы компьютеры овладели человеческим языком, мы сначала должны запрограммировать в них базовые знания, которыми человек обладает от рождения. Соответственно, оценивая уровень понимания компьютеров, мы прежде всего должны оценивать понимание этих принципов.
Обучение компьютеров «детским» знаниям выглядит огромным шагом назад в свете достижений таких ИИ-систем, как Watson и GPT-3. Но если наша цель — достичь подлинного понимания, вполне может быть, что это единственный путь.
Парадокс компьютерных наук заключается в том, что многие задачи, которые людям не под силу, легко выполняются компьютерными программами. При этом задачи, которые человек может выполнять безо всяких усилий, остаются сложны для компьютеров. Мы умеем разрабатывать шахматные программы, которые побеждают ведущих гроссмейстеров на Земле. Однако создать такую программу, которая сможет распознать объекты на фотографии или понять предложение даже на уровне, доступном ребенку, мы не можем.
Обучение компьютера пониманию языка остается одной из сложнейших задач искусственного интеллекта. Задача поисковой машины — найти именно то, что вам нужно. Важнейшую роль при этом играет понимание языка, в частности — синонимов.
Итак, что такое синоним? Приведем простейший пример. Слова «фото» и «фотография» означают одно и то же. Если вы ищете фразу [проявка фото в кофе], то Google должен понимать, что даже если на странице употребляется слово «фотография», а не «фото», эта страница все равно является результатом поиска. Хотя любой ребенок понимает, что слова «фотография» и «фото» — синонимы, научить этому компьютерную программу крайне трудно. Именно поэтому мы по праву гордимся системой подбора синонимов, разработанной в Google.
Наша система подбора синонимов является результатом более чем пятилетней работы команды качества поиска Google. Мы постоянно контролируем качество работы системы, но недавно мы отдельно проанализировали влияние подбора синонимов на результаты поиска. Возможно, вы обычно и не замечаете, что при поиске используются синонимы, — все это происходит в недрах поисковой машины. Однако, как показывают проделанные нами измерения, синонимы влияют на выполнение 70% поисковых запросов, осуществляемых на сотне языков, поддерживаемых Google. Мы выбрали такие запросы и проанализировали, насколько точно были подобраны синонимы. Результаты нас порадовали. На каждые 50 запросов, для которых использование синонимов существенно улучшало результаты поиска, только в одном случае наблюдался отрицательный эффект.
Пример плохого подбора синонима — поиск [проявка фото в кофе] вы видите, что в описании первого результата слово «фотографии» выделено жирным:
Заметим, что поскольку использование синонимов зависит от многих факторов, — в частности от наличия других слов в вашем запросе, — вы не обязательно увидите выделенное слово «фотографии» в поиске, содержащем слово «фото». Целесообразность выделения синонимов определяется нашими поисковыми алгоритмами.
Для обнаружения синонимов мы используем большое количество методик, и мы писали об этом в нашем блоге. Наши системы анализируют петабайты документов, доступных в сети, а также данные по истории поиска. На основании этой информации формируется тонкое понимание смысла слов в различных контекстах. В приведенном выше примере «фото» и «фотографии» — это очевидные синонимы. Но синонимы не всегда являются взаимозаменяемыми. Например, несмотря на то что «блюдо» это одно из синонимов слова «тарелка», поисковая система должна понимать что «летающая тарелка» является вполне осмысленным запросом, а сочетание «летающее блюдо» более напоминает о сцене в ресторане, чем об НЛО.
Еще один пример — это аббревиатура «ГТО». Любой автомобилист знает что это сокращение означает: «Государственный технический осмотр транспортных средств». В случае запроса [правила прохождения гто] Google выделит в результатах поиска фразу «Государственный технический осмотр». Это показывает, что в данном случае «Государственный технический осмотр» означает то же самое, что и ГТО. Есть ли еще значения у этой аббревиатуры? Многие вспомнят, что ГТО означает еще «Готов к труду и обороне» — программа физкультурной подготовки, существовавшая в нашей стране с 1931 по 1991 год. Это словосочетание будет выделено в результатах, содержащих виды упражнений и нормативы комплекса ГТО. Например, запрос [гто СССР] вернет документы рассказывающие об истории этой программы, а также информацию о нормативах и упражнениях входящих в комплекс ГТО. Помимо этого, ГТО может обозначать «гаражно-техническое объединение», для любого знатока аниме, ГТО это сериал Great Teacher Onizuka.
Ниже на скриншотах показаны результаты запросов с различным значением аббревиатуры ГТО:
Кстати, даже такие очевидные варианты слова, как «фотография» и «фотографии» (единственное и множественное число), обычным компьютером будут восприниматься как разные условия поиска. Поэтому мы также включаем такие вариации в нашу систему подбора синонимов. Слова «фотография» и «фотографии» — это однокоренные слова, формы одного и того же слова. Система, понимающая, что «фотография» и «фото» — это одно и то же, должна понимать также, что «фотография» и «фотографии» — формы одного и того же слова. Это совсем очевидно для человека, но компьютеру не так-то просто это понять. Еще один пример — слова «животное» и «живот», которые имеют одинаковый корень и сходную этимологию, но означают совсем разные вещи. Другой пример — это использование слов «право» и «права». «Право» — это не только регулятор общественных отношений или совокупность законодательных норм, но и антоним слова «лево». А в множественном числе слово «права» означают и желанный документ, разрешающий управление автомобилем. Соответственно, запросы [получить право] и [получить права] имеют совсем разный смысл. Поиск Google достаточно умен для того, чтобы отличить одно выражение от другого, т.е. он знает, что «право» и «права» — это опасные синонимы, и их использование может привести к искажению смысла. Именно такие тонкие различия между словами, только кажущимися родственными, и затрудняют понимание правильного употребления синонимов.
Вот еще несколько примеров использования синонимов, которые, по нашему мнению, будут для вас интересны:
[концерты в спб 2010] «Санкт Петербург» выделен жирным как синоним «спб»
[пользователи жж] жирным выделены «Живой Журнал», а также английское название ресурса «LiveJournal»
[клуб квн] «Клуб Веселых и Находчивых» выделен жирным как синоним сокращения «квн»
[институт маи] «маи» расшифровывается как «Московский авиационный институт»
[академия маи] ну, а в этом случае мы считаем что «маи» это «Международная академия информатизации»
Предполагалось, что когда компьютер научится понимать человеческую речь, мы быстро сможем создать искусственный интеллект. Но точность систем распознавания речи достигла своего пика в 1999 году и с тех пор застыла на месте. Академические тесты 2006 года констатируют факт: системы общего профиля так и не преодолели уровень 80%, тогда как у человека этот показатель составляет 96-98%.
Профессор Роберт Фортнер из Media Research Institute считает, что создатели систем распознавания речи окончательно зашли в тупик. Программисты сделали всё что смогли, и у них не получилось. Спустя несколько десятилетий они поняли, что человеческая речь — не просто набор звуков. Акустический сигнал не несёт достаточно информации для распознавания текста.
Сложность задачи можно себе представить. По некоторым оценкам, количество возможных предложений в человеческом языке составляет 10 570 . В документированных источниках зафиксирована лишь малая их часть, так что систему невозможно научить, даже если «скормить» ей все тексты, созданные людьми.
У многих слов в языке — сотни или тысячи значений. Выбор конкретного значения зависит от контекста, то есть от окружающих слов. В устной речи он ещё зависит от выражения лица или от интонации.
Наш мозг способен генерировать текст совершенно произвольно, используя интуитивно понятные правила функциональной грамматики и усвоенную с возрастом семантическую парадигму каждого слова. Эти правила описывают, какие слова могут сочетаться друг с другом и каким образом (через какие функциональные элементы). Значение каждого слова зависит от значения предыдущего слова, а в сложных случаях наш мозг распознаёт речь лишь по обрывкам фраз, зная контекст.
Базовые правила функциональной грамматики понятны каждому человеку, но их никак не удаётся формализовать, чтобы стало понятно и компьютеру. А без этого никак. Когда компьютер пытается распознать ранее не встречавшиеся ему предложения, он неизбежно будет допускать ошибки в распознавании, если у него нет грамматического парсера и словаря с семантическими парадигмами, встроенного в человеческий мозг.
Например, российские лингвисты когда-то попытались составить семантическую парадигму одного простого предлога русского языка (кажется, ПРИ). Они дошли до нескольких сотен значений, каждое из которых допускает свой набор последующих элементов. И это был явно не полный список.
По грамматике предлогов проводятся целые научные конференции (некоторые учёные всю жизнь изучают предлог ПО и не могут до конца раскрыть его тайны). А ведь подобное описание требуется для каждой морфемы человеческого языка, включая приставки и суффиксы. Только после этого можно будет приступить к программированию компьютерных систем распознавания речи. По силам ли человечеству эта задача? Ведь нужно учесть ещё, что парадигма каждого элемента человеческой речи постоянно меняется, ведь язык живёт своей жизнью и всё время эволюционирует. Как компьютерная система сможет самообучаться?
Самый поверхностный анализ опубликованных текстов в интернете компанией Google позволил выявить триллион объектов. Это лишь мизерная часть морфем, из которых состоит наша речь. Google выложил 24-гигабайтный архив с текстами во всеобщий доступ и прекратил дальнейшие публикации по этой теме.
Проект MindNet по созданию «универсального парсера» компания Microsoft начала в 1991 году. Они пытались построить универсальную карту всех возможных взаимосвязей между словами. На проект потратили много сил и финансовых средств, но были вынуждены практически прекратить исследования в 2005 году.
Можно поставить точку и начинать всё сначала, только другим способом (гораздо более сложным). Язык необходимо формализовать в рамках единой функциональной грамматики, универсальной для всех языков, и без серьёзной помощи лингвистов тут не обойтись, если задача вообще решаема.
Совсем недавно на Хабре появился пост, в котором автор уверенно заявляет о том, что компьютер никогда не сможет понимать текст так, как его понимает человек. В доказательство он приводит ряд непосильных для машины задач, делая упор на отсутствие эффективных алгоритмов и невозможность моделирования полноценной системы, в которой были бы учтены все возможные варианты построения текста. Однако действительно ли всё так плохо? Правда ли, что для решения подобных задач нужны невероятные вычислительные мощности? И в каком вообще состоянии находится область обработки текстов на естественных языках?
А что вообще значит «понимать»?
Первое, что меня смутило, — это сам вопрос — сможет ли компьютер когда-нибудь понимать текст так, как его понимает человек. А что, собственно, значит «понимать как человек»? Или даже не так, что вообще значит «понимать»? В книге Data Mining: Practical Machine Learning Tools and Techniques авторы задаются схожим вопросом — что значит «быть обученным». Допустим, что мы применили к «интерпретатору» некоторую технику обучения. Как проверить, обучился он или нет? Если студент ходил на все лекции по предмету, это ещё не значит, что он его выучил и понял. Чтобы проверить это, вводят экзамены, где студента просят решить некоторые задачи по теме предмета. То же самое и с компьютером — узнать обучился ли он (понял ли он текст) можно только проверив, как он решает конкретные прикладные задачи — переводит текст, выделяет факты, выдаёт конкретное значение многозначного слова и т.д. В таком ракурсе понятие смысла вообще теряет первостепенное значение — смыслом можно считать просто какое-то состояние интерпретатора, в соответствии с которым он обрабатывает текст.
Многозначные слова
Далее автор оригинальной статьи приводит пример перевода предложения «Первым Николай распечатал письмо от Сони», указывая на несколько возможных вариантов перевода слова «распечатал» с совершенно разными значениями. Человек может легко понять, о чём идёт речь, но может ли машина?
Для того, чтобы ответить на этот вопрос, рассмотрим, как сам человек принимает решение о том, в каком смысле употреблено данное слово. Думаю, все согласятся, что в первую очередь при решении такого рода задач ориентируемся на контекст. Контекст может быть представлен явно — в виде предложений, обрамляющих данное, либо неявно — в виде совокупности знаний о данном предложении (в нашем случае — знание о том, что предложение взято из романа «Война и Мир», знание о времени, когда происходит сюжет, и знание о состоянии прогресса на тот момент).
Для начала рассмотрим первый вариант — использование контекстных предложений. Предположим, что у нас есть две пары предложений: «Первым Николай распечатал письмо от Сони. При свете лучины читать его было сложно» и «Первым Николай распечатал письмо от Сони. Принтер барахлил, поэтому местами были понятны не все символы». Во втором предложении каждой пары присутствуют ключевые слова, которые позволяют нам однозначно идентифицировать смысл слова «распечатал» в предыдущем предложени — в первом случае это «лучина», во втором — «принтер». Вопрос: что мешает компьютеру проделать тот же манёвр, чтобы узнать настоящий смысл слова под вопросом? Да ничего. На самом деле системы по определению значения слова уже давно используются на практике. Так, например, индекс tf-idf широко используется в поисковых движках при вычислении релевантности. Как правило, собирается информация о совместной встречаемости слов («распечатывать» и «лучина», «распечатывать» и «принтер») и на её основе выбирается более релевантный документ или более точный вариант перевода слова.
С неявным контекстом, то есть с набором знаний о обстоятельствах, всё несколько сложней. Простым сбором статистики тут не обойдёшься — нужны именно знания. А что вообще такое знания, как их можно представить? Одним из способов представления являются онтологии. В простейшем случае онтология — это набор фактов вида , например, . Построение самих онтологий даже для конкретной предметной области — это дело, мягко говоря, немаленькое. Немаленькое, но не невыполнимое. Есть ряд инициатив, таких как Linked Data, в рамках которых люди собирают с миру по нитке и строят паутину взаимосвязанных понятий. Более того, существует ряд вполне успешных наработок по автоматическому извлечению фактов из текста. Т.е. из предложения «Первым Николай распечатал письмо от Сони» можно автоматически вывести факты , и т.д. В качестве open-source примера таких разработок может служить Stanford Parser, который довольно неплохо понимает структуру предложения на английском языке. А некоторые компании, такие как InventionMachine (ссылку вставлять не буду, ибо и так реклама) вообще строят свой бизнес на системах извлечения фактов.
Однако я отвлёкся. Итак, будем считать, что у нас уже есть более или менее полная онтология для нашей предметной области. Для простоты также предположим, что собрана она людьми, поэтому слово «распечатать» в ней представлено несколько раз — по одному разу на каждый смысл этого слова. В смысле «открыть» это слово может образовывать факты . В смысле «пустить на печать» оно может быть использовано в фактах . Наконец, предположим, что в нашей онтологии уже присутствуют знания об обстоятельствах. В таком случае задача определения правильного смысла слова сводится к отображению всех фактов предлжения на онтологию для всех возможных значений слова «распечатать» и выбору того значения, в окружении которого больше всего известных фактов (как фактов об обстоятельствах, так и фактов, извлечённых непосредственно из предложений).
Перед тем, как идти дальше, сделаю несколько выводов:
1. Статистика является мощным инструментом анализа текста.
2. Извлечение знаний (фактов) из текста является реальностью.
3. Создание базы знаний о предметной области является сложной, но выполнимой задачей.
Другие задачи
Далее автор статьи приводит, на мой взгляд довольно сумбурно, ряд конкретных задач, которые компьютеру якобы абсолютно неподвластны. Спорить не буду, некоторые задачи действительно довольно сложны. Сложны, но не неподвластны. Ниже в произвольном порядке будут приведены упомянутые задачи с возможными вариантами их решения, но сначала ещё несколько слов о самой дисциплине обработки естественных языков (natural language processing).
С точки зрения NLP, текст представляет из себя набор признаков. Этими признаками могут быть слова (корни и формы слов, падеж, регистр букв, часть речи), знаки препинания (особенно те, что ставятся в конце), смайлы, предложения целиком. На основании этих признаков могут строиться и более сложные — n-граммы (последовательности слов), оценочные группы (appraisal groups, те же последовательсности, но с указанием оценки, например, «very good»), слова из заданных словарей. И даже более сложные — аллитерация, антонимия и синонимия, омофоны и т.д. Всё это может быть использовано против вас в суде в качестве индикаторов при решении тех или иных задач обработки текста.
Итак, сами задачи.
Определение настроения текста
Вообще автор предложил не совсем понятное деление — текст весёлый и текст грустный. В голову приходят три варианта классификации:
1. Текст оптимистический/пессимистический.
2. Положительный/отрицательный (например, отзыв).
3. Юмористический/серьёзный.
Так или иначе, это задача классификации, а значит для неё могут быть использованы стандартные алгоритмы, такие как Naïve Bayes или SVM. Вопрос только в том, какие именно признаки брать из текста, чтобы добиться максимальных результатов классификации.
Классификацией текста на оптимистический и пессимистический никогда не занимался, но бьюсь об заклад, что в качестве признаков достаточно использовать корни всех слов. Результаты можно ещё улучшить, если составить словари для каждого из классов. Например, в «пессимистический» словарь могут войти такие слова как «грустно», «одиночество», «печалька» и т.д., а в «оптимистический» — «круто», «йоу», «весело».
Классификация отзывов и прочего user generated content, показывающего отношение говорящего к некоторому объекту (к новой фотокамере, к действиям правительства, к компании Microsoft) в последнее время получила настолько широкое распространение, что даже была выделена в отдельную область — извлечение мнений (opinion mining, a.k.a. sentiment analysis) ([1], [2]). Есть много подходов к извлечению мнений. Для текстов, состоящих хотя бы из 5-6 предложений хорошо себя показали оценочные группы [3] (с результатом до 90.2% правильно определённых мнений). Для более мелких текстов (например, твитов) приходиться использовать другие признаки — слова из предопределённых словарей, регистр букв, смайлы и т.д.
Задача определения юмористического текста не так популярна, но и по ней существуют определённые наработки ([4]). Как правило, для определения юмора используется антонимия, аллитерация, а также «взрослый сленг».
Стоит также заметить, что не только юмор, но и сарказм с иронией компьютер также уже умеет вполне успешно распознавать. Ну, в любом случае лучше, чем Шелдон Купер.
Идеология автора
А также его компетентность, подход к работе, отношения к семье и скрытые комплексы. Всё, что отражено в тексте, может быть найдено. Даже то, что не видит среднестатистический человек. Достаточно выделить подходящие признаки и правильно обучить классификатор. Да, возможно, результаты будут не очень точны, но, например, Википедия вообще утверждает, что и среди людей подобные вещи способны правильно определить лишь 70%, а 70% — это ниже среднего для таких классификаторов.
Метафоры, поговорки и умолчания
Все эти задачи требуют дополнительной информации. Если у вас есть готовая онтология для предметной области, найти объекты со схожими свойствами не составит труда — для этого вводится некая мера близости, расчитываемая на основании статистических данных, и ищется наиболее «релевантный» объект.
Автоматический перевод
Как я уже указал выше, проблема с определением конкретного значения многозначного слова при автоматическом переводе может быть решена с помощью статистического анализа. Поэтому единственной реальной проблемой становится генерация грамотно сформированного текста. Здесь есть две подзадачи:
1. Правильное определение связей между словами.
2. Правильное отображение найденных конструкций в новом языке.
Задача определения связей между словами по сути является всё той же задачей классификации, где классами являются все возможные отношения между словами. Такие библиотеки как Stanford Parser используют вероятностные классификаторы и теорию нечётких множеств, чтобы определить наиболее «правильный» вариант связей между словами.
А вот с отображением найденных конструкций в новый язык действительно существуют проблемы. Но проблемы эти в большей степени не компьютерного, а как раз переводческого характера. Профессиональные переводчики никогда не указывают языки, которые знают — вместо этого они указывают направления перевода. Например, переводчик может уметь переводить с итальянского на русский, но не с русского на итальянский. То есть, конечно, кое-как сделать обратный перевод они смогут, но далеко неидеально. Проблема состоит как раз в отображении конструкций одного языка в другой, в котором прямого аналога может тупо не быть. Что делать в таком случае — непонятно. Поэтому не только компьютерная, но и обычная теоретическая лингвистика продолжает развиваться, выводя всё новые и новые правила. В то же время с точки зрения компьютерной реализации нет ничего сложного в том, чтобы заложить созданные правила в программу автоматического перевода.
Большая проблема
Итак, компьютеры уже умеют выделять факты из текста, понимать настроение автора, распознавать сарказм и многое другое. Так в чём же проблема, почему до сих пор не существует универсальной «читалки», которая могла бы взять текст и решить все задачи, которые может выполнить человек? За несколько лет практики в NLP я пришёл к выводу, что системы интеллектуальной обработки текста сложно комбинировать. Создание систем из нескольких компонент не только вызывает комбинаторных рост связей между ними, но и требует учёта всех зависимостей вместе с их вероятностными показателями. Например, для извлечения мнений можно использовать машинное обучение или созданные вручную правила. Однако если совместить оба этих подхода, встаёт вопрос о том, в какой степени каждый из них должен влиять на результат: от чего это будет зависеть, какова природа этих зависимостей, как вычислить численные параметры и т.д. Область обработки естественных языков всё ещё находится в своём подростковом возрасте, поэтому пока человечество способно создавать только системы для решения локальных задач. Что получится, когда все локальные задачи будут решены, и хватит ли у человека способностей (памяти, скокрости мышления), чтобы скомбинировать всё наработанное, предсказать сложно.
Попытки научить компьютер понимать человеческий язык делаются уже довольно давно. Среди специалистов, занятых этой проблемой, в последнее время все труднее встретить «безнадежных оптимистов». Еще меньше их среди пользователей тех программ, которые должны обеспечивать взаимопонимание. Существующие компьютерные трансляторы, увы, по-настоящему полезны разве что для перевода сравнительно небольших и однозначных фраз. Поисковые машины частенько выдают вовсе не то, что мы хотим. Даже досконально изучив язык запросов, все равно приходится пробираться через информационные дебри, отбрасывая с дороги нерелевантные результаты. А «цунами» спама? По-прежнему, скрипя зубами, тратим время на удаление мусора из почтового ящика. Когда-то «черные списки» адресов могли обеспечить сносную защиту. Теперь, похоже, настало время, когда компьютеру необходимо поручать не только анализ цифр, но и «чтение» электронной почты.
Семантические методы фильтрации
Все мы имели возможность наблюдать «мутацию» рекламных писем: в них начали появляться ошибки — пропущенные или лишние буквы и знаки препинания, замысловатые символы. Виной тому, как вы понимаете, отнюдь не безграмотность спаммеров. Я бы назвал это самым настоящим дарвиновским естественным отбором: спам эволюционировал, дабы выжить в условиях контентной фильтрации и все равно оказаться в наших почтовых ящиках.
Этот факт, безусловно, не остался незамеченным и «охотниками за консервами». Доклад А. Власовой и К. Зоркого «Проблема намеренных искажений письменного текста в электронных рекламных рассылках (спаме)» (ЗАО «Ашманов и партнеры») был посвящен псевдоошибкам спаммеров и способам борьбы с ними, которые реализованы в фильтре «Спамтест 2.0». Для того чтобы преодолеть такой барьер, спаммеры используют автоматическую генерацию текстов, которые должны быть однозначно восприняты фильтром как нерекламные, а пользователем —как рекламные. Им на руку ахиллесова пята компьютера — способность «понимать» письменный текст. Часто применяется подмена букв (vi@gr@), разбиение слов на несколько частей (МО МЕ НТ АЛЬ НО), удвоение литер (Меммбранный плазмаферрез с применнением плазмоофильтра «РОСА»). Особые возможности предоставляет формат HTML: в текст письма можно вставлять любое количество дополнительных символов, цвет которых совпадает с цветом фона. Для пользователя эти символы будут незаметны, зато с их помощью можно заставить фильтр воспринимать весь текст как одно длинное слово.
Получается, что ловить спаммеров, использующих известные приемы, и «рубить их на корню» возможно. А что делать, если будут появляться новые приемы? Создавать новые решения и «обучать» им фильтр? Мне показалось, что в глобальном масштабе усилия антиспаммеров пока еще все равно представляют собой войну с ветряными мельницами. Спам с «заиканиями» как нельзя лучше демонстрирует, насколько слабо компьютер понимает человеческий язык и насколько сложно алгоритмизировать процесс восприятия текста.
Технология уточнения поисковых запросов
Алгоритмы поиска в Интернете постоянно совершенствуются, однако ситуации, когда пользователь не находит то, что ищет, увы, не редкость. Конечно, большинство уважающих себя поисковиков предоставляют функции расширенного поиска или позволяют использовать логические операторы (OR, AND, NOT). Однако даже эти возможности не всегда оказываются эффективными.
В этой связи мне показалась интересной работа П. Браславского «Автоматические операции с запросами к машинам поиска Интернета на основе тезауруса: подходы и оценки» (Институт машиноведения УрО РАН). Успех поиска в Сети зависит от удачно сформулированного запроса, но пока мы можем задать машине всего нескольких слов. Понятно, насколько полезен был бы инструмент для уточнения, переформулирования и оптимизации поискового запроса. Предложенная технология предполагает использование тезаурусов — словарей, составленных на основе анализа совместной встречаемости слов. Конечно, такой словарь может быть составлен только для довольно узкой предметной области. Но ведь очень часто мы обращаемся к поисковику, чтобы получить информацию, относящуюся, например, к сфере наших профессиональных интересов. В этих случаях метапоисковая машина окажется весьма полезной: она примет запрос, переведет его на другой язык, уточнит и адресует тому поисковику, который сможет выдать релевантные результаты. Не об этом ли мечтает каждый пользователь?
Однако для особого оптимизма оснований пока нет: система способна лишь помочь составить уточненный поисковый запрос. Возможно, он с большей вероятностью даст релевантные результаты, но все это, на мой взгляд, очень далеко от поиска информации с «человеческим лицом».
Электронными словарями сегодня решительно никого не удивишь. Семейство Globus Software, представленное на конференции, показалось мне достойным внимания благодаря глубине реализованных идей и богатым функциональным возможностям. По-настоящему электронный словарь, по мнению представителя компании И. Ларченкова, должен обладать целым рядом дополнений. Представленное семейство отличает гибкая настройка словарной статьи. Для хранения и разметки данных разработан теговый язык DML (Dictionary Markup Language), который в значительной степени напоминает HTML. Его использование позволяет модифицировать словарную статью и, если необходимо, конвертировать данные в форматы, совместимые с другими словарями или издательскими системами. Для тех, кто не желает осваивать основы DML, предусмотрен редактор словарной статьи с настраиваемым пользовательским интерфейсом. Рост популярности электронных словарей, по всей видимости, не приведет к полному исчезновению традиционных печатных изданий. Именно поэтому в словарях Globus Software предусмотрен ряд функций издательской системы. С помощью встроенных инструментов можно подготовить оригинал-макет печатного словаря на основе электронного и экспортировать данные в формат RTF или HTML.
Вопросы, вопросы.
На конференцию я привез множество вопросов, касающихся человеко-компьютерного взаимодействия. Когда собирался уезжать, понял, что их количество удвоилось. Вместе с тем прибавилось уважения к людям, которые год за годом бьются над ответами на них.
Способен ли компьютер понимать значение слова? Любой, кто имеет хотя бы небольшой опыт работы с электронными словарями или компьютерными переводчиками, даст отрицательный ответ. А как насчет синтаксиса? Вспомните, как часто ошибается модуль автоматической проверки в MS Word, постоянно пытаясь убедить нас, что вполне грамотное предложение «не согласовано». Не добавляют оптимизма и ложные срабатывания антиспамовых фильтров, когда важные письма вдруг оказываются в одной папке с мусором.
Я уже предвижу возражения: «Постойте! Если бы компьютер был вовсе не способен понимать человеческий язык, то все выглядело бы значительно хуже. За каждым словом приходилось бы лезть в бумажный словарь, от спама не было бы спасения, а найти что-либо в Интернете было бы решительно невозможно». Абсолютно согласен, но разве достижения пропорциональны общим темпам развития информационных технологий? Чтобы представить себе это, достаточно вспомнить, что первые машинные переводчики появились в 60—70-х годах прошлого века. Теперь сравните производительность тогдашнего мэйнфрейма с возможностями современной пользовательской машины.
В заключение хочу привести запомнившуюся мне фразу одного из участников конференции: «Искусственный интеллект — это как смерть. Пока мы есть, его нет; когда будет он, нас не станет». Мне почему-то хочется, чтобы он оказался неправ.
Cовременный словарь «великого и могучего»
«Яндекс» — это не просто один из популярнейших поисковиков Рунета. Оказывается, благодаря доступности огромного массива русских текстов, он даст фору многим традиционным словарям. С помощью поисковых запросов можно исследовать управление глаголов, сочетаемость слов или употребление отдельных форм. Как было отмечено в докладе, посвященном такому использованию поисковика, «Яндекс» оказался вполне качественным инструментом получения новой лексикографической информации. Например, форма множественного числа «директоры» уже давно признается архаичной, однако в текстах Рунета формы «директора» и «директоры» встречаются одинаково часто.
Читайте также: