Количество возможных комбинаций растет очень быстро. Предположим, что в основном языке используется 30000 слов, тогда количество комбинаций из трех фраз составляет 30000 ^ 3
В любом случае реализация нулевого уровня будет состоять в том, чтобы создать (хэш) список слов, отфильтровать список, если необходимо, для очень распространенных слов (,, и т. Д.), Чтобы уменьшить количество фраз. Другие вещи, которые вы, возможно, захотите сделать, это уменьшить число множественных чисел до одиночных, удалить трейлинг, регистр и т. Д.
Затем обойдите текст дословно (стиль токенизатора), пропустив общие слова, и просто сохраните упорядоченный список фраз, с которыми вы сталкиваетесь, с подсчетом, и надеемся, что ваша память не исчерпается, поскольку в Delphi битовая версия:)
Разве у Кнута не было целой книги о комбинациях?