Ciao persone Sto implementando la tecnica di livellamento Stupid Backoff (pagina 2, equazione 5) per un progetto su cui sto lavorando e ho una domanda sulla sua implementazione. Questo è un algoritmo di smoothing utilizzato in NLP, Good-Turing è l'algoritmo simile più noto.Chiarimento dell'implementazione Stupid Backoff
Una breve descrizione dell'algoritmo è: Quando si cerca di trovare la probabilità che la parola appaia in una frase, prima cercherà il contesto per la parola al livello di n-grammo e se non ci sono n-grammi di quello la dimensione sarà recurse al (n-1) -gram e moltiplicherà il suo punteggio con 0.4. La ricorsione si ferma a unigrams.
Quindi, se voglio trovare la probabilità di "giorno" nel contesto di "una giornata di sole", prima cercherei di vedere se il tri-grammo "una giornata di sole" esiste nel corpus, altrimenti sarebbe prova lo stesso con il bigram "giornata di sole" e alla fine otterrebbe solo la frequenza di "giorno" divisa per la dimensione del corpus (numero totale di parole nei dati di allenamento).
La mia domanda è: faccio a moltiplicare il punteggio con 0.4 ogni volta che riduco la dimensione del n-grammo?
Quindi, nell'esempio di cui sopra, se non siamo in grado di trovare un tri-grammo o bi-gram il punteggio finale sarebbe:
0.4 * 0.4 * frequenza (giorno)/corpus_size?
oppure mi limito a moltiplicare una volta al livello finale quindi indipendentemente da quanti backoff devo fare, ho solo moltiplicato il punteggio finale con 0.4?
sì, moltiplichi ogni volta –