Описание Compreno, сколковского проекта ABBYY (грант — 475 млн рублей, собственные инвестиции компании более 50 млн долларов), стоит начать с реального примера ее применения — в художественной кинематографии. Это примитивный мультипликационный фильм, демонстрирующий артисту и прочим участникам съемочного процесса то, что предстоит снимать: перемещения действующих лиц, реплики, взаимодействия с другими персонажами и объектами.
Изготовить мультик дешевле, чем тратить на разъяснения дорогое съемочное время, а Compreno позволяет автоматизировать эту работу. В компьютер подаются текст сценария и перечень объектов, на выходе — готовое видео.
Как перевести ковбоя
В 1998 году, когда проект задумывался, ничто не предвещало такого применения. ABBYY, известная своими словарями и софтом для распознавания символов, решила добавить еще один продукт — машинный перевод.
Теперь же машинный перевод стал частным случаем использования Compreno. Разработчик ставил целью — и утверждает, что вплотную приблизился к ее достижению, хотя промышленного образца еще нет — машинное "понимание" текста, написанного на естественном языке. Да еще ему непринципиально, на каком именно языке.
Сценарий фильма, на предварительной стадии которого делается описанный выше мультик — примитивный по форме текст: "Ковбой вскакивает на коня и, стреляя на скаку в приближающихся со стороны леса индейцев, скрывается за сараем". Объекты — ковбой, конь, лес, индейцы, сарай — связаны в этой фразе вполне определенным образом, их нетрудно визуализировать и заставить двигаться, и это вполне может сделать робот.
Дело за малым: надо добиться того, чтобы машина "поняла" смысл каждой фразы сценария.
Чужие недостатки
Compreno — это протест против непреодолимых ограничений существующих систем машинного перевода. Одни системы основаны на алгоритмических правилах перевода для пары языков (пример — российская Promt); другие — статистические, используют готовые образцы перевода словосочетаний из так называемых параллельных (профессионально переведенных, эталонных) текстов (переводчик Google). В чистом виде оба типа встречаются редко — на практике их сочетают.
Неотъемлемые проблемы алгоритмических систем, говорит Татьяна Даниэлян (она инженер-системотехник, а в ABBYY управляет разработкой лингвистической платформы Compreno), связаны прежде всего со сложностью правил перевода. Чем подробнее и тщательнее разработчик описывает эти правила, тем больше обнаруживается исключений: алгоритм неконтролируемо ветвится. Алгоритмическая система, кроме того, — раб словарей. Чтобы выбрать при переводе слово из десятка вариантов, который дает словарь, алгоритма не придумаешь, сетует она.
А фундаментальная проблема статистических систем, по мнению разработчиков, — недостаток параллельных текстов для множества предметных областей и пар языков. Из-за этого, например, перевод с португальского на французский исполняется по схеме "португальский -> английский -> французский" с очевидной потерей смысла. Статистический перевод плохо работает и с отрицаниями. Встретив во фразе частицу "не", система вынуждена гадать, к чему именно это "не" относится: с точки зрения статистики, две фразы, отличающиеся только частицей "не", едва ли не идентичны. Похожесть фраз вообще играет со статистическими системами злые шутки: бывает, они переводят "Ющенко" как "Yanukovich": это диктуется схожестью образцов перевода из параллельных текстов. А что? Обе фамилии встречаются в окружении одних и тех же слов ("президент", "Украина", "политика" и т.д.).
Семантическая иерархия понятий
Compreno решил идти своим путем — строить независимую от конкретного языка универсальную семантическую иерархию понятий.
Пояснение разработчики дают на таком примере. Вот глагол "владеть". Он есть в каждом языке и вполне определенным образом, считают они, соотносится с универсальными смысловыми понятиями: временем, ситуацией, имуществом, знаниями и т.д. В одном контексте "владеть" означает обладание, в другом — контроль, в третьем — не имеет буквального смысла, или этот смысл зависит от конкретного языка ("владеть собой"). Но "владеть" хранит свой универсальный смысл, уверены разработчики, — единый для всех языков. Не будь этого, задача перевода была бы в принципе неразрешима.
Составление такого универсального семантического дерева и описание его в лингвистических терминах — основной результат Compreno.
Сама по себе универсальная семантическая иерархия ничего не дает — для практических целей нужны инструменты ее применения. Машинному переводу, например, требуются средства анализа фразы для трансформации ее в универсальную, инвариантную по отношению к языку структуру, а затем — средства синтеза этой абстрактной конструкции из взаимосвязанных универсальных понятий во фразу на другом языке.
Текст, описанный в универсальных понятиях, — это абстракция, математико-информационная конструкция, невидимая, как невидим всякий софт. Но именно она позволяет машине добраться до смысла текста, полагают разработчики.
Школьная программа
Compreno хорошо визуализирована. Разбор предложения виден на каждой стадии. Вот начинается лексический анализ текста (выделение слов, знаков препинания, цифр и прочих текстовых единиц). Затем морфологический анализ, определение грамматических характеристик лексем без устранения омонимии ("печь" может быть и печью, и глаголом). Следом — синтаксический анализ: подлежащее-сказуемое, дополнение, как в школе учили. Затем собственно семантический анализ: его результат - полностью не зависящие от языка представление предложения, определяет его цель Татьяна Даниэлян, здесь же происходит "снятие грамматической омонимии".
Компьютер протягивает все возможные связи между словами во фразе во всем многообразии их типов — а их сотни: сочинение, контроль, анафорические отношения, явления перемещения и т.п. Слова перестают быть видны в паутине этих связей. Затем ноутбук Татьяны Даниэлян надолго задумывается — он делает работу сервера. Каждому слову ставятся в соответствие потенциально допустимые универсальные понятия, из путаницы теоретически возможных связей устраняются бессмысленные.
Например, table — таблица и стол? Если во фразе с table связан глагол "сидеть" — стол. "Заполнять" — таблица. Compreno цепляется за смысл каждого слова, и число вариантов разбора предложения становится обозримым. Получается универсальное, не зависящее от языка представление предложения, от которого можно переходить к синтезу текста на другом языке.
Если Compreno допускает два смысловых толкования фразы, то она оказывается двусмысленной и для человека. Пример: "Мальчик положил книгу на стол, он подошел к этажерке". К этажерке мог подойти и мальчик (ногами), и стол (по стилю).
Применения такой технологии — отдельная тема. Предусмотреть их так же сложно, как и варианты использования, например, спутниковой навигации или нового строительного материала.
Машинный переводчик перевел
To have another language is to possess a second soul
Иметь другой язык — это владеть второй душой
A sheep baas, but sheep baa
Овца блеет, но овцы блеют
Оригинал: The pools do not constitute separate entities and are not directly accessible to investors
Пулы не составляют отдельные организации и не напрямую доступны для инвесторов
The biggest drop in exports in more than two years is the main reason economists expect weaker second-quarter growth
Самое большее снижение в экспорте более чем за два года является главной причиной, по которой экономисты ожидают более слабый рост на второй квартал
The time it takes to develop a program depends upon the size (and the complexity) of the components
Время, которое требуется, чтобы разработать программу, зависит от размера (и сложности) компонентов