From what I read, I don't really see a robust NLU engine here. I see a probabilistic transformation engine (maybe bootstrapped with some linguistic data structures) that identifies 7 buckets and then rephrases the query or request into a format better suited to achieve the desired result in that engine.
This isn't too far from saying that you have a search engine that "knows" how to answer questions, because you have hard-coded it to omit question words and transform question phrases into something declarative in hopes of finding the best match (e.g. "What is the largest mountain in Asia?" --> "The largest mountain in Asia", and then list the top search result from Google).
There's this tremendous amount of pragmatism that goes into some of the example questions, too. If I ask someone if they can recommend a good sushi place, personally, I'm probably more interested in the best sushi hit they've ever had than whether then place I can walk to from work is decent. You're going to have to make a lot of assumptions that you cannot adequately contextualize to take a broad question like that and say "Well, here are two within two blocks of you." I might actually be ranking proximity lower than, say, quality, popularity, or memorability. By hard-coding such assumptions into your reasoning, you're not in the trade of understanding natural language; you're in the trade of doing exactly what Bing does now, at a smaller scale, with a few more buckets.
If you're really into building NLU, I have a few somewhat snarky suggestions for you:
1) Swing by a cryogenics facility and check back in with us in 20-30 years. Repeat until cognitive scientists have figured out a way to transform human thought into something that can be quantified and transformed into words.
2) Do some reading in cognitive science to understand the immensely difficult problem it is to quantify meaning, both within the context of a discourse as well as discourse-agnostic (archetypal meaning versus contextualized meaning). Look at some charts, and realize that word meaning is not only relative to other words in the same discourse, but other words in shared classes.
3) Read up on Grice, and understand that, despite his philosophical approach to linguistics, his points on implicature and the value of what goes unsaid in a conversation lend as much to context as what goes said. Then try to sit back and figure out how to program and analyze what's going unsaid in a search query.
What I'm trying to say is that I would do nothing with this API because I can't trust it to deliver on its very lofty promises. Natural language understanding is essentially a pipe dream in the current state of computer science and bioinformatics. Word meaning is so idiosyncratic that it is a miracle that humans can generally agree on what a word represents; most of these are extremely fuzzy, and cannot be divorced from the contexts in which they are uttered. It's far too difficult to contextualize even a sentence outside of a pure information retrieval standpoint.
I appreciate what you're aiming at here, but I doubt you'll ever be able to succeed at it. That being said, if you rephrased it into something like a decision engine, I probably wouldn't be so irritated by it, and might even give it a shot.
I feel that you have misunderstood what we have here. I agree that "true" understanding requires is almost an impossible problem to solve due to the fact that it requires context that is only available to the individual. However that level of understanding is not really necessary for applications today. What we are aiming to provide is a system that will allow developers to have natural language queries as their input and have all the pieces of information required for their application extracted. Secondly, the name "natural language understanding" is given to a large area of computer science ranging from sentiment analysis to information extraction. Many of the areas do not even involve deep understanding of contextual meaning in the way you describe. That however does not diminish the importance of any of these fields nor does it eliminate them from the the umbrella of natural language understanding.
You'd be a whole lot better of saying you've written a natural-language interface to a number of search domains. You're promising a lot by claiming to have an API that not only accomplishes understanding (which, contrary to your claim, is reserved for much deeper and more structured inferences than what you're providing here -- are you transforming sentences into a formal language before feeding it to epicurious, or are you just matching terms against a list of known food items?), but that it is accurate in its output. I still think that the claims of NLU are nothing short of hubris, and that the product would be more compelling if it didn't advertise something so unattainable.
I agree. I took the headline as a hypothetical question. The system described is the most pragmatic of natural language processing systems, a lovely term that just means the input is natural language and there is some processing.
I'm optimistic, by the way, and think that though "objective" word meaning is a cognitive illusion, we will crack the code within the next 20 years. But there is nothing on the forefront of that work about this system.
I hate to make this discussion religious but NLU is widely used in industry to refer to systems such as ours. Daniel Jurafasky a professor at Stanford well known in industry uses NLU on page 822 chapter 24 of the book "Speech and Language Processing" to refer to a hypothetical frame and slot system very similar to what we have built. A quick search for Natural Language Understanding on google scholar will yield numerous articles which use NLU as a blanket term to refer to concepts in information extraction and NLP. Finally, SRI itself uses the term NLU to refer to these tasks (see: http://www.ai.sri.com/natural-language/projects/arpa-sls/ ). Hence I believe the terminology we used is in fact completely appropriate.
I appreciate your references, and I get where you're coming from, but that's not going to stop people from being disappointed by your claims. Just find a better name for it, and I'm sure people will like it more. The idea of being able to do voice recognition for something and being routed to one of many different domain-specific search engines is awesome, but it's a great example of the Searle's Chinese Room parable in practice. There's simply no understanding involved -- only heuristic.
They didn't say that they invented general intelligence. This is clearly providing a natural language interface to an existing api. It doesn't take degrees in neuroscience and philosophy to do that.
They've clearly spent a lot of time to build a working product. You reacted to only a few words from the page title. It's easy to read books on the theory of intelligence, much harder to make a contribution by trying to solve a real problem.
I am sure they are earnest in their efforts, I chuckled when I read "Some of our engineers have been working on this problem for two years, ..." because I know engineers who have been working on that problem for 20 years and they still haven't got it right. One of them (at Intel in the '80s) had a poster that said "Time flies like an Arrow, Fruit Flies like a Banana." which captured the challenge for him. One of the founders of Android, Rich Miner, was an Amiga guy that I knew peripherally through the developers network. He did a company called WildFire which was an assistant that would be on the phone with you that you could ask things of or make requests too. Also felt the problem space was huge, then there were no less than three Phd's at Google who gave a tech talk on the Goog-411 project where they were listening to people ask for phone numbers and trying to figure out what number they were looking for. (one domain of questions so almost like cheating).
Perhaps they just write optimistically, I am excited to seem them working on the problem (I'd suggest they search blekko since we can add slashtags and do better domain search but that is just me). Having seen the folks who have run at this problem and been knocked on their backsides I have tremendous respect for taking on a really really hard problem. Can't wait for the beta.
Would you be willing to send me the .apk (I'm from Slovenia, and would like to try your service, and I'm a developer, so I'd understand if it rejected/got confused with some queries)?
This isn't too far from saying that you have a search engine that "knows" how to answer questions, because you have hard-coded it to omit question words and transform question phrases into something declarative in hopes of finding the best match (e.g. "What is the largest mountain in Asia?" --> "The largest mountain in Asia", and then list the top search result from Google).
There's this tremendous amount of pragmatism that goes into some of the example questions, too. If I ask someone if they can recommend a good sushi place, personally, I'm probably more interested in the best sushi hit they've ever had than whether then place I can walk to from work is decent. You're going to have to make a lot of assumptions that you cannot adequately contextualize to take a broad question like that and say "Well, here are two within two blocks of you." I might actually be ranking proximity lower than, say, quality, popularity, or memorability. By hard-coding such assumptions into your reasoning, you're not in the trade of understanding natural language; you're in the trade of doing exactly what Bing does now, at a smaller scale, with a few more buckets.
If you're really into building NLU, I have a few somewhat snarky suggestions for you: 1) Swing by a cryogenics facility and check back in with us in 20-30 years. Repeat until cognitive scientists have figured out a way to transform human thought into something that can be quantified and transformed into words.
2) Do some reading in cognitive science to understand the immensely difficult problem it is to quantify meaning, both within the context of a discourse as well as discourse-agnostic (archetypal meaning versus contextualized meaning). Look at some charts, and realize that word meaning is not only relative to other words in the same discourse, but other words in shared classes.
3) Read up on Grice, and understand that, despite his philosophical approach to linguistics, his points on implicature and the value of what goes unsaid in a conversation lend as much to context as what goes said. Then try to sit back and figure out how to program and analyze what's going unsaid in a search query.
What I'm trying to say is that I would do nothing with this API because I can't trust it to deliver on its very lofty promises. Natural language understanding is essentially a pipe dream in the current state of computer science and bioinformatics. Word meaning is so idiosyncratic that it is a miracle that humans can generally agree on what a word represents; most of these are extremely fuzzy, and cannot be divorced from the contexts in which they are uttered. It's far too difficult to contextualize even a sentence outside of a pure information retrieval standpoint.
I appreciate what you're aiming at here, but I doubt you'll ever be able to succeed at it. That being said, if you rephrased it into something like a decision engine, I probably wouldn't be so irritated by it, and might even give it a shot.