Text class in Python
Instead of letters="abcdefghijklmnopqrstuvwxyz"; use a built-in constant:

letters = string.letters;

The code only inspects first and last character of the word. It means that aaa.bbb will be treated as a single word. Is this an intent?
split(sep) allows a string of separators. Calling it with

raw = self.text.split(string.punctuation + string.whitespace)


eliminates the need to inspect individual words. If you still want to inspect them, a loop for i in range(len(raw)): should be written more idiomatically as

for word in raw:


(you don't really need i anywhere in the loop).