Mercurial > hip
view README @ 3:cf0f9e6d383d
Clarified some things in the README.
author | Atul Varma <varmaa@toolness.com> |
---|---|
date | Mon, 12 May 2008 13:53:10 -0700 |
parents | 7c040d675c3c |
children |
line wrap: on
line source
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 to do noun->verb 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 with very well-defined formats. * it may also be possible to do noun->verb if the scope starts out narrow and is expanded as the computer "learns" about what things the user likes based on browsing history and command history. * The interface should be habit-forming, so we'll need to carefully balance the dynamism of the system with its habituability.