Both approaches solve problems that the other can't and he reasons quite convincingly that we will make the most progress developing hybrid systems.
I have to agree that a hybrid system is likely since machine learning has its place. I work with such an approach where I use OpenNLP to figure out the parts of speech of a document, example below:
But then trying to use CNNs to understand words really doesn't make sense because of how they are trained. What you end up with is a stochastic of how humans arrange words and then respond to such patterns of arranged words. So to solve this problem and avoid brittle coding I ended up using a descriptor framework to define words. The model uses inheritance and nesting of other descriptors. The descriptors use a qualifying vector scheme that are generalizations of types of concepts, e.g. "abilities", "features", "virtues", "ontologies", etc. Now each node under a "RootDescriptor" can have any type of data associated with it, meaning there can be audio, video, links, vectors, and/or even processing functions to an API, functional library, etc. Also there can be more than one entry per word with different properties to represent a different context or use of a word.
With such an approach they're certain abilities that look like they're rule-based but actually they're not. For instance the ability to compare one word with another and find similarities and differences. The approach uses a self-similar tree structure that allows for a generic process to evaluate nodes. I guess that still qualifies as a rule-based system but in this case, the rules never need to change because the structure of the information unit is always the same. So no matter how deep a tree structure gets what to look for and where to look for it is always the same:
Because "Human" and "Dog" both inherit from "Animal" they have quite a bit in common but the approach can pick up on the differences right away without having develop rules for "Human" and "Dog". There is also the need to have a contextual or ontological component to this framework where words have many edge paths, like below:
Where the nodes marked in Red are when the word "Human" is listed, the image above shows how the tool expands the entire edge paths of the parents even though the word doesn't appear in the listing. This is done to allow for the machine to find associated knowledge domains and allow for creative conversation.
There is also the need to process a document where non-conjunctions are identified and their contexts listed, where I took the article you cited and had it evaluated:
There is the ability to select pieces of the document like the first paragraph:
And even one of the sentences:
The intent is to build word objects that can be evaluated by their properties that then lead to logic based on their relationships within sentences, paragraphs and documents. The encoding of the words is coded by hand currently but a vocal interface will automate the coding and updating of the word descriptions so as one talks with the AI it can change or build its knowledge base on its own.