Help the user enter a sentence
The aim of Natural Language Interaction systems is to interact with a human user in an intuitive way. A big problem is that it can handle only a subset of all sentences the user can enter. And the user does not know which types of sentences are allowed, and which are not. He or she can therefore easily get frustrated or at best underestimate the full potential of the system. I suggest therefore that the user should be guided when he enters a sentence. The system should show all available alternatives on every word the user enters.
This is what such a system looks like when the user first views the form:
He can start typing immediately, but he can also select one of the alternative first words of the sentence. When he types 'where' and hits space, or when he selects a word from the dropdown, the next input field is entered and the next dropdown opens:
The dropdown responds to user input as he types. The words in the dropdown are not fixed, but they are filtered in response to the words that the user chose earlier in the sentence. Also note that the width of the active input field resizes when the user types: it adapts to the size of the word.
When the user enters a position where a name is expected, it may no longer be possible to list all possible values. But we can still give a hint:
Once the user starts typing, possible alternatives may be loaded from the server and be shown, like this:
This presents an important advantage to plain input fields: the user can see some suggestions based on partial input. So if he doesn't know if the name was "Broderik" or "Broderick", he can see it. Also, the system may provide hints between brackets for different persons with the same name. The user would normally not have known how to specify this and the system would have to disambiguate later.
When the sentence is complete, there are no more options, and the user can press "Ask" to enter it.