Thursday, April 13, 2006

text input

Distilling meaning from text that users enter into arbitrary text input fields is going through some good iterations these days. I see three general buckets of "smart entry fields"; you could build six permutations of them if you consider client-side and and back-end-side versions of each, but, for the purposes of this post, I'll assume it's irrelevant whether the logic crank gets turned on the client vs. the back-end.

Auto-completion:
This kind of smart entry field simply relies on historic entries, and matches text you type, to things that entry field has already had typed into it. Examples of this would be spreadsheet cells, web form managers that browsers have built-in, and the URL bar in a browser. I had the distinct pleasure of writing the first web browser auto-complete implemetation; it was released in Netscape's 4.x browser. Auto-completion is handy, for repetitive tasks, but is horribly simplistic. A more interesting "smart entry field" is described next.

Intelligent intent derrivation:
This kind of "smart entry field" has a lot going on behind the scenes. Once text has been "entered," that text is sliced and diced through complex grating algorithms and statistical analysis, in an attempt to derrive the meaning of the user's intent. Search boxes (such as those found at common search sites) are good examples of this (note: that there are obviously many search boxes that are "dumb" and simply look your words up in an index.). Once you search for some text in a search engine, that text is checked for spelling, more popular word ordering/pairing, synonyms, and is dis-ambiguated. The latter concept is pretty neat in that the system will try and figure out if your search for "eagles" meant "eagles the music band," "eagles the bird," "eagles the football team," etc. Sometimes text can be dis-ambiguated, and sometimes not; at a minimum however, the user can be asked a follow-up question asking what their intent actually was. The last type of "smart entry field" is the one that's in the lime-light right now; I'll call it "contextual parsing."

Contextual Parsing:
This kind of "smart entry field" assumes some general context before it ever gets started. Two good, public, recent, examples of it would be the web-based calendar applications at 30boxes ("one box"), and Google ("quick add"). These smart entry fields consider things you type into them under the guise of calendar/event related text. For example, it's pretty simple to deduce what "Jon's Birthday party at 9pm tomorrow" means in terms of a calendar application. The power of contextual parsing is significant considering it doesn't have to solve the most generic problem of them all: did I mean eagles the bird, the band, or the football team. As I've noted in a previous blog entry, I think it's silly trying to solve "intelligent intent derrivation" given our current set of tools and math.

These all have the advantage of severely minimizing the number of UI elements that can sometimes crop up in order to decipher the user's intent, and gain context. For example, "check this checkbox if you want to search the web, or site.com."

I like what I'm seeing w/ the evolution of entry fields.

No comments: