Mercurial > hip
annotate README @ 24:5388c9950377 default tip
preview appears for main input box, timed
author | Maria Emerson <memerson@mozilla.com> |
---|---|
date | Wed, 23 Jul 2008 10:29:50 -0700 |
parents | cf0f9e6d383d |
children |
rev | line source |
---|---|
2 | 1 Humane Imperative Parser (HIP) |
2 | |
3 This is an interactive, primarily text-based command-line environment | |
4 in which users can enter information about an action they want to | |
5 perform, while receiving constant feedback from the interface to | |
6 ensure that the computer and user understand each other. | |
7 | |
8 The exact details of the environment are not set in stone; this could | |
9 be performed through ubiquitous quasimodal environment, as with Enso, | |
10 or it could be initiated from the URL bar of a web browser, a | |
11 contextual menu, or something else. The only elements required are: | |
12 | |
13 * a free-form text entry field, | |
14 * a suggestion pop-up window, | |
15 * a preview window that supports HTML content, and | |
16 * an optional current selection. | |
17 | |
18 Example commands that the user could enter include: | |
19 | |
20 "email A" such that A is a contact with an email address | |
21 | |
22 "fly from A to B" such that A and B are cities | |
23 | |
24 "fly to B from A" such that A and B are cities | |
25 | |
26 "fly from A to B on C" such that A and B are cities, C is an airline | |
27 | |
28 "fly on C from A to B" such that A and B are cities, C is an airline | |
29 | |
30 "fly here from A" such that "here" is the user's current selection | |
31 and A is a city. | |
32 | |
33 "reduce redeye in A" such that A is a picture | |
34 | |
35 "schedule 3pm dinner with bob tomorrow" | |
36 | |
37 "resize A to B" such that A and B are pictures | |
38 | |
39 "resize A to C" such that A is a picture and C is a dimension, and | |
40 a dimension is a number followed by "x" followed by a number | |
41 | |
42 Both of the "resize" statements may invoke methods on a "verb" | |
43 object, like so: | |
44 | |
45 resize_verb.preview(A, B, C) | |
46 | |
47 Returns HTML code for a "preview" of what the operation | |
48 will do, which is executed repeatedly after each | |
49 user input keystroke, starting from the point that it | |
50 is understood that "resize" is the verb to use (i.e., | |
51 once the user has typed in the string "resize "). | |
52 | |
53 resize_verb.execute(A, B, C) | |
54 | |
55 Actually executes the action. | |
56 | |
57 Other remarks: | |
58 | |
59 * Live feedback is key, so that the user knows what the computer | |
60 thinks he/she wants. This is the primary difference between the | |
61 HIP and existing linguistic parsers; the latter do not assume | |
62 continuous HC interaction during the creation of the statement. | |
63 | |
64 * Different suggestion lists may be used multiple times in the | |
65 creation of a statement. For instance, when a user is typing | |
66 "fly from chicago to san francisco", the suggestions "fly from" | |
67 and "fly to" may appear after the user has typed "fly"; once the | |
68 user has typed "fly from", there are no suggestions, but the preview | |
69 may tell to the user that they should enter the name of a city. | |
70 Once the user has typed "fly from c", a suggestion list that | |
71 includes a number of cities starting with "c" should show up. | |
72 | |
73 * Ambiguities are expected, and simply result in multiple options for | |
74 the user to choose from, but should hopefully be fairly uncommon. | |
75 | |
76 * Note that this is verb->noun. noun->verb is much harder b/c the | |
77 scope of possible options is enormous; specifying a verb first is | |
78 helpful because it specifies scope, which means that it's much | |
79 easier for the computer to help them out. | |
80 | |
3
cf0f9e6d383d
Clarified some things in the README.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
81 * it might be possible to do noun->verb in a limited fashion, if we |
cf0f9e6d383d
Clarified some things in the README.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
82 have a very constrained scope for the initial noun; for instance, |
cf0f9e6d383d
Clarified some things in the README.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
83 limiting it to very specific subset of options, e.g. dates, zip |
cf0f9e6d383d
Clarified some things in the README.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
84 codes, phone numbers, other numerically identifiable things with |
cf0f9e6d383d
Clarified some things in the README.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
85 very well-defined formats. |
2 | 86 |
3
cf0f9e6d383d
Clarified some things in the README.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
87 * it may also be possible to do noun->verb if the scope starts out |
cf0f9e6d383d
Clarified some things in the README.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
88 narrow and is expanded as the computer "learns" about what things |
cf0f9e6d383d
Clarified some things in the README.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
89 the user likes based on browsing history and command history. |
2 | 90 |
3
cf0f9e6d383d
Clarified some things in the README.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
91 * The interface should be habit-forming, so we'll need to carefully |
cf0f9e6d383d
Clarified some things in the README.
Atul Varma <varmaa@toolness.com>
parents:
2
diff
changeset
|
92 balance the dynamism of the system with its habituability. |