Mercurial > hip
changeset 2:7c040d675c3c
Added README
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Fri, 09 May 2008 17:42:24 -0700 |
parents | a31bdc4de955 |
children | cf0f9e6d383d |
files | README |
diffstat | 1 files changed, 92 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/README Fri May 09 17:42:24 2008 -0700 @@ -0,0 +1,92 @@ +Humane Imperative Parser (HIP) + +This is an interactive, primarily text-based command-line environment +in which users can enter information about an action they want to +perform, while receiving constant feedback from the interface to +ensure that the computer and user understand each other. + +The exact details of the environment are not set in stone; this could +be performed through ubiquitous quasimodal environment, as with Enso, +or it could be initiated from the URL bar of a web browser, a +contextual menu, or something else. The only elements required are: + + * a free-form text entry field, + * a suggestion pop-up window, + * a preview window that supports HTML content, and + * an optional current selection. + +Example commands that the user could enter include: + + "email A" such that A is a contact with an email address + + "fly from A to B" such that A and B are cities + + "fly to B from A" such that A and B are cities + + "fly from A to B on C" such that A and B are cities, C is an airline + + "fly on C from A to B" such that A and B are cities, C is an airline + + "fly here from A" such that "here" is the user's current selection + and A is a city. + + "reduce redeye in A" such that A is a picture + + "schedule 3pm dinner with bob tomorrow" + + "resize A to B" such that A and B are pictures + + "resize A to C" such that A is a picture and C is a dimension, and + a dimension is a number followed by "x" followed by a number + + Both of the "resize" statements may invoke methods on a "verb" + object, like so: + + resize_verb.preview(A, B, C) + + Returns HTML code for a "preview" of what the operation + will do, which is executed repeatedly after each + user input keystroke, starting from the point that it + is understood that "resize" is the verb to use (i.e., + once the user has typed in the string "resize "). + + resize_verb.execute(A, B, C) + + Actually executes the action. + +Other remarks: + +* Live feedback is key, so that the user knows what the computer + thinks he/she wants. This is the primary difference between the + HIP and existing linguistic parsers; the latter do not assume + continuous HC interaction during the creation of the statement. + +* Different suggestion lists may be used multiple times in the + creation of a statement. For instance, when a user is typing + "fly from chicago to san francisco", the suggestions "fly from" + and "fly to" may appear after the user has typed "fly"; once the + user has typed "fly from", there are no suggestions, but the preview + may tell to the user that they should enter the name of a city. + Once the user has typed "fly from c", a suggestion list that + includes a number of cities starting with "c" should show up. + +* Ambiguities are expected, and simply result in multiple options for + the user to choose from, but should hopefully be fairly uncommon. + +* Note that this is verb->noun. noun->verb is much harder b/c the + scope of possible options is enormous; specifying a verb first is + helpful because it specifies scope, which means that it's much + easier for the computer to help them out. + + * it might be possible in a limited fashion, if we have a very + constrained scope for the initial noun; for instance, limiting it + to very specific subset of options, e.g. dates, zip codes, phone + numbers, other numerically identifiable things. + + * if this scope starts out narrow and is expanded as the computer + "learns" about what things the user likes (e.g., movies, books, + friends in address book, but not recipes) based on browsing + history and command history then this may work too. + +* This should be habit-forming, so we'll need to carefully balance the + dynamism of the system with its habituability.