Para desenvolver esse modelo que você deseja o que você precisa é basicamente de um modelo de linguagem. Na página do meu curso de Métodos Computacionais, na aula sobre linguagem natural (slides), você pode encontrar as dicas básicas para construir o modelo mais simples possível usando por exemplo NLTK e python. Para fazer um modelo profissional, você precisará estudar um pouco as contribuições recentes de redes neurais. Você pode dar uma olhada sobre esse assunto também nas notas de aula do meu curso no tópico referente a redes neurais.