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.