Подходы для реверсирования sprintf / format

Мне нужно эвристически определить строки шаблона формата, проанализировав форматированные результаты.

Например, у меня есть эти строки:

У вас есть 3 непрочитанных сообщений.

Вы есть 10 непрочитанных сообщений.

Мне очень жаль, Дэйв . Боюсь, я не смогу этого сделать.

Прости, Фрэнк . Боюсь, я не могу этого сделать.

Это утверждение ложно.

Я хочу получить следующие строки формата:

У вас есть % s непрочитанных сообщений

Извините, % s . Боюсь, я не смогу этого сделать.

Это утверждение неверно.

Какие подходы и / или алгоритмы могут мне помочь?

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

Некоторые дополнительные требования:

  • Тип параметра не имеет значения, т. Е. Мне не нужна информация, если параметр изначально был % s или % d или если он был дополнен или выровнен.
  • Может быть более одного параметра (или не может быть вообще ни одного)
  • Обычно данные состоят из тысяч форматированных строк, но только десятков шаблонов формата.
6
задан Fred Foo 11 February 2011 в 09:06
поделиться