One of the reasons why SwiftKey doesn't perform as well as it could for me might be that I use it with two languages, typing in each more or less 50% of the time. The fact that it can predict the next word based on the current one does help here in order to get the language right, but the three measly slots it has for word suggestions are still cluttered with words from the other language most of the time when I type. I think performance would boost if it could detect the language during the first few words and only suggest words in that language from that point forward. Then again, I often mix the two languages in a single sentence..