Filter out non-alphabetic characters from a list of words
Since Python strings are immutable, appending one character at a time using += is inefficient.  You end up allocating a new string, copying all of the old string, then writing one character.

Instead, clean() should be written like this:

def clean(word):
    return ''.join(letter for letter in word.lower() if 'a' &lt;= letter &lt;= 'z')


Note that Python supports double-ended inequalities.

The name of your word_count_engine function poorly describes what it does.  In fact, the function doesn't print or return anything, so it's all dead code.  If I had to rewrite it, though, I'd say:

words = [word for word in map(clean, document.split()) if word]


Also consider replacing all of this code with a simple regular expression substitution.