Does Google Wave herald the arrival of natural language interaction with computers?
I've been spending some time recently thinking about Google Wave, and how it can be useful as a method of communicating and working with multiple participants at the same time, which is what Wave is for, but with a robot as one of those participants. Wave provides an easy way to incorporate a computer participant in a conversation with people, getting it to receive all updates to the wave and provide its own input. By doing this it makes performing workflow like tasks much easier, and brings the computer system into the conversation with the humans, rather than having the humans interact with a computer system.
In my example, everybody has a "manager" to which their leave application must be sent before it can be approved. The bot would detect when you were finished with your application and automatically add in your manager for approval. This works great, but it needs to know who your manager is. This information is stored in the HR system, which has its own user interface and logins and whatnot. If you change manager, somebody with admin privileges on the HR system would need to go in and change your record in that UI. This breaks the paradigm of bringing the computer into the conversation with humans.
For my demo, I was planning on writing a little user interface for my bot. It was going to be a web application which allowed any user to go in and play with their manager, so that they could try out the different permutations of the workflow. Then I got thinking: Why should somebody need to leave the conversation in wave to make changes to the leave system? Why should they have to interact with yet another user interface? I already had put in some basic capability for it to tell you your leave balance if you asked it, so why not extend that even further?
Imagine the following scenario:
Bob is having a discussion with Jane about planning for the next release of their product on google wave. They have a query about upcoming leave for the staff because they might need to cancel leave in order to meed deadlines. In order to do this, they have to get a list of users on the project, log onto the HR system, and perform queries on each of those users. They went to the HR systems world, rather than bringing the HR system into their conversation.
Wouldn't it be cool if Bob could talk to the HR system instead? he could add the HR bot to the wave, and say something like:
Hey HRBot, what is the upcoming leave for the following users:
The bot could then parse the question, send the request to the HR system web services, and provide a response directly in the wave so that both Bob and Jane can see the results. Any leave requests would be listed as links to the request waves that submitted those requests, so Bob could quickly check to see how important that leave is or ask the users if it is okay to cancel that leave.
People have been trying to get natural language systems going for decades, and its still really really hard. When I was a postgraduate student, I entered the Loebner Prize competition with a colleague of mine, Jason Hutchens. The purpose of the Loebner Prize is to encourage people to write a bot that is capable of fooling humans that they are talking to a person instead of a computer. This is impossibly difficult of course, and pretty silly really as Marvin Minsky has pointed out, but its a good bit of fun to write a chatterbot. The bot that comes closest to being human wins an annual prize of $2000. Natural language processing was Jason's area of research and he had won the prize before so we decided we'd have a crack.
We lost (curse you Ellen Degeneres!), but sold the software to a german company that wanted to put chatterbot robots on company's web sites as level-0 helpdesk for a sum considerably more than we would have won as prizemoney. In the end, they had difficulty in selling the software and I don't think it ever really went anywhere. The range of language that the bot was expected to deal with was very broad which makes parsing it exponentially more difficult, plus websites those days weren't really sophisticated enough to support that level of interaction.
These days, I think there is more of a case for using natural language parsing bots within narrow contexts (to keep the complexity down). Salesforce have an interesting demo which shows the sort of thing that I am talking about within Wave. They talk about customer interaction, but I think it will be more useful within an organisation.
In the future, I think we'll see more and more of these bots participating in our business practices. They can enrich the information we type (for example, by putting in contextual links into what we type, bringing up supporting reports and figures when we are performing tasks, that sort of thing), plus they can become active participants in the procedures while still giving us control over what is going on.
P.S. I feel terrible that I have used cancelling leave as an example here. I would never advocate cancelling leave as a valid project management technique. Its a terrible thing to do to your staff, and you should never do it. Its only used as an example.