« Follow-up on topic models | Main | Confusing Sarah Palin (chatbot) »

Human Language Technology on Cellphones

There has been a lot of buzz lately about the new Google Android software, and the recently released G1 mobile phone (Warning: Flash) running that software. I thought this would be a good time to do some brainstorming about what kinds of AI, specifically natural language related, would be useful on a mobile device like a cellphone.

The first place I thought of is in the text messaging interface. Have you ever been texting someone and wanted to use the word 'me', and the word 'of' comes up? In all likelihood this is due to basic word distribution probabilities in the English language ('of' is used more often than 'me'). But in certain contexts, 'me' is much more likely. If I start a sentence with 'Pick', I'm more likely to follow with 'me' (as in "Pick me up") than with 'of' (as in, uh, "Pick of the litter"). This is a simple engineering trick, and it is used heavily in things like speech recognizers in trying to predict the next word. When using a single word of history to predict the next word, it is called a 'bigram model'. But more generally it is called an "N-gram model," which uses N-1 words of history to predict the Nth word in a sequence.

What would it take to do this? Well, first, I think to work best it would take a large dataset of text messages. While there is plenty of data to learn these statistics in things like newspaper datasets and speech datasets, text messages seem to have their own syntactic style and specialized vocabulary that should be learned. Since most of the phone companies are sending your private data to the government anyways, we might as well use it for learning statistics before they pass it along! In addition, keeping these statistics (bigram probabilities) takes up some amount of memory, but not prohibitively much (going further than bigram, however, may be prohibitive on a mobile phone). And since texting is much slower than speaking, the CPU power needed to keep up is probably not too much of a barrier either.

Another place for AI might be in learning usage patterns for making phone calls. For instance, a very simple change, which probably shouldn't be considered AI, would be to have your contacts list sorted by frequency of calling rather than alphabetically. On my phone, I spell my most-called contacts' names starting with a space so they appear at the top. But it would be trivial I think to implement this into the phone. But it could quickly get more complex by using a learning algorithm to figure out who I'm likely to be calling depending on time, location (specifically using GPS or triangulation from cell-phone towers, or more generally from my manually input home address), data in my calendar or planner, or other environmental factors. For example, I call my parents every Sunday night, I tend to call my friends and family on their birthdays, I am likely to call my friends in Milwaukee if I am in Milwaukee. These are just a few default "features" that probably apply to everyone, but a good learning algorithm could learn its own features, like noticing that I call my significant other in Minneapolis more often when I'm not in Minneaoplis.

So what would this feature take? Well, it would require a user to have lots of information in their phone, so that the learning algorithm can use whatever is relevant. Fortunately, with developer platforms like the iPhone developer's kit and the Android developer's kit (from Google), and improving access to data and the web, it should be easier for phones to get access to this data, simply by accessing your Google calendar or facebook friends (for example).

So, where else might AI be able to improve the user experience in mobile phones? What would it take to actually implement?