В самом начале разговора выяснилось, что слухи в целом верны, но не академик, а футболист, не в лотерею, а в преферанс, не выиграл, а проиграл, и не «Волгу», а сто рублей. Нашими предположениями Давид Ян был слегка озадачен.
- Насколько я знаю, в этом сентябре мы ничего подобного не планируем. Вероятно, речь идет вот о чем. Мы уже десять лет работаем над продуктом NLC (Natural Language Compiler) и в сентябре следующего года планируем завершить важный этап исследований. А коммерческого продукта ждать еще долго.
Поиск словосочетания «ABBYY NLC» на Google и «Яндекс» дает несколько ссылок, из которых сколько- нибудь внятную информацию содержат только две: интервью Давида Яна, данное им «КТ» в 1999 году (в нем Давид, очень кратко описав, о чем, собственно, идет речь, предполагает, что до полноценного коммерческого продукта еще года два с половиной), и интервью, взятое нашими коллегами из «Домашнего компьютера» двумя годами позже, в котором таких предсказаний уже нет.
- Это самый дорогой продукт ABBYY по стоимости разработки. К моменту выхода первой коммерческой версии на него будет потрачено около тысячи человеко-лет.
NLC - это внутреннее название технологии, а не наименование коммерческого продукта. Официальный анонс ABBYY, по словам Яна, сделает только через несколько месяцев - либо зимой, либо весной будущего года. Тогда же, возможно, станет известно, какой из продуктов ABBYY первым будет реализован на NLC. Угадывать название продукта сейчас бесполезно. Это может быть как совершенно новый программный комплекс от ABBYY, так и привычная программа, но с новой начинкой. Кроме того, ABBYY планирует выпустить SDK и лицензировать движок для других производителей.
- Если говорить с точки зрения конечного пользователя, то NLC позволяет решать множество задач, связанных с обработкой естественного языка. Практически все задачи, связанные с обработкой больших текстовых массивов, будут решаться с применением нашей технологии. Сюда входят и смысловой поиск, и аннотирование документов, и поиск по цельным предложениям, анализ и принятие решений и так далее. Сейчас все это решается очень неуклюже, так как в данный момент не существует коммерческих систем, имеющих внутри систему знаний о мире. В рамках NLC мы создаем семантическую иерархию, некий семантический юниверсум, некую модель знаний о мире - знаний как семантических, так и прагматических.
Прагматические знания - это знания, которые не могут быть почерпнуты непосредственно из текста.
- Ну вот, смотрите, - говорит Ян. - Возьмем предложения «Человек сидел на стуле. Он читал газету». С точки зрения грамматики, стул мог читать газету. С точки зрения семантики, стул не мог читать газету, это делал человек. Здесь все просто. Возьмем для примера другое предложение - «Apple, as usual, went for style over functionality». Понять, что Apple в данном случае вовсе не яблоко, а компьютерная компания, можно только обладая прагматическими сведениями. Можно придумать и менее очевидные примеры, когда отсутствие прагматических сведений не позволяет провести грамотный анализ. К прагматическим сведениям относятся, допустим, исторические данные, хотя, честно говоря, граница между семантическим и прагматическим анализом довольно зыбкая.
- В рамках NLC, - продолжает Давид, - мы накапливаем знания о мире. Система знает, что стул - это мебель, мебель находится в доме, знает, для чего предназначен стул. Мы построили модель языково- независимых данных об устройстве мира и модель доступа к этим данным, благодаря чему можем решать, как я уже говорил, широкий пласт задач.
Естественно, первое, что приходит в голову с таким подходом, - это перевод.
- Нетрудно понять, что человек-переводчик в процессе перевода сначала понимает смысл исходного предложения, а затем синтезирует этот смысл на другом языке. Только так можно получить адекватный перевод. Если же Google будет применять какие угодно эвристики, переводить по частям, используя пословный или пофразовый перевод, то неизбежно будет теряться смысл.
Конечно, кое-что можно понять уже на уровне синтаксического анализа. Например, синтаксический анализ зачастую позволяет разобраться с омонимией, когда одно и то же слово может означать разные вещи. Возьмем, допустим, слово «copy» - оно может быть как существительным («копия»), так и глаголом («копировать»). Но синтаксический анализ предложения I will copy this book показывает, что в данном случае «copy» - это глагол. Проблема в том, что синтаксис даже в таких, относительно простых случаях работает не всегда. Омонимию «за,мок»-'замо,к' синтаксически разрешить невозможно. «Я буду жить в этом замке» или «я повесил этот замок». Здесь уже нужен семантический анализ.
Выглядит все очень здорово, но, кажется, похожую функциональность обещали и экспертные системы, дайте-ка вспомнить, двадцать, тридцать, сорок лет назад?
- Если говорить о других подходах, то можно вспомнить не только экспертные системы, но и нейрокомпьютеры, которые, вообще говоря, к системам ИИ можно отнести с большой натяжкой, формально они к ним не относятся, это в большей степени статистические модели. Что касается экспертных систем, то в этой области масса различных реализаций. Если говорить о «черном ящике», то наша технология может имитировать поведение экспертной системы, если конечному пользователю так проще. Он сможет задавать вопросы и получать ответы. Но ключевым отличием NLC является то, что у нас целостный подход, мы строим целостное представление о мире. Экспертные системы никогда не ставили себе целью построение всеобъемлющей модели, да и не могли поставить такую цель.
Что это означает? Мы применяем так называемый IPA-подход - Integrity, Purposefulness and Adaptability, целостное, целенаправленное адаптивное восприятие. Этот принцип лежит в основе FineReader, NLC и ряда других систем ИИ, которыми мы занимаемся. Отдельные его принципы существовали и до нас, но наиболее цельно сформулировал этот подход наш главный идеолог по этому направлению Александр Львович Шамис, так что мы считаем, что принцип IPA изобретен нами. И этот принцип работает - сегодня FineReader умеет, например, распознавать рукописные шрифты без настройки на почерк.
В двух словах о том, что это такое. Во-первых, принцип целостности постулирует, что мы храним знания о мире целостным образом. Любые знания являются частью целого. Если говорить о распознавании текстов, то любая буква может быть представлена как система элементов, связанных друг с другом определенным образом. Если говорить о структуре языка, то здесь мы видим систему понятий, которые логически связаны друг с другом.
Принцип целенаправленности говорит о том, что мы не пытаемся исходить из того, что видим или анализируем. Мы поступаем ровно наоборот - априори высказываем гипотезу и пытаемся ее проверить. Наша система изначально является активным субъектом данного акта взаимодействия. Она не просто воспринимает данные на входе, но, получив объект для восприятия, пытается угадать, что это такое, или опровергнуть выдвинутую гипотезу. Причем это система с обратной связью - позитивные или негативные результаты запоминаются, система адаптируется и самообучается.
Представьте, что вы вошли в чулан. Темнота. Света практически нет, только какой-то слабый лучик пробивается. Вы почти ничего не видите, но чувствуете, что слева от вас что-то прошмыгнуло, проскочил движущийся объект. Через доли секунды вы уже знаете точно, что это была кошка. Как это произошло? Как вы догадались, ведь вы ее не видели?
Традиционная система распознавания взяла бы ту явно недостаточную графическую информацию, попыталась бы сделать на ее основании какие-то выводы - и у нее, конечно, ничего не получилось бы, потому что кошки не было, вы не видели ее. Но человек действует иначе. Сам не осознавая этого, он выдвигает гипотезы (как ограничивается круг возможных гипотез, это отдельный большой вопрос). Возможно, это собака, думает человек. Но если это собака, то тень должна была быть крупнее. Кроме того, собака должна издавать соответствующие звуки. Значит, эта гипотеза неверна. Переходим к следующей. Возможно, это мышь? Тоже нет, не подходит по размерам. А если это кошка? Кошка подходит. Это кошка!