Potresti usare un approccio "forza bruta", in cui confronti la lingua generata con i dati raccolti su n-grammi di livello superiore ordine rispetto al modello Markov che lo ha generato.
Ad esempio, se la lingua è stata generata con un modello Markov del 2 ° ordine, fino a 3 grammi avranno le frequenze corrette, ma probabilmente non lo saranno 4 grammi.
È possibile ottenere fino a frequenze di 5 grammi da Google pubblica n-gram dataset. È enorme anche se - 24G compressa - è necessario farlo per posta su DVD da LDC.
EDIT: aggiunto alcuni dettagli di implementazione
I n-grammi sono già stati contati, quindi è solo bisogno di memorizzare i conteggi (o frequenze) in un modo che è veloce per la ricerca. Un database indicizzato correttamente, o forse un indice di Lucene dovrebbe funzionare.
Dato un pezzo di testo, scansionarlo e cercare la frequenza di ogni 5 grammi nel tuo database, e vedere dove si colloca rispetto agli altri 5 grammi che iniziano con le stesse 4 parole.
Praticamente, un ostacolo più grande potrebbe essere il termine di licenza del set di dati. Usarlo per un'app commerciale potrebbe essere vietato.
Mi piace questo approccio, ma penso che questo sarebbe computazionalmente irrealizzabile? – agiliq
Non vedo come, ha aggiunto alcuni dettagli alla risposta. – pufferfish