 Hello everyone. Next is Michael. He's going to talk about Susie and I'm going to let him start. I'm not going to take any time. We're kind of running a bit behind. So, everyone welcome Michael. Hello. Does the microphone work? Yes. Very good. This works as well. From roots to artificial intelligence algorithms. This is of course about Susie. And yesterday I introduced why we are doing this project and today I will get into details and explain how it works in a very detailed way. So, some time ago, 1986, already people thought that computer in the future are something where you can talk to like Scotty in this Star Trek movie. And this is a bit coming true now. As we had seen yesterday in my presentation, also Google starts to respond to complete sentences with complete answers directly without providing a link or they have links but they also have the answer like here also. And my idea about search engines in the future is that what should they do in the future? And maybe an answer is that they simply answer to all kinds of questions. So, what's inside the web is not that important anymore. People are simply searching for answers and search engines of the future will just return these answers. We created the log log project where we collected billions of tweets and we started to ask questions against this database like who tweeted most about FOSS Asia yesterday. So, this is also kind of natural language question against the large database about social media. And this is also something which should be answered in a natural language way. And all the big companies, Google, Amazon, Apple, Microsoft are now inventing these machines which are doing exactly that. These are the answers on the question what is the search engine of the future. It's something we can simply talk to and it will give you any kind of answer. So, what we are doing with the Zuzi project is that we are creating a field open source personal assistant. They call it sometimes smart speaker but this is a very similar thing. So, this is the open source version of it. It's considered to be artificial intelligence object. So, if we want to do something like this then we need to explain or need to understand what artificial intelligence actually means. So, people have opinions like with devices like that you can be smart. They think work for you and maybe do unexpected things but we want to know it in detail. So, artificial intelligence has a definition and it's that systems which think like humans or that think rationally are artificial intelligence systems. Maybe they act like humans or act rationally. There is also the distinction between weak artificial intelligence and strong artificial intelligence. There's a big mixture of things. So, people think things are intelligent if they just act like humans but what is actually built are very simple tools. So, they can do something which a human can do in a very specific field like recognizing objects or playing chess and so on. They are not general intelligent. And this is the distinction. The strong AI says it's like a human can think and act like a human and in the past it was also mixed up. It was a mixture of the meaning that real intelligence only comes if you have a mind. So, it's not that big discussion anymore about this. And weak AI means you have a specific tool. So, this is the toolbox of the things you can have in artificial intelligence. Heuristics and constrained search is something you know from your navigation system. Heuristic search is something which is done to find the best connection between two points. And this is a very normal thing. It's artificial intelligence from the algorithm but it's a normal thing. Learning with reinforcement is something which is now done with neural networks and it's a very new field because it had been done already 30 and 40 years ago but it wasn't very good. And because of the computation power and new computation models they are now very strong. Then there's reasoning with knowledge and logic and uncertain knowledge with game playing. And reasoning with knowledge and logic is where you have automatic proof systems which create something like expert systems. They have a knowledge base and they have deduction rules. And you can apply these things if you have a specific knowledge and you don't have uncertain things. And certain knowledge is where you do game playing. And 20 years ago this field of reasoning, this was the strongest field in artificial intelligence from my perspective. And this is a very interesting thing where we can also have a model for an expert system which creates a personal assistant. So other things you expect from artificial intelligence system is that it can do natural language processing with text-to-speech and speech-to-text. Then being able to compute with a large number of data objects like we did in the lock-lock project where we have billions of tweets, reasoning chains, that's what expert systems do, machine learning like sentiment analyzers for texts. Then you need something where you compute. That's what we do in the Susie server and where I get into detail. Then you need something to handle accounts. So many people can access the same server and it's computed for each of them individually. And you need this ecosystem of different clients which access a server. And of course you need user-defined skills so people can contribute and create skills themselves. So it's a complicated thing and it's something which we created already. We have created this ecosystem of different applications, clients, and the ability to create skills in an easy way. So the beginning of this idea was not to create artificial intelligence but what I did with the Yasi peer-to-peer search engine project was creating a search engine. And with the lock-lock social media harvesting engine it's also a search engine. At a certain point we thought that we must bring these things together so we have an aggregation level and have then a search for all these things together. But after we found out that we can ask questions against this database like who tweeted most about Force Asia and other questions against the database, we thought let's get more elements inside like conversation rules so that we can formulate what kind of question can be asked and what kind of result should be computed, should the result be just a phrase or should it be a picture or a map and so on. And then other sources came inside like results from Alpha and from open data sources and so on. So this is the idea how SUSE was created. It was not like let's create a chatbot because chatbots are cool. It was the necessity to have an aggregation engine for different kinds of sources of search engines and that's a specific strong element in SUSE to be able to integrate data elements from outside. And once you create new information out of this you can feed it back into something like a reflection memory and then it's something which should be represented in a common way. So all these data sources should be represented in a specific way that's similar to each other and it should track a state so you know that one information came from a course. And this data structure is called the SUSE thought. So this is like SUSE thinks it goes from thought to thought. So how can you do this? We have this backend server. It's available at api.susieai and if you do not a search you put something in a phrase into this field then you get a JSON backend. That's what every client sees if it's computing a result like a spoken access or written access to the client. So it always gets this JSON back and that's what you see here that's a SUSE thought. It's a computation step to answer a question. And the question here is how is the weather in Singapore and it returns an answer object containing an action element and the action element says it's an answer and it has an expression. So actions could be also not answers it could be other things like switching on the lights or playing music and so on. So the result of a query is a set of actions which are executed after each other. So these are the elements you can compose if you create your own skill. So this is the backend thing and it's really easy to test new skills and see what has exactly happened. Then there's the data object and the data object collects everything which you have accessed from external sources but it also represents the internal variable space. So if you set temporary variables they are represented here and you can do a debugging and see what's happening there. To compute the result from a skill you need a computation model. It's not a chatbot where you can say this is the input and then please give me that output. These chatbots usually are very simple. You just put something in and you have a national language processing, you have a pattern. That pattern is represented as an intent and the intent means you have to put something outside. The idea is that Susie is able to act like an expert system. It can think about things. It can have, think about an option and then during that thinking finds out that this option is not a good option and that it should have an alternative. This kind of computation is shown by Prolog, the Prolog language. There's an example for this language and this is the inspiration. We have this condition part and the predicate part and if every predicate inside the condition holds then that predicate is true. This program that's a quick sort in Prolog. In Susie the condition is the rule process. So what is the rule process? All the things which must hold true to produce an answer and the predicate is something that's the answer itself. We turn this thing around. Everything which is an intent in a bot is what here is a condition in the rule. It's not a predicate, it's so easy to understand. You need to know some predicate, first order logic predicate knowledge. So here's an example. The Susie skill language has a very simple form. We can forget all these complex things and just write some simple phrases like this one, shall I start? This is the simple pattern and if a variable called boot is set to excited then the answer is you will be happy. These are the conditions. You have two conditions. One is that the pattern holds and the second condition is that the variable set and the answer predicate is this one. So this very simple kind of language can be used to create an extra system which creates the answer. So it's maybe completely different from what you have seen from other kind of chatbots or personal assistants. It's not that difficult in the end. So the whole ecosystem what's running in the server is that this deduction can only can take place if a specific skill is found to be computed and because we are computing with patterns, some patterns can fire at the same time and so we need a ranking. Some skills must be computed first and then other as a second option. In Prolog, the order of computation is not defined. It's open and here we have a ranking of skills which is necessary for communication. So we have a learning component. We have a data memory where we can recall what was in the thought before. We can feed this back to the next query and we have these data sources which are presented and so we can access resources from the data, from the web and we have a skill resource and we have also a special skill resource which are called dreams. This is the testbed for new skills. And plug-ins is that maybe in the future this is not implemented. All other things are implemented that Susie is able to create its own skills. So you could have a teach-in method. So Susie learns skills. This was the first representation of the rules inside of Susie. It's a JSON structure. This is what internally runs. We have a lot of patterns which cause that we start a process. This process can access data from external source. This is like a SQL statement and then we have an action which is returned and the variables which had been computed inside the process is then replaced in here. And to make this kind of access to an outside we need a console service which is described here. This is the external resource. So it's not that complex in the end because the rules are very simple which you describe and this is compiled into this internal format. Because of time I will jump to the skill description. This is a picture I took outside from the building because it says it takes 10,000 hours to master a skill. But this is wrong. This would be very long. I think it's 10 seconds. What I show you you will understand it instantly. So here is the example. The idea is that the skill data set can only grow if it is as simple as writing a wiki article. If it's more complex people won't do it. But it's that simple. So this is the most simple skill. It's actually a text file. A simple text file where the input is the first line if it matches then the second line is the output. Many of the impressing features of Alexa for example I think they are all scripted in this way. There's no intelligent thing around it. Having a lot of these phrases makes a funny thing. That's an important thing that if you create a tool like that it's funny as well. So it should be easy to put in all these things which could be funny. Next example is that you can have alternatives in the answer so it's a random answer one of these. Next example is that you have several inputs which cost the same output. So you can say Bonjour or ciao and output is hello. Then a simple pattern. This is a placement for anything. So if you have anything inside then you get the output. And if you put something inside here this is the same as here. The previous example but this is stored in a variable which is called one. So you can just output something called one. This is at this time not more than you know from Eliza a very classic example but this is just the simple things. So having more patterns means you have more variables then you can store one variable into a permanent memory. So this is memorized permanently and can access it afterwards. It's not only part of an expression which is output but it's also stored into this beer brand variable. Then you can give this out again and you can have hidden assignments. These are visual assignments where something you can see in the expression is stored into a variable. But here you have a hidden assignment where the word excited is not shown but just stored in the mood variable and then you can put this out again. Now this mood variable is something where it can have conditions on. So you can have rules which fire on specific conditions and so this is a condition where it only matters that something is set into this variable and here it's required that it's set to a specific value. And here's an example where you can have a call back to itself. So function color is not a, this is not a special word. It's just like a phrase. And you can access this phrase again in this example where function color is called inside of a result. So Susie is calling itself at this moment. It's taking its answer from another answer which is computed inside. This is the reflection element. So phrases can be like meter phrases which are inside somewhere else. And you can of course put in some JavaScript. So if you start a line with this bank then you can compute until URL in JavaScript. This can be more complex by using a variable. And that's the final example which takes the result from an outside API. And that was the beginning of the idea to have a scripted meter data search engine which is taking data from a JSON component and then a specific element in that JSON is accessed. And to say which kind of element is accessed is given in the JSON path and that's the object's statuses. So now there are the things which are not implemented. Thinking with backtracking, expert system with first order logic. Skill reflection, skill read skills. So you don't call a skill but you read a skill and skills which create skills. And Susie talks to itself. So this can be done by going into the interface, go to Susie AI, click on the burger, make an account, click on skill. Then you see all the skills. Click on the skill. Click on edit. And there it is. That's a skill which takes information what happened on and it takes it from this API and the JSON path is data events. And very easy thing to test is you can go to dream Susie AI and it has, this is an etherpad and you can make an etherpad an instant input for a skill. So you can put in anything there. I don't have time left I think. Okay. So come to my table at the basement. I will show this to you. So thank you.