2010-05-11 17 views
10

Un pappagallo impara le parole e le frasi più comunemente pronunciate nelle sue vicinanze in modo che possano ripeterle in momenti inappropriati. Quindi, come creeresti una versione del software? Supponendo che abbia accesso a un microfono e possa registrare suoni a proprio piacimento, come si codificherà senza richiedere risorse infinite?Quale algoritmo useresti per codificare un pappagallo?

Il meglio che posso immaginare è dividere il flusso utilizzando i silenzi nel suono e quindi utilizzare un riconoscimento di pattern per codificarli come una lista di token, memorizzandone di nuovi quando li si incontra. Hashing le sequenze di token e il conteggio delle occorrenze in un database, è possibile creare un'immagine delle frasi pronunciate più frequentemente. Ma data l'enorme varietà di frasi, come puoi evitare che questo diventi una lista enorme? E il semplice numero di coppie da abbinare genererebbe sicuramente molti falsi positivi dalla natura combinatoria della corrispondenza.

Utilizzeresti una rete neurale, dal momento che è così che un vero pappagallo la gestisce? O c'è un altro, più intelligente modo di abbinare modelli su larga scala nei dati analogici?

+1

Il negozio di animali vicino a me ha un pappagallo che dice "ciao" e "addio" quando le persone entrano e escono dal negozio, così anche il pappagallo imitava il contesto di comprensione. –

risposta

0

forse - non tentare di memorizzare ogni clip separatamente, invece, fare una partita di somiglianza con il numero di destinazione che si desidera imparare dire forse una dozzina ... modo in viene un suono - si abbinano a quella più vicina della dozzina che stai monitorando - e quando trovi uno schema sufficiente per uno di questi, media questo nuovo suono nella versione memorizzata - dando una nuova versione ...

se il suono in arrivo non corrisponde a quello memorizzato - buttalo via.

il bootstrap sarebbe la parte più difficile - distinguere il numero iniziale di frasi di destinazione ...

comunque - la parte superiore della mia testa. hth

3

It's been done, tipo.

Modifica: OK, poiché i furbys sono fuori, ho intenzione di suggerire un tipo di soluzione Gordian-nodo. Collega una scatola con un altoparlante e un microfono e inserisci un vero pappagallo. Funzionerà alla grande per la demo e, una volta che avrai le mani su un capitale di rischio, potrai iniziare a lavorare sulla tua versione neurale. Le reti neurali (come sono state implementate fino a questo punto) sono praticamente inutili, ma dovrebbero essere abbastanza buone da permetterti di superare la demo del secondo round, e a quel punto sarai troppo grande per fallire.

+0

Dall'articolo: "C'era un malinteso comune che ripetessero le parole pronunciate intorno a loro" – interjay

+1

@interjay: la parola chiave è "comune", cioè non sono l'unico idiota a pensare che furbys ripetesse ciò che veniva detto intorno loro. Immagino che * il mio * furby abbia preso tutte quelle parolacce da qualche altra parte - wow! – MusiGenesis

2

Probabilmente userei le catene Markov per emularlo.

Se non avete utilizzare catene di Markov per generare naturale testo casuale (o discorso), consulta la Fun With Markov Chains

2

come si fa a evitare questo solo diventando una lista enorme?

Suppongo che si possa mantenere un elenco limitato di parole recenti e una lista infinita di parole frequenti. Se il pappagallo sente una parola che non ha sentito prima, viene memorizzato nella sua "memoria a breve termine". Se sente di nuovo la parola, può spostare la parola nell'elenco di parole frequenti e memorizzarla indefinitamente. Di tanto in tanto, puoi eliminare l'elenco delle parole recenti che contengono solo parole o suoni che il pappagallo ha sentito solo una volta.

+2

Oppure invece di eliminare, utilizzare una cache FIFO, in cui una ripetizione di una frase la spinge fino alla fine dell'elenco, quindi rimane nella cache più a lungo. –

Problemi correlati