Quali algoritmi possono essere utilizzati per ottenere una previsione della parola successiva ragionevolmente buona?


10

Qual è un buon modo per implementare la "previsione della parola successiva"? Ad esempio, l'utente digita "I am" e il sistema suggerisce "a" e "not" (o eventualmente altri) come parola successiva. Sono a conoscenza di un metodo che utilizza Markov Chains e alcuni testi di addestramento (ovviamente) per raggiungere più o meno questo obiettivo. Ma ho letto da qualche parte che questo metodo è molto restrittivo e si applica a casi molto semplici.

Comprendo le basi delle reti neurali e degli algoritmi genetici (anche se non li ho mai usati in un progetto serio) e forse potrebbero essere di qualche aiuto. Mi chiedo se ci siano algoritmi che, dati il ​​testo di addestramento appropriato (ad esempio articoli di giornale e la digitazione dell'utente) possano fornire suggerimenti ragionevolmente appropriati per la parola successiva. In caso contrario (collegamenti a) algoritmi, i metodi generali di alto livello per attaccare questo problema sono i benvenuti.

Risposte:


9

Dai un'occhiata a n-grammi . Un n-grammo è una sequenza di nparole. Nel tuo caso vuoi nesserlo 3, dal momento che hai bisogno di due query wordse un resulting word. Un 3 grammi sarebbe ad esempio "Sono stanco", un altro "Sono felice".

Ciò di cui hai bisogno è una raccolta di questi 3 grammi che vengono raccolti nella tua lingua di destinazione, ad esempio l'inglese. Dal momento che non puoi collezionarlo su tutto ciò che è mai stato scritto in inglese, devi effettuare una selezione. Quella selezione di testi rappresentativi è chiamata a corpus. Se il tuo corpus è buono, ti dirà quante volte una sequenza di tre parole specifiche si verificano insieme in inglese. Da ciò puoi calcolare la probabilità di un 3 grammi.

La raccolta di questo tipo di dati è la parte più difficile. Una volta che hai l'elenco di tutti i 3 grammi insieme alla loro probabilità, puoi filtrare l'elenco di tutti i 3 grammi a partire da "I am". Quindi ordina tutto questo elenco per probabilità e voilà: la tua previsione.


Va bene, e c'è un valore ottimale nche produce buoni risultati? Non sempre deve essere la terza parola che è previsto, si vede
yati sagade

2
Bene, un più grande nproduce un elenco più lungo che ti darà una previsione più precisa ma è anche più costoso da cercare. Quindi è un compromesso tra precisione e tempo di calcolo.
sebastiangeiger,

2
Inoltre, è necessario un corpus più grande perché n-grammi più grandi siano praticamente utili.
liori,

4
ehm, questa è letteralmente una catena di Markov ... non solo, ma letteralmente l'esempio più da manuale ...
Justin L.

2

Sembra che il dominio problematico sia un sottoinsieme della ricerca di stringhe. Estendendo le parole per includere spazi bianchi, qui è possibile applicare la corrispondenza delle stringhe fuzzy.

Potresti voler considerare / consentire tutti gli input dell'utente come una sola parola durante l'allenamento oltre al dizionario. Ciò consente di suggerire la parola successiva, ma suggerisce anche il completamento automatico di parole o frasi.

Ecco un collegamento a una raccolta di algoritmi di ricerca di stringhe fuzzy

http://ntz-develop.blogspot.com/2011/03/fuzzy-string-search.html


1

Stai cercando un modello di linguaggio (statistico) .

Un modello di linguaggio statistico assegna una probabilità a una sequenza di m parole P(w_1,...,w_m)mediante una distribuzione di probabilità ...

Nel riconoscimento vocale e nella compressione dei dati, un tale modello cerca di catturare le proprietà di una lingua e di predire la parola successiva in una sequenza vocale ...


Wow. Ma penso che la risposta di @ sebastiangeiger spieghi questo per n = 3.
Yati Sagade,

La sua risposta descrive un particolare modello linguistico, vale a dire i modelli n-gram. Esistono altri modelli linguistici, ad es. Modelli sintattici ( goo.gl/ffPOg ).
user3287
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.