СПОСОБ АНИМАЦИИ SMS-СООБЩЕНИЙ
METHOD OF ANIMATING SMS-MESSAGES

Область техники, к которой относится изобретение
Настоящее изобретение относится к визуализации текста на естественном языке, а именно к преобразованию текста на естественном языке в изображение или анимацию, соответствующих этому тексту. Более конкретно изобретение относится к реализации технологии «шаблонной» визуализации текста.
Предшествующий уровень техники
Существует множество решений, которые позволяют разбирать текст, строить по результатам разбора статические картинки.
Существуют решения, позволяющие вручную создавать сцены и анимации путем отрисовки объектов, персонажей, сцен и получать, в конечном счете двумерный (или даже трехмерный) анимационный ролик или статические картинки.
Однако не существует решений, которые позволяли бы автоматически получить анимационный ролик, алгоритмически объединяя набор предварительно созданных анимационных роликов, логически соответствующий тексту на естественном языке, хотя бы и ограниченному определенным словарным запасом или тематикой, в т.ч. используя наиболее употребляемые, в т.ч. разговорные слова и выражения.
Сущность изобретения
Технический результат, который может быть получен при использовании заявленного изобретения - расширение арсенала технических средств в части визуализации текста, написанного на естественном языке (получения анимаций, используя текст).
Согласно первому объекту настоящего изобретения предлагается способ подбора анимаций, соответствующих тексту на естественном языке, содержащий следующие этапы:
принимают текст запроса на естественном языке;
разбивают текст на предложения;
разбивают предложение по словам;
приводят каждое слово к нормализованной форме;
выбирают последовательность шаблонов для нормализованного текста;
объединяют последовательности шаблонов для каждого предложения по порядку в одну общую последовательность шаблонов;
выбирают анимации для каждого шаблона;
объединяют файлы выбранных анимаций в результирующий ролик.
Дополнительно в способе подбора анимаций, соответствующих тексту на естественном языке, проводят формализованную замену слов, выражений и символов на предопределенные эквивалентные им слова, выражения или символы.
Дополнительно в способе подбора анимаций, соответствующих тексту на естественном языке, исправляют опечатки в словах.
Дополнительно в способе подбора анимаций, соответствующих тексту на естественном языке, при необходимости для каждого шаблона выбирают нейтральные фоновые анимации.
Дополнительно в способе подбора анимаций, соответствующих тексту на естественном языке, проверяют нет ли в кэше последовательности шаблонов, соответствующих нормализованному тексту, при этом
если в кэше есть последовательность шаблонов, то выбирают последовательность шаблонов из кэша.
Дополнительно в способе подбора анимаций, соответствующих тексту на естественном языке, проверяют задан ли стиль анимаций для входящего текста, при этом
если стиль задан, то выбирают анимации, соответствующие стилю, если для выбранного стиля есть анимация каждого шаблона из последовательности в данном стиле; и
если стиль не задан, выбирают случайным образом тот стиль, в котором есть все анимации для выбранных шаблонов;
если таких стилей несколько, выбирают случайным образом любой;
если таких стилей нет, берется набор анимаций в разном стиле.
Дополнительно в способе подбора анимаций, соответствующих тексту на естественном языке, сохраняют в базе данных оригинальный текст запроса, выбранную последовательность шаблонов; и
обновляют статистику по шаблонам, словам, анимациям, список неизвестных слов и статистику по неизвестным словам.
Согласно второму объекту настоящего изобретения предлагается способ поиска оптимальной последовательности шаблонов для последующего выбора анимаций, соответствующих последовательности шаблонов, содержащий этапы на которых:
а) из списка отбирают все шаблоны, у которых все слова шаблона содержатся в предложении, при этом если задан конкретный стиль анимации то шаблоны выбираются не из списка всех шаблонов, а из списка шаблонов, имеющих анимации в выбранном стиле;
б) получают из списка шаблонов, полученных на предыдущем этапе, информацию об иерархии шаблонов, при этом уровень иерархии шаблона определяет ранг шаблона;
в) если шаблоны одной иерархии, но разных уровней входят в одно множество шаблонов, полученных на этапе а), из этого множества исключают шаблоны с минимальным рангом (более верхним уровнем);
г) из списка шаблонов, полученных на этапе в), выбирают оптимальный набор шаблонов, для которой значение целевой функции будет самым оптимальным, при этом целевая функция имеет вид:
пересечений
где N - число пересечений слов шаблонов в наборе шаблонов,
покрытие
_
N суммарное покрытие всех слов шаблонами (количество всех слов из предложения, встречающихся в шаблонах),
ранг
N - суммарный ранг всех шаблонов набора,
пар в правильной последовательности
N - число пар слов составных (т.е. состоящих из нескольких слов) шаблонов, соответствующих последовательности слов во фразе,
пар в неправильной последовательности
N - число пар слов составных шаблонов, не соответствующих последовательности слов во фразе,
1
2
3;
4
a k, k, k k - коэффициенты, вычисленные эмпирически. Их значение 0.4, 0.33, 0.4, 0.2 соответственно.
Дополнительно в способе поиска оптимальной последовательности шаблонов для последующего выбора анимаций, соответствующих последовательности шаблонов, поиск оптимального значения целевой функции производят либо полным перебором вариантов последовательности шаблонов (последовательно проходят все комбинации уникальных шаблонов), либо методами многокритериальной оптимизации.
Дополнительно в способе поиска оптимальной последовательности шаблонов для последующего выбора анимаций, соответствующих последовательности шаблонов, проверяют, нет ли в кэше последовательности шаблонов, соответствующих нормализованному тексту, при этом
если в кэше есть последовательность шаблонов, то выбирают последовательность шаблонов из кэша.
Дополнительно в способе поиска оптимальной последовательности шаблонов для последующего выбора анимаций, соответствующих последовательности шаблонов, проверяют задан ли стиль анимаций для входящего текста, при этом
если стиль задан, то выбирают анимации, соответствующие стилю, если для выбранного стиля есть анимация каждого шаблона из последовательности в данном стиле; и
если стиль не задан, выбирают случайным образом тот стиль, в котором есть все анимации для выбранных шаблонов;
если таких стилей несколько, выбирают случайным образом любой; если таких стилей нет, берется набор анимаций в разном стиле.
Дополнительно в способе поиска оптимальной последовательности шаблонов для последующего выбора анимаций, соответствующих последовательности шаблонов, сохраняют в базе данных оригинальный текст запроса, выбранную последовательность шаблонов; и
обновляют статистику по шаблонам, словам, анимациям, список неизвестных слов и статистику по неизвестным словам.
Согласно третьему объекту настоящего изобретения предлагается второй вариант способа поиска оптимальной последовательности шаблонов для последующего выбора анимаций, соответствующих последовательности шаблонов, содержащий этапы на которых:
- используя алгоритм определения расстояния Левенштейна находят все шаблоны, все слова которых находятся в искомой фразе;
- сортируют найденные шаблоны по количеству слов по возрастанию; последовательно для каждого шаблона из этого сформированного множества шаблонов, проверяют, не входит ли шаблон в какой-то другой шаблон из множества, при этом если шаблон входит в какой-либо другой шаблон из множества его исключают;
- в полученном списке шаблонов выделяют шаблоны непересекающиеся между собой и пересекающиеся между собой;
- непересекающиеся шаблоны добавляют в результирующее множество;
- по каждому шаблону вычисляют среднее значение позиций слов шаблона в тексте; и
- производят сортировку шаблонов по этому среднему значению, получая оптимальную последовательность шаблонов.
Дополнительно во втором варианте способа поиска оптимальной последовательности шаблонов для последующего выбора анимаций, соответствующих последовательности шаблонов, у пересекающихся шаблонов определяют мощность пересечения (число слов пересечения) со словами из множества непересекающихся шаблонов и число новых слов, покрывающих фразу, в это множество не входящих.
Дополнительно во втором варианте способа поиска оптимальной последовательности шаблонов для последующего выбора анимаций, соответствующих последовательности шаблонов, если непересекающихся шаблонов нет, оптимальное множество шаблонов формируют из пересекающихся шаблонов, учитывая следующие критерии: максимальный суммарный ранг, максимальное покрытие, минимум пересечений; при этом
множество шаблонов формируют путем выполнения следующих этапов:
а) выбирают первый шаблон с максимальным весом, при этом весом шаблона является число слов в шаблоне;
б) выбирают шаблоны, минимально пересекающиеся с первым и непересекающиеся между собой;
в) из оставшихся шаблонов выбирают те, которые содержат >=50% новых слов; при этом
г) если на этапе а) шаблонов с максимальным весом было несколько, то результирующим множеством шаблонов выбирают то множество, у которого разность суммарного ранга шаблонов с количеством пересечений слов максимально.
Согласно четвертому объекту настоящего изобретения предлагается способ анимации SMS-сообщений, содержащий этапы на которых:
получают SMS-сообщение от отправителя;
разбирают полученное SMS-сообщение, выделяя текст сообщения;
посылают запрос с текстом сервису анимации;
подбирают анимации, используя способ подбора анимаций, соответствующих тексту на естественном языке, описанный выше;
подобранные анимации объединяют и передают сервису обработки услуг;
формируют MMS с полученной анимацией и отправляют получателю.
Дополнительно в способе анимации SMS-сообщений в SMS-сообщении указывают номер телефона получателя и текст сообщения.
Дополнительно в способе анимации SMS-сообщений в полученном SMS-сообщении идентифицируют отправителя и получателя.
Дополнительно в способе анимации SMS-сообщений отправляют отправителю SMS-сообщение о том, что анимация отправлена или отправить анимацию не удалось.
Согласно пятому объекту настоящего изобретения предлагается второй вариант способа анимации SMS-сообщений, содержащий этапы на которых:
получают SMS-сообщение от абонента;
разбирают полученное SMS-сообщение, выделяя текст сообщения;
посылают запрос с текстом сервису анимации;
подбирают изображение или анимацию, используя способ подбора анимаций, соответствующих тексту на естественном языке, описанный выше;
подобранное изображение или анимацию передают сервису обработки услуг;
формируют MMS с полученным изображением или анимацией и отправляют абоненту.
Дополнительно во втором варианте способа анимации SMS-сообщений в полученном SMS-сообщении идентифицируют абонента.
Настоящее изобретение может включать в себя любую комбинацию упомянутых здесь признаков или ограничений, кроме комбинаций таких признаков, которые являются взаимно исключающими.
Краткое описание чертежей
На фиг. 1 представлена примерная реализации сервиса анимации.
На фиг. 2 представлена примерная реализация анимации SMS сообщений, использующая сервис анимации.
Подробное описание изобретения
Алгоритм подбора анимаций реализуется в рамках отдельного веб-сервиса (фиг. 1), реализуемого с использованием технологии Microsoft ASP.NET. Веб-сервис обращается к базе данных, реализованной под управлением Microsoft SQL Server. Выбор технологии (ASP.NET, SQL Server) и формы реализации (веб-сервис) не является обязательным. С тем же успехом алгоритм можно реализовать в оконном приложении, написанном, например, на языке программирования (с, с#, c++, Pascal и других), а в качестве базы данных выбрать обычные текстовые файлы.
Веб-сервис содержит средство, реализующее алгоритм подбора анимации. В качестве параметров текста анимируемого сообщения, принимается стиль, в котором необходимо выбирать анимации (опционально). Результатом работы алгоритма является последовательность байтов - собранный бинарный SWF-файл.
Основная уникальность алгоритма (способа) заключается в подборе последовательности анимаций, семантически соответствующих заданному тексту. Алгоритм позволяет, имея набор анимаций и текст, сопоставить последовательность этих анимаций этому тексту. Его уникальность заключается в использовании текстовых шаблонов, в определении оптимальной последовательности этих шаблонов и в использовании концепции стилей.
Способ работы веб-сервиса, производящего анимацию текста
Смысл шаблонной визуализации текста заключается в том, что текст преобразуется в картинку или анимацию при помощи поиска соответствий ограниченному числу предопределенных шаблонов. Каждому шаблону выбирается в соответствие анимация в некотором стиле. Анимации последовательно соединяются в один видео-ряд. Алгоритмы получения анимации текста заключаются в веб-сервисе, разработанном для решения этих задач. Все метаданные, используемы в процессе анимации (шаблоны, анимации, стили и т.д.) хранятся в базе данных (БД), с которой работает веб-сервис.
Генерируемая анимация является шаблонной. Таким образом основная задача сервиса разложить анимируемый текст на семантически близкие шаблоны в определенной последовательности и выбрать для каждого шаблона соответствующую анимацию и склеить анимации в один ролик. Анимация может быть стилизована каким-то образом (Смешарики, Дисней, Винни-Пух, Бидструп, Антимульт и т.д.). Для тестирования и развертывания сервиса анимации он «заворачивается» в веб-интерфейс, основная задача которого - генерация анимации, администрирование шаблонов, анимаций, накапливание статистики и т.д.
Для того, чтобы определить структуру веб-сервиса введем ряд понятий.
Стиль. Визуальный стиль, которому требуется удовлетворить на выходе. Например - Смешарики, Мультяшный, Серьезный. Есть хотя бы один стиль - «По умолчанию».
Шаблоны. Шаблоны - набор фраз вида «я #любить ты», «привет», «целовать ты». Каждый шаблон хранится как набор нормализованных слов. Это означает, что вместо «Целую тебя» хранится «Целовать ты». Шаблон нормализуется на этапе добавления через веб-интерфейс. В шаблонах не учитывается регистр. Число пробелов и пунктуационные разделители слов игнорируются.
Группа. Группы предваряются тегом #. Группа - обобщение для ряда синонимов. Например, #love - люблю, обожаю, влюблен, тащусь. Так, группа #love обобщает слова «обожать», «любить», и др. Группы позволяют быстрее задавать похожие шаблоны. С точки зрения выбора шаблона шаблон, не содержащий группы приоритетнее.
Анимация. Каждому шаблону соответствует несколько анимаций. Анимация должна быть указана с привязкой к стилю. Может быть несколько анимаций в одном стиле. В таком случае выбирается одна из них. Для каждого заведенного в системе шаблона есть хоть одна анимация в стиле «По умолчанию», если явно не задан другой стиль. Анимация шаблона - файл контента в формате swf (формат может быть как векторным, так и растровым). У анимации существует свойство «Фоновая анимация», определяющее, что анимация является фоновой. Анимации, не являющиеся фоновыми содержат прозрачный фон. Некоторые фоновые анимации, годящиеся для показа произвольных переднеплановых анимаций, являются нейтральными фоновыми.
Опечатки. В передаваемом тексте могут существовать опечатки. Опечатки исправляются за счет хранения набора отношений слово-с-ошибкой => правильное слово.
Пользователь. Пользователь - тот, кто производит запрос анимации, передавая текст. Это может быть служба, веб-приложение и т.д. Пользователь уполномочен использовать сервис в определенных временных рамках. У пользователя есть данные аутентификации, которые хранятся в базе данных. Там же хранится информация о времени разрешенного доступа к сервису. К пользователю может быть привязан набор разрешенных стилей анимации.
Кроме обработки запросов на анимацию текста веб-сервис накапливает статистику (фиг. 1):
Использования шаблонов (частота)
Частоты слов в тексте
Частоты слов, которые не попали ни в один шаблон
Частоты использования стилей
Частоты использования анимаций
Веб-сервис содержит средства, реализующее алгоритм подбора анимаций текста и средства, позволяющие эту анимацию вернуть пользователю или передать получателю.
Алгоритм подбора анимаций, соответствующих тексту
На входе алгоритма текст и, стиль, в котором нужно выбирать соответствующие анимации (опционально). Эти данные передаются веб-сервису.
1. Входной текст разбивают на предложения. Разбиение происходит с помощью типовых пунктуационных разделителей («точка», «вопр. знак», «воскл. знак», «многоточие»). Разбиение осуществляется обычным поиском разделителей.
2. Предложение разбивают по разделителям слов на части (разбиение осуществляется обычным поиском). К разделителям относятся «точка», «запятая», «пробел», «двоеточие», «тире», «точка с запятой». У полученных слов в начале и в конце отрезают символы пробела, возврата каретки, табуляции.
3. Если все слова в тексте - английские, производят их транслитерацию. Транслитерацию производят посимвольным сопоставлением последовательностей английских букв фонетически близкими последовательностями русских букв (простая таблица замен); В случае если алгоритм используется для англоязычного или еще какого-либо контента, транслитерация может не производиться.
4. До последующей нормализации слов производятся текстовые замены по словарю замен. Это позволяет заменить слова, словосочетания и предложения, а также спецсимволы на другие, отвечающие более эффектной визуализации.
5. Каждое слово приводят к нормализованной форме (стеммер). Выбор стеммера непринципиален. В качестве примера для нормализации русскоязычного текста можно использовать Lucene.NET (http://www.dotlucene.net/) стеммер с поддержкой морфологии АОТ (Автоматическая обработка текста, http://www.aot.ru/).
6. Слова проверяют на типовые опечатки, происходит замена слов с опечатками на правильные. Ведется общий словарь слов (нормальных форм), входящих во все множество шаблонов, хранящийся в БД. Есть два метода поиска и замены
- методом простых замен по некоторому словарю опечаток, содержащему правильные значения слов из общего словаря для типовых опечаток;
- методом поиска правильного слова с минимальным расстоянием Левенштейна до искомого неправильного для последующей замены. Исправление опечаток является опциональным этапом алгоритма. Исправление опечаток может происходить и до нормализации слов.
7. Слова входящие в состав групп (обобщения синонимов) заменяют на названия групп. Обычно в качестве названия групп выбирают какое-то слово синоним, но в целом название группы может быть произвольным.
8. Проверяют нет ли в кэше последовательности шаблонов, соответствующих нормализованному, свободному от опечаток тексту, полученному в п. 6. Если есть, выбирают последовательность шаблонов из кэша и переходят к п. 11. Кэш представляет собой набор пар (исправленный нормализованный текст; последовательность шаблонов), хранящихся в оперативной памяти (для быстрого выбора), а не в базе данных.
9. Если в кэше анимируемый текст отсутствует, то выбирают последовательность шаблонов для нормализованного текста, используя алгоритм выбора шаблонов, соответствующих анимации; Последовательность шаблонов определяется алгоритмом выбора последовательности шаблонов, соответствующих анимации.
10. Добавляют полученную последовательность шаблонов в кэш, ассоциируя ее с искомым текстом.
11. Пункты 2-10 повторяют для каждого предложения.
12. Объединяют последовательности шаблонов для каждого предложения по порядку в одну общую последовательность шаблонов.
13. Если стиль задан, то выбирают анимации, соответствующие стилю, если для выбранного стиля есть анимация каждого шаблона из последовательности в данном стиле. Если стиль не задан, выбирают случайным образом тот стиль, в котором есть все анимации для выбранных шаблонов. Если таких стилей несколько, выбирают случайным образом любой. Если таких стилей нет, берется набор анимаций в разном стиле.
14. Выбирают анимации для каждого шаблона в выбранном стиле. Если одному шаблону соответствует несколько анимаций в одном стиле - выбирают случайную анимацию. Анимации могут подразделяться (опционально) на переднеплановые и заднеплановые (фоновые). Существует несколько вариантов «склейки» анимационных роликов, подобранных по последовательности шаблонов в один:
- последовательная «склейка» файлов (роликов) анимаций в один;
- «склейка» переднеплановых анимаций на первой или последней по ходу «склейки» заднеплановой;
- выбор случайного нейтрального фона для показа на нем переднеплановых анимаций (заднеплановые показываются как есть).
Все аниимационные ролики масштабируются под максимальный размер ролика из последовательности, располагаясь по центру (алгоритмы масштабирования и позиционирования могут отличаться. Дополнительно к результирующему ролику может быть наложен звук в виде произвольной аудио-композиции.
15. «Склеенный» видеоролик конвертируется в произвольный формат, векторный или растровый. Для исходных анимаций в swf это может быть, например, swf или MPEG-файл. Выходной формат полученного анимационного файла не существенен.
16. Сохраняют в базе данных оригинальный текст запроса, выбранную последовательность шаблонов; обновляют статистику по шаблонам, словам, анимациям, список неизвестных слов и статистику по неизвестным словам.
Алгоритм выбора шаблонов, соответствующих анимации
Алгоритм используется для подбора анимаций, соответствующих тексту.
Входные данные для алгоритма: Список шаблонов (кэшируется при запуске веб-сервиса), нормализованный текст предложения без опечаток. Список шаблонов хранится в базе данных в нормализованном виде.
1. Для определения последовательности шаблонов первым делом из списка отбирают все шаблоны, у которых все слова шаблона содержатся в предложении. Если задан конкретный стиль анимации то шаблоны выбираются не из списка всех шаблонов, а из списка шаблонов, имеющих анимации в выбранном стиле.
2. Получают из списка шаблонов информацию об иерархии шаблонов. Считается, что шаблон А находится выше по иерархии шаблона Б, если все слова шаблона А входят в шаблон Б. Уровень иерархии определяет ранг шаблона.
3. Если шаблоны одной иерархии, но разных уровней входят в одно множество шаблонов, полученных в п. 1, исключают из них шаблоны с минимальным рангом (более верхним уровнем).
4. Из списка шаблонов, полученных в п. 2 выбирают оптимальный набор шаблонов, для которой значение целевой функции будет самым оптимальным. Целевая функция:
пересечений
где N - число пересечений слов шаблонов в наборе шаблонов (для набора шаблонов «Вася шел. Вася бежал. Зайка бежал. Бежал.» оно равно 3),
покрытие
_
N суммарное покрытие всех слов шаблонами (количество всех слов из предложения, встречающихся в шаблонах),
ранг
N - суммарный ранг всех шаблонов набора,
пар в правильной последовательности
N - число пар слов составных (т.е. состоящих из нескольких слов) шаблонов, соответствующих последовательности слов во фразе,
пар в неправильной последовательности
N - число пар слов составных шаблонов, не соответствующих последовательности слов во фразе,
1
2
3;
4
a k, k, k k - коэффициенты, вычисленные эмпирически. Их значение 0.4, 0.33, 0.4, 0.2 соответственно.
Значение функции зависит от нескольких математических критериев. Найти оптимум функции (ее наибольшее значение) можно несколькими способами:
1) численными методами многокритериальной оптимизации;
2) полным перебором всех наборов шаблонов с вычислением значения целевой функции для каждого шаблона.
Упрощенный алгоритм определения последовательности шаблонов, соответствующих анимации
Упрощенная и более скоростная версия алгоритма определения последовательности шаблонов, соответствующих анимации выглядит так:
1. Используя алгоритм BlockDistance / Определения расстояния Левенштейна / Jaro-Winkler distance / Damerau-Levenshtein distance находим все шаблоны, все слова которых находятся в искомой фразе.
2. Сортируем найденные шаблоны по количеству слов по возрастанию. Пробегая последовательно по этом сформированному множеств шаблонов, проверяем, не входит ли шаблон в какой-то другой шаблон из множества. Если входит, выбрасываем его.
Так мы получаем список шаблонов без вложений.
3. Для полученного списка шаблонов выделяем шаблоны не пересекающиеся между собой и пересекающиеся между собой.
4. (Опционально) У пересекающихся шаблонов определяем мощность пересечения (число слов пересечения) со словами из множества непересекающихся шаблонов и число новых слов, покрывающих фразу, в это множество не входящих.
5. Не пересекающиеся шаблоны добавляем во множество-результат (они гарантировано войдут).
6. (Опционально) Если не пересекающихся шаблонов нет, переходим к 7. Из оставшихся пересекающихся шаблонов пытаемся сформировать оптимальное множество по критериям: максимальный суммарный ранг, максимальное покрытие, минимум пересечений. Делается это так:
6.1) берется первый шаблон с максимальным весом (вес = число слов);
6.2) далее берутся шаблоны, минимально пересекающиеся с первым и не пересекающиеся между собой;
6.3) далее из остальных шаблонов выбираем те, которые содержат >=50% новых слов: сортируем шаблоны по числу новых слов и начинаем добавлять по одному, при этом проверку на новизну слов осуществляем с учетом добавляемых по ходу шаблонов (т.е. если добавили первый с числом новых слов более 50%, второй может уже и не добавиться, т.к. с учетом слов первого добавленного шаблона, число новых слов там будет меньше);
6.4) если в 6.1 шаблонов с макс, рангом было несколько, то для множества полученного в 6.3 считаем значение - суммарный ранг шаблонов минус число пересечений слов. Далее берем следующий шаблон с макс, рангом и повторяем 6.2-6.4;
6.5) выбираем то множество шаблонов, где вычисленное в 6.4 значение максимально.
7. Полученное оптимальное множество шаблонов необходимо превратить последовательность. Для этого по каждому шаблону вычисляется среднее значение позиций слов шаблона в тексте и происходит сортировка шаблонов по этому среднему значению. Полученная последовательность - искомый результат.
Упрощенная версия алгоритма может усложняться добавлением дополнительных критериев поиска оптимальной последовательности шаблонов из полной версии алгоритма.
Алгоритм определения последовательности шаблонов, соответствующих анимации
Для определения последовательности шаблонов используется простой алгоритм, входными данными для которого являются текст предложения и множество шаблонов, которые могут образовать максимально полное покрытие предложения.
1. Для каждого шаблона вычисляется его среднее положение в предложении: среднее арифметическое порядковых номеров слов в тексте. Если шаблон покрывает несколько одинаковых слов, учитывается первое (возможна реализация, при которой берется среднее арифметическое всех позиций).
2. Шаблоны упорядочиваются по среднему положению в предложении по возрастанию.
Способ анимации SMS-сообщений (фиг. 2)
Есть два варианта анимации SMS-сообщений:
1. Нарисуй друзьям послание!
Человек отсылает SMS на короткий номер, указывая абонента, которому необходимо передать сообщение. По сообщению находится наиболее удачная анимация, наиболее близкая теме сообщения и отсылается указываемому абоненту. Отсылаться может как статическая картинка, так и анимация.
2. Визуализируй свои желания!
Человек отсылает SMS с желаемым предметом на короткий номер и получает забавную картинку этого предмета.
Для варианта использования отправки анимированных сообщений друзьям последовательность работы выглядит так:
1. Абонент-отправитель отправляет SMS-сообщение на короткий номер. В SMS-сообщении он указывает номер телефона получателя и текст сообщения.
2. Сообщение через оборудование оператора сотовой связи (ОПСОС) попадает в SMS Center (SMSC), откуда данные попадают в систему биллинга, а само сообщение пересылается сервису обработки услуг (возможно использование посредника).
3. Сервис обработки услуг разбирает полученное SMS-сообщение, идентифицируя отправителя, выделяя текст сообщения и номер получателя.
4. Сервис обработки услуг делает запрос с текстом сервису анимации.
5. Сервис анимации генерирует (подбирает) анимацию, выбирая соответствующие данные из некоторой базы анимаций.
6. Подобранные шаблоны анимации склеиваются и передаются сервису обработки услуг.
7. Сервис обработки услуг формирует MMS с полученной анимацией и отправляется через MMS Center (MMSC) абоненту получателю.
8. Сервис обработки услуг отправляет абоненту-отправителю через SMSC SMS-сообщение о том, что анимация отправлена или отправить анимацию не удалось, если MMS не отправилась (опционально).
9. Абонент-получатель получает MMS с анимированным SMS-сообщением, от имени (с номера получателя).
10. Абонент-отправитель получает SMS с уведомлением об отправке (опционально).
Для варианта использования визуализации желаний, последовательность несколько отличается, хотя схема работы участников процесса остается очень похожей, только абонент-получатель совпадает с абонентом-отправителем:
1. Абонент-отправитель отправляет SMS-сообщение на короткий номер. В SMS-сообщении он указывает желаемый предмет.
2. Сообщение через оборудование оператора сотовой связи (ОПСОС) попадает в SMS Center (SMSC), откуда данные попадают в систему биллинга, а само сообщение пересылается сервису обработки услуг.
3. Сервис обработки услуг разбирает полученное SMS-сообщение, идентифицируя отправителя, выделяя визуализируемый предмет и пересылая его текстовое описание сервису анимации.
4. Сервис анимации подбирает картинку / анимацию, выбирая соответствующие данные из базы анимаций, передавая ее сервису обработки услуг.
5. Подобранная анимация формируется в MMS и отправляется через MMS Center (MMSC) абоненту.
6. Абонент получает MMS с анимированным SMS-сообщением.
Представленные чертежи иллюстрируют архитектуру, функциональность и работу возможных реализаций систем и способов согласно различных вариантам осуществления данного изобретения. В этой связи, каждый блок может представлять собой модуль, сегмент или часть кода, который содержит одну или несколько исполняемых команд для реализации определенной логической функции (функций). Следует также отметить, что в некоторых альтернативных реализациях, функции, указанные в блоке, могут осуществляться в порядке, отличном от указанного на чертежах. Например, два блока, показанные последовательно, могут фактически исполняться в обратном порядке, в зависимости от включенной функциональности. Следует также отметить, что каждый проиллюстрированный блок и комбинации блоков на чертежах могут быть реализованы посредством специализированных основанных на аппаратном обеспечении систем или модулей, которые выполняют специализированные функции или действия, или комбинациями специализированного аппаратного обеспечения и компьютерных команд.
Терминология, используемая здесь, предназначена только для описания конкретных вариантов осуществления, и не предназначена для ограничения данного изобретения приведенным конкретным примером. Как используются здесь, формы единственного числа предназначены для включения в себя также и форм множественного числа, если контекст не указывает ясно иное. Будет ясно, что термины «содержит» и/или «содержащий», «включает» и/или «включающий» при использовании в данном описании, определяют наличие определенных свойств, единых целых, стадий, операций, элементов и/или компонентов, но не устраняют наличие или добавление одного или нескольких других свойств, единых целых, стадий, операций, элементов, компонентов и/или их групп.
Хотя выше проиллюстрированы и описаны конкретные варианты осуществления, специалистам в данной области техники должно быть ясно, что вместо конкретных показанных вариантов осуществления может быть представлена любая конфигурация, которая рассчитана на достижение той же самой цели, и что изобретение имеет другие применения в других средах. Настоящая заявка предназначена для охвата любых адаптаций или вариаций данного изобретения. Следующая формула изобретения никоим образом не предназначена для ограничения объема изобретения конкретными вариантами осуществления, описанными здесь.