November 04, 2004
Lisp and IM
Gordon Weakliem mentioned the idea of combining Lisp, instant messaging and natural language understanding.
Riaan has a post on natural language recognition over IM systems. I've been casually reading Peter Norvig's PAIP and it's occurred to me that this is one of those applications that Lisp is great at. I've even thought about trying to build an MSN Messenger front end for Norvig's ELIZA implementation as a proof of concept.
When I worked at I/NET, we did this.
Echo screenshot, from Will's portfolio
Echo was a system monitoring tool that used natural language as its primary interface. Notifications, queries and even steps to be taken to try to solve problems were communicated in pretty natural English. Instant messaging was just another communications channel along with email, web forms and SMS text messages. You could even call up Echo on the phone and converse with it.
The natural language understanding engine was certainly the most complex part of the system, and was in fact written in Lisp (at least when I worked on it).
I'm confident there's plenty of interesting developments that will come out of IM as it evolves. I'm less sure that they'll involve natural language understanding, because I think that natural language interfaces that require people to type are only useful and appropriate in very narrow circumstances; in most contexts even a web form is probably superior.
Coincidentally, I recently took a little time to clean up the AIM client code that Echo used, which has been packaged as a project called CLAIM. CLAIM 1.1 works in OpenMCL, SBCL, LispWorks and ACL, and for your convenience is ASDF-INSTALLable.
Posted by jjwiseman at November 04, 2004 09:23 PM
Wow, CLAIM sounds really cool. The reason I thought of MSN messenger is that I assumed it would have a nice COM API that would be easy to get at from ACL, but it turns out that the API isn't that nice after all.
I'm not sure about a natural language interface myself, you'd need either a narrow domain or really have to fool the user on the other end. I HATE the speech recognition systems that companies are starting to use for telephone support these days. But I think a big part of that is that you know you're talking to a machine, it would be much nicer if it just said "how can I help you?" instead of making you listen to the whole damned menu. Or at least revert to the touchtone system if you said "shut up".
Two years ago, during the heat of the summer, I called Sears to begin a quest for an air conditioner. When I called one of those voice systems picked up and asked me to simply state what I wanted or how it could direct my call. I said "Air Conditioners" and the phone was transferred to the correct guy in the appliance department.
But last summer I had to deal with Sony technical support (shudder) and the phone system there wanted me to speak my serial number (which has a lot of alphabetic letters in it). Each time I called I had to speak my serial string, but despite trying to speak slowly and clearly it never once got it. After three frustrating attempts the system would give up and transfer me to an operator who would dutifully take down the number and put me on hold again. We went through this little dialogue every time I called.
Wouldn't it be easier to use gateway programs to nicer (imho) protocols? Bitlbee can translate many IM protocols (MSN, Yahoo, OSCAR, maybe some others i don't remember) to IRC and back. It also means we don't have to reinvent the wheel every time, and that when we do, we can easily make others benefit from it. I know that's what I'll use if I ever want to interface through IM.
BTW, I just tried spleak (http://www.spleak.com/), and it feels like a clumsy command line (much more modal, modes not explicit nor easy to predict, and more typing for the same effect) that tries to be user-friendly. Not extremely useful in its current form, to say the least. I guess the crush escrow (it only tells the person you've a crush on if s/he has one on you too) service could be popular with middle schoolers, with a good marketing campaign. Given such a target population, I suppose the system is acceptable, unlike a good command line.