13 March 2006

Learning Elmospeak

Toys are fun and toys that you can modify or extend (e.g. LEGO) expand everyone's imaginations. After seeing someone's attempt to hack Elmo, I had to try myself.





Casey points toward the innocuous file "temp.inf". In temp.inf we can see a grammar, of sorts, for Elmospeak. For me, I'm interested in what language Elmo speaks (I call it Elmospeak). With stripping out extraneous bits, we're left with a bunch of non-terminals of the form PL_# -> SOUND1 SOUND2 ... SOUNDN, where # is an integer between 1 and 620 and SOUNDN is some terminal associated with a particular sound (generally a word or generic phrase). Also, an [NMSEC] terminal "plays" silence for N milliseconds. Here is an example production:

PL_059 -> ONE [150MSEC] TWO [100MSEC] THREE


Further, there are GAME and STORY non-terminals that expand to any number of non-terminals and terminals. But, this has all been said before. Let's instead consider learning Elmospeak. Overall, Elmospeak is a regular language and regular only because of its perceived finiteness, I think. In my experience with Elmo, the same utterance is heard each time a conversation begins. From there, with some probability, a non-terminal is selected from a subset of non-terminals. The problem is that there doesn't appear to be any nondeterminism in Elmo by default. Right now I'm experimenting with adding nondeterminism to Elmo and seeing just how productive Elmo can be.

0 Comments:

Post a Comment

<< Home