Whitelaw: Hi. My name is Casey Whitelaw. I'm the Tech Lead for the Natural Language Processing Group here in Sydney, and today I'm gonna talk to you a little bit about some of the cool things that we've added to Google Wave. So one of the main things that we want to stay focused on in Google Wave is productivity. We want users to be able to stay productive, whether they're reading or whether they're writing. One of the ways that we've done that is with our spell correction system. What we'd like is for users just to be able to focus on what they're typing and not worry about whether there's any mistakes they've made. We think that if people could just loosen up a little bit and, you know, or maybe type 5% faster, then that's 5% less time that they spend typing. So I'll start with an example. It's probably the easiest way to explain. Let's say you want to meet up with one of your friends. You're having a chat. So you write... Let's... met... whoops... tomorrow. So here you see I've made a mistake. I've written met instead of meet here. My finger slipped on the "e." So now, the way that we implemented spelling is we introduced an automatic participant called Spelly who works just like another user that's participating on the wave with you. So Spelly's on your wave with you, and it can see that you've typed "Let's met tomorrow," and it's now gonna try and spell-check it. For each word... it doesn't have any kind of dictionary, so it doesn't know whether met is a well-spelled word or a misspelling. So to start with, it comes up with a list of possible candidate corrections for this word. So some examples of that might be... meat, the food... or meet, the correctly spelled version of this. And you can imagine lots of others. So set or net or me-- all kinds of different words that we would evaluate to see whether they're what you actually meant to type. We've learned from the web the kind of misspellings that people make and which things are more and less likely. So we know that, for instance, maybe slipping and inserting an "A" is relatively likely, but misspelling the very first letter might be less likely in this case. So we've got some suggestions, and the next thing that we do is evaluate these suggestions in context. So there are other systems at Google that already use the same kind of statistical language models as this, such as the Google translation system, that essentially encode information about how language is used. These are learned from the web from looking at billions of web pages, so we get a really good idea about the way that people really use language in practice. So what we would do is look at the likelihood of "Let's met tomorrow" and "Let's meat tomorrow," less likely, and "Let's meet tomorrow," which is gonna be more likely than either of these. And we combine that with our error model which tells us how likely the misspellings are, you know, without any context, to get a final determination as to what are the most likely words-- most likely word that you meant right here. So in this case, we would suggest meet. Once we think that a word is misspelled, we need to get that back to the Google Wave client so that the user can actually see it and either correct it automatically or manually. Two kinds of ways that this differs from existing spelling systems. One of them is just that it's hosted. And this means that we can do this same kind of spelling for you, regardless of which device you're connecting from. So whether you're on your laptop or your mobile or your desktop, we can give the same quality spelling, regardless. And that applies across languages too, so, you know, we're doing this for other alphabetic languages also. So like I said, we use large statistical language models. When I said large, you know, we train them from billions of words. They end up being many, many gigabytes. It's pretty infeasible to run these on a single machine, which isn't such a problem in a data center where you can have a set of machines running a language model and a spelling model together. And then we can share that spelling model between many users so that the cost per user is very low. So it's very efficient for us to do this. Once you realize that you've got a system that supports collaborative editing, that has structured data, and that you can change the user interface by having remote participants, then, really, the sky's the limit. I mean, there's all kinds of existing natural language technologies like spell checking or translation that we can apply, and we're seeing a lot of new applications as the way that we communicate changes as well. So, you know, really, it's gonna be exciting times.