Как разбить фразу на более менее осмысленные ключевые слова?
в первом приближении выкиньте союзы и предлоги (?). 
У вас получится " дем мороз новый год будет дарить подарки детям они будут рады"
во второй итерации можно местоимения перетрясти.  А цель то какая?
Что в Вашем понятии более менее осмысленные ключевые слова? Кто должен это определить?
Разбейте строку через explode(' ', $string) и генерируйте из массива слов ключевые фразы. Можете даже перемешать содержимое или пройти в цикле и составить из слов словосочетания каждой пары слов...