The Inform 7 interactive fiction system parses human readable English assertions and builds an interactive system from your statements. I have only played with it briefly, but take the following example:
"Test" by Jason The Foyer is a room. The crate is in the Foyer. The crate is a Container. The player is in the crate. The crate is closed. The crate is openable. The latch is in the crate. The latch is fixed in place.
With the above we have created a very simple world. There is a Foyer with a crate in it. The crate is closed and it can be opened. We (the player) are in the box, and there is a latch in here with is.
An interactive world is created for us automatically:
Test An Interactive Fiction by Jason Release 1 / Serial number 090419 / Inform 7 build 5U92 (I6/v6.31 lib 6/12N) SD Darkness It is pitch dark, and you can't see a thing. >feel (the crate) You feel nothing unexpected. >look Darkness It is pitch dark, and you can't see a thing. >open crate You open the crate. Foyer (in the crate) In the crate you can see a latch. >look Foyer (in the crate) In the crate you can see a latch. >take latch That's fixed in place. >
Granted, interactive fiction represents a rather narrowly defined world. I still cannot help but ask, "what other kinds of domains could benefit from this kind of natural language processing?" It seems that any effort to make a general purpose programming language that is "natural language" ends up looking like COBOL.
Perhaps the open source world could benefit from a free sentence diagramming system? With an English natural language parser library we could build heuristic systems around natural language which can make best guesses at the user's intentions and be able to enhance overall usability?
It is something to think about, perhaps. I know that grammatical error checking is generally missing from open source word processors. With an open source sentence diagrammer Open Office could at least alert the user if it was unable to parse a sentence and give the user an idea that something might not be right.
Comments
Domain Specific Languages
What you're describing isn't exactly natural language processing. Rather, it's a domain specific language that has a very English-like syntax.
Some good references for DSLs:
http://martinfowler.com/dslwip/
http://www.pragprog.com/titles/tpantlr/the-definitive-antlr-reference
Or, if you prefer video:
http://msdn.microsoft.com/en-us/oslo/videos.aspx#dsl
The topic has been hot for a few years now, with the steady hope that more and more programming can be spread into stratas:
[DSL users] ~large group
[core programmers] ~tiny core
In the same way that Lua or LISP are used as a way to drive the core engine to do things, DSLs give the programmer a way to open up the core technology to experienced users who are otherwise laymen programmers (though not always, DSLs can also be used to quickly write new code).
Back to your example, I think Inform's approach is pretty slick, though I haven't studied it very deeply. At first glance it sounds like a great place to jump off creating DSLs for "normal people".