Il problema è chiamato 'modellazione del linguaggio'
È banale connettere lettere in alcune parole prendendo qualsiasi dizionario (elenco di parole valide) e trovando un modo adatto. Tuttavia, in pratica, il problema principale in questo compito è usuall trovare le parole migliori che si adattano a quelle lettere. Fortunatamente, questo è un problema che anche gli altri hanno - si verifica, ad esempio, nel riconoscimento vocale e quindi è piuttosto ben studiato e ha risorse e vari modi per cercare di risolverlo. In questo campo, questo problema viene generalmente chiamato "language modeling" .
Metodi statistici
L'approccio standard al momento per questo problema è di valutare statisticamente la probabilità di ogni subfragment sulla base di un gran numero di esempi di come la lingua appare nel mondo reale. Se vediamo spesso frammenti come "... al terapeuta" e raramente vedono frammenti come "... allo stupratore", allora possiamo assumere che quelle lettere dovrebbero essere unite.
Una buona descrizione del libro di testo classico è disponibile in Speech and Language Processing di Dan Jurafsky e Jim Martin (capitolo 6 nella prima edizione, capitolo 4 nella 2a edizione) e Fondamenti di Elaborazione statistica del linguaggio naturale di Chris Manning e Hinrich Schütze ( Capitolo 6).
Una libreria usata spesso per fare il modeling linguistico è SRILM - link e credo che progetti come come python NLTK ( link ) hanno anche strumenti per questo. In ogni caso, il particolare modello (pesi delle combinazioni di parole) è diverso per ogni lingua e dominio, quindi potrebbe essere qualcosa che devi adattarti.