NLG: Генерация текстовых описаний временных рядов

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


Зачем нужно текстовое описание временного ряда?

Применений можно придумать несколько, например:

  • текстовое описание характеристик наблюдаемых процессов в системах автоматической отчётности;  
  • генерация осмысленных текстов для веб-сайтов;
  • системы скоринга;
  • системы автоматического информирования (например, в прогнозах погоды);
  • что-то ещё?

Как проанализировать данные?

Для анализа входных данных придётся задействовать не только школьные знания, но и наработки из математической статистики, математического моделирования и прочих смежных специальностей. Например, при анализе непериодических функций придётся использовать различные способы сглаживания временного ряда, например метод скользящих средних.
Получившаяся сглаженная функция может быть проанализирована на наличие пиков, перегибов и других признаков изменения процесса. Подобные оценки должны быть проведены при различных уровнях сглаживания для получения описания характеристик процесса. Естественно, используемое программное обеспечение должно уметь распознавать определённые паттерны изменений, такие как увеличение-уменьшение, взрывной рост или стремительное падение, а также находить периодические функции или их приближения, если изменения значений метрик подчиняются какой-либо периодической функции.

Как получить текстовое описание данных?

Здесь понадобится не только умение оперировать словоформами выбранного языка, но и знание предметной области. То есть, мало написать "график функции показывает уверенное стремление ничего не показывать",- это скучно. Окончательный текст должен описывать именно те физические величины или метрики, которые заложены в исходных данных. Для этого понадобится кроме, собственно, временного ряда для анализа иметь и какое-то формализованное описания исследуемого набора величин.

Кто занимается автоматическим анализом данных?

Поиск в интернете показал, что похожими проблемами начали заниматься ещё в конце XX-го века. Навскидку удалось обнаружить несколько интересных ссылок: