The Qwiery framework was built long before chatbots became fashionable and although lots of frameworks have seen the light few have tackled the problem that Qwiery addressed; extracting insights from input and generating output from insights. The reason that few bot frameworks go beyond the basics is of course related to the need to hook into mainstream business and, to put it bluntly, make money. The typical marketing chatbot does not care about being ‘deep’ or personal, it only cares about generating leads and optimizing conversion. This is on its own not a bad things, simply that it does not align with how I conceived Qwiery as a way to go beyond basic natural language interactions. Let explain.
One of the problems that any chatbot framework has to address is how to keep state and context.
One of the problems that any chatbot framework has to address is how to keep state and context. How to remember previous conversations and topics, if you prefer. Human beings have no issue to talk about something within something else, to have a stack of subjects and keep the context correct. You hardly ever have to ask someone to clarify who is ‘she’ or ‘his’. We falwlessly manage contextual complexity. For chat AI this is however a nightmare; when does one topic halt and another starts, when is some input clarifying the current subject or another one. There is no doubt that facial expressions and body language in general helps here. How to do this algorithmically?
While it has always been obvious to me that storing chat knowledge in a semantic network is the solution, I have not seen the rise of ontologies propertionally to chatbots. There are technical reasons I suppose, it remains indeed somewhat challenging (and sometimes obscure) to deal with SPARQL and triple stores. Still, one would think that knowledge representations would have gained momentum. Something like Wolfram Alpha would not be possible without some solid semantics and entity management.
Qwiery solved adequately the issue of transforming natural language into triples.
Qwiery solved adequately the issue of transforming natural language into triples. In fact, through our consulting services we helped customers to do the same. Using NLP engines, inference, rule engines, templating and whatnot you can achieve good results. Provided you put in place an ontology which keeps the bewildering growth of triples under control you get a ‘memory’ of what has been said, who said it, what the context is and adorn it with metadata to glue it all together.
The more challenging problem is how to turn acquired insights (i.e. triples and quads) into natural language. That is, natural language generation based on semantic data. There some initiatives like the Triple2NL code by Smart Data Analytics but very few in general. Natural language generation (NLG) is a difficult domain in many ways. Often you encounter implementations based on Markov chains but the statistical natural is too wild.
My own take here is to see a semantic network as a very large Markov chain together with rules to ensure that not everything in the network is used. Indeed, one needs verbs, nouns and so on to form a sentences and the typical set of triples does not provided this. I suppose that one should find a way to match graph patterns with language patterns. The challenge here is how to describe propertly sub-graph features.
The challenge here is how to describe propertly sub-graph features and graph patterns.
Like one has coding patterns (e.g. a singleton) one should be able to describe triple patterns. How this can be done is not clear. It will in any case take a while before the world is onto ontologies. There is a large business opportunity in that direction right now.
Bots consistently fail to express emotions and/or empathy.
Another domain where bots consistently fail is to express emotions and/or empathy. There is of course the flourishing field of emotional analytics but this is related to capture human emotions rather than the other way round. One way in which Qwiery tried to approach this is via psychological typology, i.e. use a classification of psychological profiles in order to express things in different ways proportional to the class. How can one capture a psychological type? There are various ways but if you constraint yourself to textual interactions you are bound to tokens and using some sort of sentiment analysis mapped to the classification. In a way, just an ordinary machine learning task. Once the (dynamic) profile is in place you need another neural network to (or ML model) to map variations of words in function of the person. Conceptually this is straightforward, the difficulty is to gather data to make a meaningful model.
On a completely different level, bots have struggled to connect to legacy data. It’s easy nowadays to train a bot on the basis of FAQ and knowledge bases but it’s another matter to link it to arbitrary databases or NoSQL stores. Utterance/intent is easy, but unstructured data is hard. One sees typically two options: either train a neural network on massive data (LSTM and alike) or indexing. The LSTM path is usually not taken because you need to have Google-size data and budgets to get anything acceptable. The indexing is business-as-usual but less satisfactory; a list of document where some utterance appears ain’t a bot. So, enterprises have learned the hard way to dim their expectations when it comes to bots. General artificial intelligence is still far off. That said, I have seen many successful implementation of narrow AI in marketing and domotics. In as far as the functions of something are limited (say, a TV, a garage door and typical household equipment) things are going well. Automated household and IoT is a perfect match for narrow AI. And so, like any IT hype we have now reached the flat long-tail where expectations are realistic and bots is well-defined software. It doesn’t mean the challenges mentioned above are less interesting but there is now a clear distinction between research and business.