"Журнал «Компьютерра» N 34 от 18 сентября 2006 года" - читать интересную книгу автора (Компьютерра Журнал 654)

ОКНО ДИАЛОГА: Нечасто задаваемые вопросы


Авторы: Сергей Леонов, Владимир Гуриев

Как обычно бывает, один человек что-то услышал, второй что-то увидел, а третий ничего не услышал и не увидел, но признаваться ему в этом было неловко. Отследить источник слуха уже невозможно, но в начале сентября редакторы «КТ» увлеченно обсуждали новый продукт ABBYY, который выйдет в сентябре и уберет с рынка компанию «ZZZ» (название жертвы менялось в зависимости от дня недели, облачности и общего настроя сплетников). Устав гадать, мы отправились в FAQ-Cafе, чтобы спросить у председателя совета директоров компании ABBYY Давида Яна, что же они все-таки выпускают, когда и зачем.

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

- Насколько я знаю, в этом сентябре мы ничего подобного не планируем. Вероятно, речь идет вот о чем. Мы уже десять лет работаем над продуктом 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 умеет, например, распознавать рукописные шрифты без настройки на почерк.

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

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

Представьте, что вы вошли в чулан. Темнота. Света практически нет, только какой-то слабый лучик пробивается. Вы почти ничего не видите, но чувствуете, что слева от вас что-то прошмыгнуло, проскочил движущийся объект. Через доли секунды вы уже знаете точно, что это была кошка. Как это произошло? Как вы догадались, ведь вы ее не видели?

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

Но для выдвижения последней гипотезы у человека должны быть определенные знания о кошке. Он должен знать, что у кошки четыре ноги, хвост. Он должен знать, что кошка мяукает. И он начинает спрашивать себя, был ли у этой предположительной кошки хвост? Ног человек не видел, но хвост видел. Звук она издавала такой, какой издает кошка? Да, такой. Значит, из всех гипотез наибольший вес имела гипотеза, связанная с кошкой, и теперь мы убеждены, что эта гипотеза верна. И когда мы в следующий раз столкнемся с подобной ситуацией, первой нашей догадкой будет «кошка».

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

А каким образом достраивается внутренняя модель знаний о мире? Все эти знания вводятся…

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

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

Не может ли случиться так, что в результате ошибочно заложенных знаний стандартом станет какое-нибудь неверное представление?

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

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

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


Слушаю и понимаю

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

Какие задачи подтолкнули к созданию этой системы?

- Падение Вавилонской башни.

То есть все же лингвистические?

- Дело не только в языках. Дело в знаниях. Количество информации, порождающейся ежедневно, ежесекундно, растет в геометрической прогрессии, и очень скоро нас ожидает если не комбинаторный взрыв, то, по меньшей мере, значительные проблемы с доступом к этой информации. Но это только иллюстрация. То, что человечеству необходимы системы, позволяющие накапливать знания и обеспечивать к ним формальный доступ, совершенно очевидно. Возьмем, например, проблему распознавания слитной речи без настройки на голос диктора. В ее практической необходимости никто не сомневается. Можно ли сделать это с помощью компьютера? Ответ очень простой. Если проанализировать звуковой сигнал, записанный на этом диктофоне, то обнаружится, что семьдесят процентов изначальной информации было утеряно в процессе записи. А при этом уровне шума - все восемьдесят, а то и девяносто, местами. Тем не менее расшифровать наш разговор можно будет на 99 процентов, если не больше. Почему? Как вы можете достичь такого результата, если этих данных физически нет в сигнале?

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

И сколько времени пройдет между выпуском NLC и выходом первой системы распознавания слитной речи?

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

А эксперименты «Яндекса» и Google в области семантического анализа близки к тому, что делает ABBYY в проекте NLC?

- Google и «Яндекс», конечно, понимают важность таких технологий, и я абсолютно убежден, что к моменту появления NLC на рынке появится некоторое количество технологий, заявляющих примерно то же направление. Но у меня внутреннее ощущение, что подход ABBYY, которая потратила на разработки десять лет, существенно глубже. Я вполне могу допустить даже то, что в первые годы технологии Google, «Яндекс» и других фирм могут оказаться даже эффективнее наших, потому что они настраиваются на решение конкретной задачи, четко поставленной, с понятным результатом. Они не пытаются решить проблему в принципе. Но в дальней перспективе нам неизвестны чужие разработки, которые настолько глубоко и последовательно пытаются решить задачу понимания в общей постановке.

Я могу сказать, что еще пару лет назад весь этот проект для нас оставался очень рискованным вложением. У нас не было уверенности, что это вообще будет работать. Но сейчас есть основания надеяться на лучшее.

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


Задачки и задачи

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

Раз уж речь зашла о компании, то имеет смысл поинтересоваться, как ABBYY в условиях кадрового кризиса в ИТ может позволить себе столь жесткий отбор при приеме на работу. Претендент не только проходит несколько собеседований, но и сдает экзамен на логику. И только после этого его берут на работу. Стажером. На полгода. А там уж решают, расставаться с ним или нет.

- Конечно, мы тоже столкнулись с кризисом, но планку снижать не можем, иначе процесс снижения станет необратимым. Дело в том, что если определенный процент сотрудников компании обладает некой компетенцией, духом, волей к победе, то остальные, даже если они не до конца отвечают этим идеалам, понемногу подтягиваются. У системы есть некоторый иммунитет. Она либо отторгает людей совсем далеких, либо ассимилирует в себе тех, кто может встроиться. Но если людей, не способных к ассимиляции, будет слишком много, то процесс становится неуправляемым, и на исправление ситуации могут уйти годы. Поэтому, несмотря на дефицит кадров, мы сторонники жесткого отбора. Первый раунд - это изучение резюме. Если резюме нам нравится, то мы приглашаем человека на экзамен, где ему предлагается решить шесть логических задач. Если он с этим справился, его ожидает интервью с работником отдела кадров и непосредственным руководителем, с которым новичку предстоит работать. Если и здесь все проходит хорошо, мы берем его на полгода - срок, на самом деле, не очень жесткий, но обычно все же на полгода, - после чего он сдает квалификационный экзамен. По крайней мере, в R amp;D это так, у менеджеров, кажется, последнего экзамена нет.

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

К Физтеху в ABBYY особое отношение, хотя Давид утверждает, что к выпускникам других вузов никакой предвзятости нет. Там тоже иногда можно найти хороших специалистов.

- Мы не страдаем шовинизмом. Надо признать, что, к сожалению, несколько лет назад уровень подготовки на Физтехе резко упал по сравнению с тем же Мехматом, например.

Вы, кстати, как-то упоминали, что занялись софтом только для того, чтобы заработать некоторое количество денег и вернуться в науку. Но вот уже семнадцать лет не можете покинуть ИТ-бизнеса…

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

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

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