For me this is why new languages such as Rust, Go and so on don't really interest me; sure they fix a lot of problems with some new structures, but the real power is a language which can infer structure from your inputs. I believe in the future we would write software like researchers currently write thesis'; separating out functionality into separate document sub sections, and then using natural language to build the idea up over the course of a number of pages.
Most of that simplicity comes from the years of built up information and context you have. You can just say "want to go to the movies?" And be understood because that person knows of your dropped "do you" in "do you want", that "to the" very likely means "via motorized transport in either an independent or shared manner" and that "the movies" refers to a physical theatre, with a to-be determined showing.
NLP is a huge field and even the big names in the industry (Google, for example) are far off from anything resembling basic communication, beyond preset responses/dialogue trees.
The fact of the matter is, you're probably not getting anything resembling intelligent human communication, til we have AI. Something that can think for itself and create true context.
For the minute I think NLP systems are best off politely declining and staying home to troll Twitter
> kill the man
> the one with the knife
I don't see that here.
> kill the man with the knife
You don't have the knife.
and so on...
What you refer to as preset is not strictly hand written, is it?
ambigious phrase or phrase token -> multiple possibilities the parser can handle -> multiple possibilities from the requester -> repeat until you've dialed down to a single possibility.
It's a big part of what the Machine Learning guys and the NLP guys are doing. But, as mentioned, there's very little context for a computer to work with...so everything is very specific. "google, find me movie theatres in the area" vs "i wonder what movies are around. do you have any ideas google?".
You might want to take a look at behavioral programming. It is the brainchild of David Harel, who since the eighties has worked on designing programming paradigms that allow specifying very complex systems in a natural way. One of his older ideas -- hierarchical state machines -- is nearly ubiquitous today in languages for fully verifiable, safety-critical real-time reactive systems.
Natural Language is only as unstructured as their speakers. Going by that measure, a lot of programs are unstructured, although the languages they are written in are not.
A more interesting notion, that I don't really understand either, is that language is necessarily underspecified.
Yes and this is because our programming languages aren't as advanced as natural languages, not yet.
Did you just compare computer systems as being as complex as figuring out the meaning of life and the universe?
Law is written in a way that is unambiguous as possible. Additionally it's a lot more complicated then simply running the same logic over and over when you are dealing with real peoples lives.
Ah, 2001. Thanks for posting this, I hadn't come across this.