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

10

Che cosa è un buon modo per implementare la "previsione della prossima parola"? Ad esempio, l'utente digita "I am" e il sistema suggerisce "a" e "not" (o forse altri) come parola successiva. Sono a conoscenza di un metodo che usa le catene di Markov e un testo di addestramento (ovviamente) per raggiungere più o meno questo risultato. Ma ho letto da qualche parte che questo metodo è molto restrittivo e si applica a casi molto semplici.

Capisco 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 degli algoritmi che, dato un appropriato testo di formazione (ad es. Articoli di giornale e la digitazione dell'utente) possono fornire suggerimenti ragionevolmente appropriati per la parola successiva. Se no (collegamenti a) algoritmi, i metodi generali di alto livello per attaccare questo problema sono i benvenuti.

    
posta yati sagade 12.05.2012 - 16:49
fonte

3 risposte

9

Dai un'occhiata a n-grammi . Un n-gram è una sequenza di n parole. Nel tuo caso vuoi che n sia 3 , poiché hai bisogno di due% diquery words e di un% diresulting word. Ad esempio, un 3 grammi sarebbe "Sono stanco", un altro "Sono felice".

Ciò di cui hai bisogno è una raccolta di questi 3 grammi che vengono raccolti sulla tua lingua target, ad esempio l'inglese. Dal momento che non puoi raccoglierlo su tutto ciò che è scritto in inglese, devi fare una selezione. Questa selezione di testi rappresentativi è chiamata corpus . Se il tuo corpus è buono, ti dirà quanto spesso una sequenza di tre parole specifiche si verificano insieme in inglese. Da quello puoi calcolare la probabilità di un 3 grammi.

La raccolta di questo tipo di dati è la parte più difficile. Una volta che hai la lista di tutti i 3 grammi insieme alla loro probabilità puoi filtrare la tua lista a tutti i 3 grammi iniziando con "I am". Quindi ordina questa lista per probabilità et voilà: la tua previsione.

    
risposta data 13.05.2012 - 08:18
fonte
2

Sembra che il dominio del problema sia un sottoinsieme della ricerca stringa. Estendendo le parole per includere spazi bianchi, è possibile applicare la corrispondenza stringa sfocata qui.

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

Questo è un link a una compilazione di algoritmi di ricerca stringa fuzzy

link

    
risposta data 12.05.2012 - 18:01
fonte
1

Stai cercando un modello di lingua

(statistico)

.

A statistical language model assigns a probability to a sequence of m words P(w_1,...,w_m) by means of a probability distribution...

In speech recognition and in data compression, such a model tries to capture the properties of a language, and to predict the next word in a speech sequence...

    
risposta data 01.06.2012 - 06:14
fonte