ВИЗУАЛИЗАЦИЯ ТЕКСТА НА ЕСТЕСТВЕННОМ ЯЗЫКЕ
DISPLAYING TEXT IN NATURAL LANGUAGE

Область техники, к которой относится изобретение
Настоящее изобретение относится к визуализации текста на естественном языке, а именно к преобразованию текста на естественном языке в изображение, анимацию или трехмерную сцену, соответствующих этому тексту.
Предшествующий уровень техники
Существуют продукты, которые позволяют разбирать текст, строить по нему семантические сети, что позволяет из текста определять объекты, субъекты, действия, иерархию понятий, последовательность действий, качественные, количественные и временные характеристики. Существуют продукты, позволяющие строить трехмерную сцену вручную, добавляя модели персонажей, объектов, модели зданий, расставлять камеры, добавлять источники света, анимировать сцену и получать в результате трехмерный анимационный ролик или статические картинки. Однако не существует масштабируемых распределенных систем, которые позволяли бы автоматически получить трехмерный ролик или картинку на основе текста на естественном языке.
Сущность изобретения
Решаемая изобретением задача - визуализация текста, написанного на естественном языке в виде трехмерного анимированного видеоролика или набора картинок, обеспечение простоты получения аудиовизуальной превизуализации текста для пользователя. Таким образом, ключевым моментом изобретения является именно визуализация текста. На входе текст, на выходе - картинка или видео.
Технический результат, который может быть получен при осуществлении заявленного способа, - получение арсенала средств для визуализации текста, написанного на естественном языке, автоматического получения анимированной трехмерной сцены. Дополнительным техническим результатом может быть получение полноценной библиотеки-хранилища реквизита (модели, анимация, звук, текстуры и т.д.) для сравнительно точной визуализации текстов, описанных естественным языком.
Для решения поставленной задачи реализован способ визуализации текста, включающий:
получение текста на естественном языке;
проведение автоматического семантического разбора предоставляемого текста на естественном языке с целью получения структурированной семантической сети, для последующей генерации по нему трехмерной сцены;
формирование трехмерной сцены по результатам семантического разбора с использованием встроенной библиотеки реквизита;
формирование видеоролика или набора картинок, используя упомянутые трехмерные сцены;
визуализацию полученного видеоролика или набора картинок.
Еще в одном аспекте заявленного изобретения при формировании видеоролика добавляют синхронное аудио-сопровождение.
Еще в одном аспекте заявленного изобретения семантический разбор текста включает:
разбиение текста на предложения;
нумерацию слов в рамках предложения;
выделение объектов, субъектов, действий и свойств;
классификацию всех слов с помощью дерева понятий, позволяющего сводить синонимы к общим понятиям;
однозначную идентификацию объектов в рамках всего текста.
Еще в одном аспекте заявленного изобретения предоставляют пользователю возможность ручного редактирования полученной трехмерной сцены.
Еще в одном аспекте заявленного изобретения предоставляют пользователю возможность ручного редактирования результатов автоматического семантического разбора.
Еще в одном аспекте заявленного изобретения предоставляют пользователю возможность проведения семантического разбора вручную.
Кроме того, для решения поставленной задачи реализована система визуализации текста, содержащая:
веб-сервис, обрабатывающий запросы пользователя на визуализацию текста на естественном языке;
сервис семантического разбора, получающий структурированную семантическую сеть из текста;
базу данных;
сервис компоновщика сцен, использующий результаты семантического разбора и базу данных для построения готовой трехмерной сцены;
сервис рендеринга, обеспечивающий генерацию видеоролика или набора картинок, используя полученные трехмерные сцены;
устройство пользователя, визуализирующее готовый видеоролик или набор картинок.
Еще в одном аспекте заявленного изобретения веб-сервис выполнен с возможностью учитывать статистику запросов, накапливать данные по частотным, временным и ресурсным показателям, вычисляемым в процессе перехода от текста к анимации, а также вести учет своей работы в виде лога.
Еще в одном аспекте заявленного изобретения веб-сервис выполнен с возможностью аутентификации пользователя.
Еще в одном аспекте заявленного изобретения система визуализации текста содержит несколько веб-сервисов, расположенных как на одном, так и на нескольких машинах.
Еще в одном аспекте заявленного изобретения система визуализации текста дополнительно содержит сервис генерации звука, который генерирует диалоги, готовит наборы звуков, раздающихся в процессе анимации сцены, и фоновый трек.
Еще в одном аспекте заявленного изобретения сервис генерации звука объединен с сервисом рендеринга и сервисом компоновщика сцен.
Еще в одном аспекте заявленного изобретения система визуализации текста дополнительно содержит компонент-балансировщик, который оценивает существующие ресурсы компонентов системы и загружает их, распределяя нагрузку.
Еще в одном аспекте заявленного изобретения балансировщик организует последовательную обработку данных сервисом семантического разбора, сервисом компоновщика сцен, сервисом генерации звука, сервисом рендеринга.
Еще в одном аспекте заявленного изобретения сервис рендеринга выполнен с возможностью добавления звука и сжатия полученного озвученного ролика.
Краткое описание чертежей
На фигуре представлена примерная схема реализации технического решения.
Подробное раскрытие изобретения
Изобретение далее будет подробно описано со ссылками на прилагаемый чертеж.
Разрабатываемое решение состоит из нескольких сравнительно независимых компонентов. Решение может быть использовано для визуализации текста, необходимой для полнофункциональной работы различных приложений и систем (1), в т.ч. веб-приложений (3), работающих под управлением различных веб-серверов и доступных пользователям через браузеры, настольных (оконных) GUI-приложений (2), разработанных для различных ОС, приложений под мобильные платформы (Windows Mobile, Symbian, Android, Apple и др.), различных сервисов, в т.ч. веб-сервисов и прочего.
Для обеспечения доступа к технологии используется специальный веб-сервис (Web-service, 4) - независимое приложение, реализующее взаимодействие по протоколу TCP/IP (возможны альтернативы). Приложение позволяет контролировать обработку запросов на анимацию текста, статус запросов, получение и хранение полученного видео-файла. Веб-сервис позволяет учитывать статистику запросов, накапливать данные по частотным, временным и ресурсным показателям, вычисляемым в процессе перехода от текста к анимации, а также вести учет (хронологию) своей работы в виде лога. Также веб-сервис поддерживает аутентификацию. Механизм аутентификации не принципиален (сертификаты, ЭЦП, логин/пароль, аутентификация ОС и др.) Веб-сервис может быть реализован на языке C++ (не является принципиальным). Веб-сервис является масштабируемым. Это означает, что для обслуживания запросов пользователя может существовать несколько веб-сервисов, расположенных как на одном, так и на нескольких машинах. С т.з. технологии использование веб-сервиса не является принципиальным: он лишь служит «точкой входа», обеспечивающей доступ к технологии.
Веб-сервис(ы) перенаправляют запросы пользователей на получение анимаций по тексту специальному компоненту-балансировщику (Central Router, 5). Этот компонент отвечает за процесс получения анимационного ролика по тексту сцены. Он оценивает существующие ресурсы «рабочих» компонентов и загружает их, распределяя нагрузку, возвращает веб-сервису статус получения видеоролика и передает данные от одного компонента другому. Балансировщик может быть реализован на языке C++. Он взаимодействует с веб-сервисом по протоколу TCP/IP, а с остальными компонентами по протоколу TCP. С т.з. технологии наличие балансировщика принципиально лишь для обеспечения последовательности действий и передачи данных при создании ролика, т.к. в простейшем случае каждый из «рабочих» компонентов реализуется в единственном экземпляре.
Балансировщик организует последовательную обработку данных сервисом семантического разбора (6), сервисом компоновщика сцен (7), сервисом генерации звука (8), сервисом рендеринга (9). Балансировщик отвечает за передачу (пропускает через себя) всех данных, используемых в процессе получения видеоролика, кроме результирующего видеоролика (из-за большого объема).
Сервис семантического разбора (ABBYY Service) позволяет получить результаты семантического разбора по тексту сценария для ролика. В качестве технологии семантического разбора используется ABBYY Compreno, требующая для своей работы поддержки службы Windows Active Directory. Компоненты ABBYY Compreno (10) предоставляют СОМ-интерфейсы для получения результатов разбора текста в формате XML. Использование ABBYY Compreno не является принципиальным. Аналогичным образом подойдет другая технология, выдающая следующую информацию (которую можно, например, сконвертировать в похожий XML-формат):
Разбиение текста на предложения;
Нумерацию слов в рамках предложения;
Выделение объектов, субъектов, действий и свойств;
Классификацию всех слов с помощью дерева понятий, позволяющего сводить синонимы к общим понятиям, в том числе информацию по нескольким уровням понятий;
Однозначную идентификацию объектов в рамках всего текста;
Морфологическую информацию;
Информацию об отношениях между словами (отношение прилагательных к существительным, отношения связанных объектов, представленных дополнениями);
Разбор числительных.
В простейшем случае сервис семантического разбора реализуется в единственном экземпляре, однако для обеспечения масштабируемости может быть поддержано и несколько одинаковых сервисов, выполняющих анализ разных кусков текста одновременно.
Сервис компоновщика сцен (Scene Compiler) использует результаты семантического разбора, хранилище моделей, текстур и базу мета-данных для построения готовой анимированной сцены (без звука). При этом сервис выдает описание сцены в специальном JSON-формате, содержащем ссылки на реальные модели файлов. Классовая иерархия, полученная в результате семантического разбора, преобразуется в реальные модели и конечные их анимации во времени.
Сервис генерации звука (Sound Processor Service) генерирует диалоги, готовит наборы звуков, раздающихся в процессе анимации сцены, и фоновый трек. Также сервис изменяет описание сцены, уточняя синхронизацию со звуком. Выделение отдельного компонента для обработки звука не является принципиальным, т.к. потенциально данный компонент может быть объединен с компонентами рендеринга и компоновщика сцен.
Сервис рендеринга обеспечивает генерацию (рендеринг) видео, наложение звука и сжатие полученного озвученного ролика. В качестве средства визуализации рендера используется трехмерный движок OGRE3D. Полученное видео с аудиодорожкой сжимается стандартным кодаком Н264.
Модели, текстуры, звуки, музыка, анимации и т.д. находятся в файловом хранилище данных (11). Доступ к нему осуществляется из сервиса компоновки сцен для обсчета анимаций сцены, из сервиса генерации звука для накладывания различных звуков и из сервиса рендеринга для финального рендеринга и сборки видеоролика.
Компоненты рендера, компоновщика сцен и генерации звука могут быть объединены. При этом за счет использования независимых форматов данных в реализации компоновщика сцен, семантически разобранная сцена может редактироваться в т.н. редакторе сценария, где может изменяться разбиение текста сценария на сцены, разметка сцен, выбор моделей, соответствующих объектам, последовательность действий, локация.
Также скомпонованная сцена может совершенствоваться. Для этого может быть разработан редактор сцен, позволяющий изменять сцену на уровне анимаций, ключей-свойств, спецэффектов, положения камер, монтажа, словом - упрощенный 3d редактор с сильно ограниченной и автоматизированной функциональностью пакетов типа Adobe Premiere, Autodesk Maya, Autodesk 3D Studio Max. Для реализации подобного функционала в редактор в одно приложение объединяются сервисы компоновки сцен, генерации звуков, рендеринга.
Описание алгоритма работы системы
1. До того, как веб-сервис «берется» за обработку запроса, с помощью предварительного вызова отдельного метода он возвращает инициатору (приложению) объем собственной загрузки. Если загрузка слишком велика, инициатор обращается к другому экземпляру веб-сервиса. Найдя наименее загруженный экземпляр веб-сервиса, инициатор передает ему текстовый фрагмент, который необходимо анимировать. Механизм распределения нагрузки непринципиален для данного алгоритма: возможна последовательная передача запросов доступным веб-сервисам, а если доступен только один веб-сервис, распределение нагрузки вовсе отсутствует. В качестве клиента веб-сервиса может выступать абсолютно любое предложение, «умеющее» вызывать методы веб-сервиса, как напрямую, так и через посредника (например, если пользователь инициирует передачу запроса из тонкого клиента-браузера и веб-сервера).
2. Веб-сервис, получив запрос, присваивает ему свой номер (Requestid) и инициирует его обработку, контролируя несколько состояний этого запроса до того момента, пока не будет получен готовый видеоролик, который можно будет отдать инициатору. Для этого первым делом текст запроса передается сервису семантического разбора. Делается это не напрямую, а через специальный распределитель нагрузки (балансировщик или маршрутизатор), маршрутизирующий вызовы для обработки свободным экземплярам сервисов семантического разбора. Маршрутизатор хранит в специальной таблице информацию о состояниях по всем поступившим запросам. Веб-сервис и маршрутизатор могут взаимодействовать по протоколу TCP/IP/HTTP/SOAP/ др.
3. Для поступившего запроса с переданным идентификатором (Requestid) маршрутизатор выставляет начальное состояние STATE 1.
4. Сервис сематического разбора обрабатывает текстовый фрагмент (внутри себя или перенаправляя стороннему компоненту семантического разбора) и получает результаты семантического разбора, например, в формате XML. Например, в случае использования технологии ABBYY Compreno доступ к результатам семантического разбора осуществляется обращением к ABBYY Compreno Server посредством предоставляемого СОМ API. Сервис семантического разбора возвращает маршрутизатору результаты разбора, взаимодействуя с ним по протоколу TCP/IP.
5. После получения результатов семантического разбора маршрутизатор обновляет состояние запроса с данным идентификатором на STATE2 и возвращает информацию о состоянии запроса веб-сервису. Веб-сервис обновляет состояние запроса в таблице запросов. Это необходимо, в одном примере реализации, при котором веб-сервис передает состояние запроса клиенту.
6. Далее результаты семантического разбора передаются наименее загруженному сервису компоновщика сцен. Таких сервисов также может быть несколько (балансировка нагрузки, также как и для сервиса семантического разбора) и с маршрутизатором они взаимодействуют по протоколу TCP/IP.
7. Сперва сервис компоновки сцен обрабатывает результаты семантического разбора (Datalmporter), переходя от классификации понятий, предоставленной средством семантического разбора к внутренней классификации объектов, субъектов, действий, свойств, к выбору вполне конкретных моделей и списку объектов, субъектов и действий. Для этого используется информация о соответствии классов семантического разбора внутренним классам и информация о доступных моделях в хранилище реквизита. И то, и то хранится в специальной базе мета-данных, доступной для сервиса компоновщика сцен. В данном техническом решении может использоваться любая СУБД, как объектная, так и реляционная: например, объектная база данных MongoDB.
8. Далее по полученным данным заполняется данными специальный объект сцены. Объект сцены в дальнейшем подвергается изменениям (изменение состояния объекта). С объектом сцены последовательно работают специальные менеджеры, интеллектуально обрабатывающие разные параметры, необходимые для построения сцены и вносящие соответствующие изменения в объект сцены.
9. Менеджер выбора локации выбирает из репозитория контента наиболее подходящую локацию. Локация представляет собой набор моделей, создающих ландшафт (экстерьер) или комнату (интерьер). По информации об имеющихся предметах, расположенных на сцене по тексту, в локацию добавляются недостающие предметы или их эквивалентные, с т.з. классификации объектов заменители.
10. Менеджер размещения задает первоначальное размещение объектов (в т.ч. персонажей в сцене). Объекты расставляются с учетом первоначальной информации о взаимном размещении и точек привязки по умолчанию. Каждая локация содержит набор предопределенных точек для расстановки объектов определенных габаритов.
11. Менеджер действий добавляет последовательности действий для каждой составляющей сцены.
12. Составляющие сцены классифицированы по внутренним классам системы. Каждому классу соответствует т.н. контроллер объекта (контроллер персонажа, контроллер животного, контроллер транспорта, контроллер камеры и т.д.). Контролеры составляющих сцены последовательно записывают изменения сцены (перемещения, анимации, изменение свойств объектов), в зависимости от последовательности действий составляющих сцены. Например, если есть действие «идти к стене» для персонажа «Василий» класса «character», то контроллер персонажа переместит персонажа из текущей точки к ближайшей точке стены за некоторое время (рассчитывается из скорости перемещения персонажа) и при этом будет проигрывать анимацию перемещения в течение всего времени перемещения.
13. Все контроллеры записывают последовательность изменений сцены в JSON-формат (текстовый).
14. Записанная в JSON-формате сцена передается обратно маршрутизатору, который обновляет состояние для данного запроса на STATE3, передает эту информацию веб-сервису. Далее маршрутизатор, распределяя нагрузку, выбирает сервис генерации звука, передавая ему записанную сцену. Для работы с сервисом генерации звука используется протокол TCP/IP. Записанная сцена содержит информацию о диалогах персонажей, для которых необходимо сгенерировать звук. Для диалогов генерируется звук, в JSON-описание сцены вставляются соответствующие маркеры. Описание сцены и сгенерированные звуковые фрагменты для диалогов возвращаются маршрутизатору.
15. Маршрутизатор обновляет состояние запроса на STATE4, передавая эту информацию веб-сервису и выбрав свободный сервис рендеринга. Сервису рендеринга по TCP/IP пересылается JSON-описание сцены, полученное от сервиса генерации звука. Сервис рендеринга обращается к файловому хранилищу с реквизитом и получает из хранилища файлы моделей, звуков, текстур, на которые ссылается описание сцены. С помощью рендер-движка, например OGRE, сервис рендеринга генерирует видеофайл и аудиодорожку такой же длительности, которая представляет собой смикшированные звуки, соответствующие действиям, фоновую музыку и диалоги. Далее видеофайл и звуковая дорожка объединяются вместе и сжимаются кодеком, например Н264.
16. После генерации видео-файла сервис-рендеринга отправляет маршрутизатору сообщение, что видеофайл успешно сгенерирован (маршрутизатор удаляет выполненный запрос) и передает веб-сервису готовый файл с видеороликом.
17. Веб-сервис, получив от сервиса рендеринга файл видеоролика, передает его пользователю, сохраняя его на жесткий диск для последующих операций (файл именуется соответствующим номером запроса). После успешной передачи файла инициатору из таблицы запросов веб-сервиса запрос удаляется. При этом веб-сервис поддерживает возможность передачи сохраненных файлов по запросу.
Заявленные способ и система могут быть модифицированы и дополнены таким образом, чтобы была:
возможность одновременного формирования видеороликов по разным сценариям несколькими пользователями;
возможность ручного редактирования трехмерной сцены с целью увеличения ее достоверности и получения более качественного видеоролика/набора картинок;
возможность ручного редактирования результатов автоматического семантического разбора с целью получения более достоверной трехмерной сцены;
возможность проведения семантического разбора вручную с целью получения трехмерной сцены, т.е. чтобы ручное редактирование трехмерной сцены поддерживало установку и коррекцию параметров дополнительных источников света, задание траекторий и базовых алгоритмов движения/установки камер, корректировку привязки сцены к временной шкале, изменение свойств объектов, моделей, текстур, наложения необходимых звуковых дорожек, внесение изменений в сцену, связанных со скелетной и лицевой анимацией персонажей, задание поз, движения персонажей, корректировку последовательности действий, происходящих в сцене;
возможность пополнения библиотеки реквизита своим контентом (модели, текстуры, звуки и т.д.) пользователями, т.е. чтобы библиотека реквизита, используемая для построения трехмерной сцены, была пополняемой, что позволило бы использовать для визуализации качественные модели, разработанные пользователями ранее;
возможность написания произвольных собственных приложений, использующих данную технологию, с помощью открытого интерфейса.
Примеры использования
Данное изобретение реализует технологию FilmLanguage. Технология визуализации текста FilmLanguage может быть использована для:
Разработки интерфейсного ПО (т.е. ПО, содержащего GUI), позволяющего автоматизировать процесс построения превизов, визуализации кино-сценариев;
Разработки игр (как казуальных, так и других);
Разработки различных сервисов, в т.ч. веб-сервисов, облегчающих генерацию пользовательского контента;
Разработки развлекательных приложений, производящих анимационные ролики по текстовому описанию;
Разработки обучающих приложений.
Представленный чертеж иллюстрирует архитектуру, функциональность и работу возможных реализации систем и способов согласно различным вариантам осуществления данного изобретения. В этой связи, каждый блок может представлять собой модуль, сегмент или часть кода, который содержит одну или несколько исполняемых команд для реализации определенной логической функции (функций). Следует также отметить, что в некоторых альтернативных реализациях, функции, указанные в блоке, могут осуществляться в порядке, отличном от указанного на чертежах. Например, два блока, показанные последовательно, могут фактически исполняться в обратном порядке, в зависимости от включенной функциональности. Следует также отметить, что каждый проиллюстрированный блок и комбинации блоков на чертеже могут быть реализованы посредством специализированных основанных на аппаратном обеспечении систем или модулей, которые выполняют специализированные функции или действия, или комбинациями специализированного аппаратного обеспечения и компьютерных команд.
Терминология, используемая здесь, предназначена только для описания конкретных вариантов осуществления и не предназначена для ограничения данного изобретения приведенным конкретным примером. Как используются здесь, формы единственного числа предназначены для включения в себя также и форм множественного числа, если контекст не указывает ясно иное. Будет ясно, что термины «содержит» и/или «содержащий», «включает» и/или «включающий» и подобные термины при использовании в данном описании, определяют наличие определенных свойств, единых целых, стадий, операций, элементов и/или компонентов, но не устраняют наличие или добавление одного или нескольких других свойств, единых целых, стадий, операций, элементов, компонентов и/или их групп.
Хотя выше проиллюстрированы и описаны конкретные варианты осуществления, специалистам в данной области техники должно быть ясно, что вместо конкретных показанных вариантов осуществления может быть представлена любая конфигурация, которая рассчитана на достижение той же самой цели, и что изобретение имеет другие применения в других средах. Настоящая заявка предназначена для охвата любых адаптаций или вариаций данного изобретения. Следующая формула изобретения никоим образом не предназначена для ограничения объема изобретения конкретными вариантами осуществления, описанными здесь.