Summer Readings: Cognitive Computing — building Systems of Understanding (AI in ECM).

Pieter Ardinois
Jul 24, 2017 · 10 min read

Building further on the evolution of Enterprise IT explained by Geoffrey Moore, AIIM tosses the term ‘systems of understanding’ as the next big (r)evolution. It’s an interesting term that gives a hint towards Artificial Intelligence and Cognitive Computing. AIIM lists a set of characteristics that might define why we are talking about ‘systems of understanding’.

It’s a logical approach to define the next movement. However, I think it’s not going far enough. It’s a set of generic characteristics, but it is based on previous systems and does not grasp the real revolutionary dynamic that we are in right now. For me Systems of Record and Systems of Engagement are close to each other. Systems of Record was based around building a database, Systems of engagement was based around building a user experience. The processing layer of entered data was mainly the same, storing data in a predefined model and generating output. Systems of Understanding is a real game changer. Today the whole definition is changing: from the way we interact with systems, over the way data is being processed to the storing mechanisms.
In this post I’ll explain my view on systems of understanding and cognitive computing. The theoretical part elaborates on the definition of cognitive computing. The technical part explains a possible technical architecture for this cognitive layer.

AIIM matrix for systems of understanding.

Systems of Understanding is a quite catchy and might be interesting for marketeers to use in a commercial approach. But let’s start with the basics and get the definition of ‘understanding’. According to a dictionary it is:

The knowledge and ability to judge a particular situation or subject.

A system of understanding should thus be able to judge a situation or subject, based on (acquired) knowledge. We might think that systems of records and definitely systems of engagement were able to ‘judge’ a situation based on knowledge. Knowledge and judging were the configured rules that systems acted upon, when data was entered. The real difference here is that the knowledge in the concept of understanding is not pre-defined or configured, it is acquired and stored for further use.

Thinking of this concept, and looking at my kids of 5 and 7 who are in the process of acquiring knowledge and trying to understand and judge things, I decided to reread some books about Cognitive Development from a psychological, sociological and biological point of view:

The term cognition covers a broad range of intellectual activities. Kathleen Galotti categorises the intellectual activities in following realms of cognition, which are worthwhile to explore. They will be the building blocks for our cognition layer.

Perception
All the information we acquire from the world arrives through one of our senses. The information that is provided through these channels is in raw, unprocessed form. Perception refers to the cognitive processes used to interpret this incoming information.
Interpretation, as part of perception is the process of segmenting the incoming information. For human beings it seems to happen instantaneously, but it requires a lot of complicated cognitive processing.

Attention
A complicated task might require us to focus. When we focus we are ignoring other signals and are shutting out distractions. The ability to allocate resources to a certain task. When in a packed room, we generally are selectively attending to one conversation.
Attention allows us to grasp more aspects of the conversation, like nuances or exact wordings that are used.

Memory
Incoming and perceived information needs to be stored and filed away for future use. Memory is the term to refer to those storage places and processes. The human memory is quite different from the binary way of storing digital information. There are three different general findings about the nature of memory that are worthwhile to list:

  • the working memory: the memory for currently active information. It’s the number of pieces of unrelated information that you can ‘keep in mind’.
  • memory is constructive: as humans, we are not storing perfect renditions of the past. We are able to recall a certain situation and fill in the gaps with plausible guesses.
  • encoding specificity principle: when we initially form a memory trace, it stores not only that information but also information about our personal circumstances at the time the memory trace is formed, like our mood or certain other parameters.

Knowledge representation and categorisation
Of course, the more knowledge an individual has, the more crucial it is that the information is being organised for easy retrieval. The easiest example is the storage of the knowledge of all the words in your vocabulary.

Language
The most distinctive aspect of human cognition is the ability to produce and comprehend an infinite number of expressions using only a finite base of words that follow a structure of rules, defined as grammar.

Thinking, reasoning and decision making
Information is perceived, attended to, stored, mentally represented, and communicated. Information is also used to solve problems or choose options. The processes that are involved in these kinds of information usage are thinking, reasoning, and decision making.

  • thinking: any manipulation on information (e.g. calculating).
  • reasoning: types of thinking that involve some sort of logical interference or drawing a conclusion from given information.
  • decision making: making a choice among different options.

There is a lot more topics to cover, like social cognition, cultural context, education, … . However for our cognitive computing layer, these listed topics are the basics. The other topics might be interesting in the discussion of ethics and the call for regulating A.I. by Elon Musk and warnings from Stephen Hawking on that matter.

The revolutionary part is the fact that we are working with systems who are able to decide autonomously, not based on simple rules but on perceived and stored information also called knowledge.

How do build this into a computer system?

Let’s look more into detail of the message model I defined in the previous post. This model, as part of a conversation and dialogue has an action property, but also other properties.

  • definition: the general definition of the message. (e.g. ‘turn on the light’)
  • variants: variants in the same or other language that can be given (e.g. ‘turn the light on please’)
  • actions: the set of actions that should be executed, following a request
  • responses: responses that can be given by the bot (e.g. ‘the light is turned on)
  • tags: classification of this request (e.g. ‘IoT’)
  • cognitive parameters: confidence score, automated validation of a request, …

This message is the convention in our cognitive processing. It is the translation from a textual request (e.g. ‘turn on the light’) into tasks that a computer is able to perform (e.g. sending a specific request to our Philips Light Bulb)

The computer task itself needs to be programmed and is defined as messages in the database (the memory). For each action, it’s possible to define variants in other languages. Each action is categorised and has parameters for classification purposes.

The cognitive layer is built in two components: one that receives the requests (perception) and one that is translating the request into action (thinking, reasoning and decision).

the technical parts of a cognitive layer.

How do these components form a cognitive layer? This is the process from request to action:

  • A user sends a request
  • The request is received and the app looks for that definition in it’s memory.
  • If the request is found: the action will be executed.
  • if the request is not found: the computer will ask to redefine the request.
  • if more requests are found for that request: the computer will rank it’s result from its memory based on confidence and linguistic characteristics (explained in the technical part) and ask to the user if the first ranked action has to be performed. (on a yes, the variant will be added as a variant to that message with a minimal confidence level for that specific variant. The action will be executed)

The cognitive aspect is in that last step. The computer is acquiring a new definition for a known action. The more that specific request will be used, the more certainty the computer will have to perform the action without asking for confirmation eventually.

This is the basic approach for one process. The memory doesn’t only contain the defined messages, it also contains the history of conversations and dialogues for each user. In that way, each request will be mapped against a certain user in the context of a dialogue. The topic of user administration and focus will be covered later.

learning to understand requests

Although this might seem very trivial, it has to be built on a layer that is easily extendable with a minimum on lines of code and the basic cognitive realms should be incorporated. If not, we are falling in the trap of the single channel overhyped chatbot. Which is not more than an advanced system of engagement (a system of record with a new user interface, based on preconfigured rules).


practical implementation — the technical part.

I talked in the previous post about BPM the future of conversational interfaces and a conversational model. This conversational model will be implemented in our cognitive layer.

In this stage, I have 3 main components in the cognitive layer:

  • A Python Flask app which serves as a REST endpoint for the slack integration.
  • A set of Python classes that act upon the conversation model.
  • Elastic. The activity of mapping a request (e.g. ‘turn on the light’) to various definitions is not a simple query. It’s searching in content and taking language specific characteristics into account.

The Flask app is currently the endpoint for the Slack application. If you’re interested in a Slackbot with Python, this example helped me to get started: https://github.com/slackapi/Slack-Python-Onboarding-Tutorial

Slack is a popular channel in our company, but this can be any interface. I’ll cover a speech enabled example later this summer.

Following process is used to handle the requests.

The defined message in Elastic looks like this:

This message is the start of an integration with Resource Guru, that I’m covering in a next post.

When a user requests on slack “create a new client”, this message model will be found and will be added to a new open dialogue with this user and will then be used to work on.

For now, the interesting part is the ‘method’ field in the ‘actions’ property.
The Message/Conversation/Dialogue model exists in Python as well and the method field is defining which action should be executed.

The other fields to look into are the ‘required_fields’. These fields are required to have a value and will be asked to the user. In this case, there is 1 required field; “client”. The bot will request the value for this field and the value that the user returns will be filled in.

A conversation history looks like this:

Thinking back to our K2 and Infopath implementation, this implementation of a basic layer enables an approach with relatively few code. In order to learn now actions to this layer, we need to do 2 things:

  • Define a message: Currently, defining a message in Elastic is done in Postman, but for further optimisation it might be useful to create a webapp.
  • Write a method to handle that message and deploy it to the layer.

This is the first part of the basic layer. The next post will cover the integration with Resource Guru and will give insight in the possibilities of this approach.


Our role as systems integrator.

Artificial Intelligence is a vague term for many. In this application we are able to train and learn our processing layer new definitions for existing actions. These are the very basics. In a next post in this series I will show an example on how Artificial Intelligence can be used in adaptive Case Management, using this cognitive layer.

Elastic is briefly touched in this post but it is a product that has a lot of value in managing and indexing content. Users are not looking for structured data anymore. Instead they want a system that understands them semantically. That is not only the case for search applications. We are using it here to understand requests for action, from human to computer.

This all might look too far away from traditional ECM. In my opinion it’s not. To me it is what ECM today is about: understanding and embracing the impact of consumerization and new technology and applying it in our solutions we build for customers.

Pieter Ardinois

Written by

Director of IT services at Pauwels Consulting, Founder of streemr.fm | ultrarunner | music lover. Writing on the tech side of everything

Welcome to a place where words matter. On Medium, smart voices and original ideas take center stage - with no ads in sight. Watch
Follow all the topics you care about, and we’ll deliver the best stories for you to your homepage and inbox. Explore
Get unlimited access to the best stories on Medium — and support writers while you’re at it. Just $5/month. Upgrade