 So what we want to do is to have a content management system where you can put in your skill and the skill shouldn't be a program. It should be just something very simple where you can put in that information, how to access an external database. So that's applying the Viki principle and of course we are addressing open source community as the first multiplier because they understand what we are doing and then approaching everybody. Everybody who is able to write a Viki article should be able to write a Susie skill. So the challenge is reach mass audience to have mass skills. So if you are using, for example, Amazon Echo, then it can do a lot of things before you actually activate a skill. It's like the operation system of skills and we have to create all of that as well. So maybe they created this with a lot of manpower when we need this manpower as a community to create this as well, not only the special skills. So we created a whole infrastructure of systems and that's our webpage. If you want to create a skill or if you want to click on the burger, then you get the chat icon and you can already test Susie and ask it some things. It cannot only give you text results, it can also give you map results, images or videos as a result. But if you want to create a skill, then you need an account to log in and then click on skills. And we have a skill repository that's our content management system for skills. You can have a nice icon and then you click on one of these things and you have an overview of the skill and furthermore you can click on edit. So you see the skill text and you can edit this text like you edit the Wikipedia article. And of course you can also take that skill text and copy it and make something new out of it and modify it. And the good thing is all these things are published in the GitHub repository. So if you say save, it's internally creating a commit and it's pushed to GitHub to the directory called Susie Skill Data, for the Azure Susie Skill Data. So in this ecosphere we need a lot of things. We created all these things in a Google Summer of Code project that create work of the students. So we need all these kind of conversational skills. So it's a lot of work and it's still ongoing. We have some of them and you can do something with it but it's not so complete that it can compete with something like Alexa. And the digital, I call this the digital assistant ecosphere where we need all these apps and we need all these skills. So it's a huge amount of work. It's not a small program. It's an ecosphere for digital assistants. So we made a speaker. This is a kind of development device. I'm selling these so you can have them. And we have the Android app, the iOS app, desktop app, web application and the skill language, wiki-like content management system. So do I have time left for the Susie mind? Okay, so I would like to get more into detail. So if you want to use Susie, you have the Susie server, which is just a program where you feed in a question and you get a JSON object back. So you can put another client on top. You can create your own chat client. You can create your expert system or whatever you like just by using the JSON server in the background. And here are some details how this server is constructed. So there is a bit of history in this project. The history is that I developed the Yasi peer-to-peer web search engine as a distributed system for web search, which cannot be censored and which is hosted by the persons who are running them. And then we created lock-lock because web search doesn't reach to the social media content. Lock-lock is a social media harvester taking mostly tweets from Twitter. And when we created lock-lock it appeared that we can ask a lot of different kind of questions like who tweeted most about Force Asia last year? So this is a complex sentence and if you want to have a search interface you would need a lot of buttons to construct this kind of filter and something but you could also just say this sentence. So we needed a specialized national language query parser. So we started to do some national language understanding in a query parser and this cost that we developed Susie in the beginning. So Susie and lock-lock was the same thing. And then we made more abstractions. So we said Susie is an aggregation system for a distributed search engine. So Susie is actually a meter search engine which you can configure. It's important to get a lot of information inside so you have, it's important to be able to access external information. And one thing we need to do is normalization. Everything which we take in must have the same data shape inside of Susie. So we need a common data structure for everything which we can put in. We have a normalization and post-ranking means everything that comes out must be ranked in our own way how to say what's important or not. Usually if you do a meter search you have a desktop search result but we found out that it's sufficient to have a dialogue result because most things are about knowledge so we can express knowledge in sentence. And therefore we needed conversation rules and an interaction model for this. So we had been able to attach more sources like Wafam Alpha or structured data from DPPDR and finally found out that we can feed back everything which we had found back to our own database and it's called the reflection memory. So the result that we got is again an input for the next search. So if this data structure is equal to this data structure then this data structure is equal to this data structure and we call it this generalized data structure Susie Fort. So if you do a query to the Susie server then what you get back is essentially a Susie fort together with an action connected to that fort. And an action means you can do something with that fort. Like there's knowledge inside and you can have an expression saying I say something about that fort. So you see it's not a normal idea of having a chat port. It's a more general approach to do this. So that's the engine inside. We have these skills which are doing the transformation from the external data to the internal fort format. Usually it happens that several skills can apply to the input. So we need a ranking to the skills. Then we do something which is very similar to the Prolog programming language. So we can do backtracking and that means thinking about a result. Something can be true, can be false. You can verify a search result and say this search result is not sufficient for what I wanted. So it fails and does backtracking and tests another alternative and at the end you have an answer. So we want to have a learning component so we can learn which skill is a good skill which one is not a good skill. We have a data memory which remembers which had been the answer before so we can learn from this as well. And we are able that skill can call another skill. We call this reflection. So we can have an output which is saying there's a substring and this substring should be replaced with another call to Susie itself. So this is kind of recursion which we call reflection. And to have a, this is the development zone. You have so-called Susie dreams where it's easy to develop a Susie skill. You can say in a chat dream and then the name of the dream, like Dream Force Asia. And you can open an etherpad which is called Force Asia and then that etherpad is the development zone for the skill, which is just the text. And that's the final vision that Susie is able to create its own skill by just by doing a conversation. So I talk to Susie and Susie is learning from what I'm talking and that process should be a skill itself. So yeah, so the implementation of this part is in the same fashion as an expert system is implemented. So the idea of first order logic, the implementation of what is true backtracking and following a decision tree to find the right answer. Yeah, for the skills, we defined skill language and abstraction of how you define what a skill is. So it's not a programming language, it's something which is much easier for everybody to learn and it's called the language of thought. And we also have collaboration elements like the Susie Dream is a collaboration tool and there are machine learning elements inside and the console room is the method to attach external data sources. So we have a lot of elements which are actually part of theory of artificial intelligence. So this is truly a tool of artificial intelligence. And I would like to give some examples for the Susie language of thought. It's derived by the theory of horn clauses which are implemented best in the best way in Prolog. And there's a variant of Prolog which is called a functional Prolog and functional Prolog is the example which is then used for the language of thought which have terms, not terms, but just sentences and we are applying the same rules to the language of thought terms like we apply on functional Prolog. It's just a different way of notation that it would go too deep if I explain this in detail here. So I would go to some examples before I go there. It's a comparison what you have to do if you want to implement a scale. So for Alexa, you can do this in Python, in Java and so on. Every personal assistant has to be programmed in the programming language and Susie is not going this way. We are having a configuration where we have the language of thought. So it's like a market language. So in web development you had HTML as the language you should use and then there was a wiki code or markdown or markup or however the flavor was called. It's a very simple way. Everybody can write this because it's so natural to write this. If you just write plain text then it's already marked down. So this should be the same with skills. If you just write down some lines of text, it's a skill, okay? So it's as easy as markdown. So this is an example. On the left side is a Susie dream and on the right side you can test this dream by saying dream quick test and then you can test this. Yeah, it's available at dream Susie AI and you go into chat and say dream, and then you are developing your skill. You also have that input window in the content management system where you can develop the skill in here and there's a preview window where you can test the skill as well. It was working until yesterday then it wasn't working and now it's working again so I hope it stays working. If it's not working you can use the Susie dream and everything is pushed into the skit repository which is what you write in there. So everything which you put in there is live for everything. So this is the same with Wikipedia. What you put in Wikipedia is live for everybody. So you have to take care of what you do and don't destroy things. There's another way to do debugging when developing skills. So if you ask something and you get an answer, answer is 42 of the questions about life, universe and everything, then you think who made this and how did it come into the system? You say explain. Explain is not a special word, it's also a skill but explain takes something out of the data structure of the Susie fort because the fort knows how the fort was constructed and then the answer is my answer was defined in that skill. Generals, games, trivia and accessories, hitchhiker, persona, okay? And then you can click on the link and you can edit the skill right away. It's going to the git repository but explain is also a skill so you can say explain again and explain, explains, explain. So everything should be a skill, not a special word. Everything should go out of the data structure of the Susie fort. So this is a kind of operation system like skill and it's in the 0001 foundation skill which defines what explain is. So okay, here are some extreme examples. So I think this is the most simple hello world from all the examples of hello world. So the most simple hello world possible at all. So this is the hello world implementation if you say hello Susie will say world. And this doesn't look like programming but this is actually, this is skill language, Susie language of fort. It's just two lines. So a skill is only two lines. So I said it should be simple as writing a wiki article so it must be really simple and this looks ridiculously simple. So that's the utterance, that's the answer. Okay, you can have exceptions where the second line can be more complex and we have a bank expression saying what kind of special expression it is. So this is an embedded JavaScript. Here's a pattern, this is pattern matching. That pattern goes into this variable number one so that's the first pattern. It can do some computation and the result of the computation is then placed into the bank variable. So you can do everything with this by putting in a JavaScript and that's an example of how to create a console rule. So this is accessing the lock lock API which is searching for tweets. So if you want to have a tweet about anything you put in that anything into the query object here and the result is in statuses. So what you have to do to define an external API is just two things which is the URL and the JSON path and the JSON path has to point to an array of objects. Array of objects because mostly external APIs create something which is like a search result. They always have a list of results and the first result is then taken from this list and that object has an attribute called text. So we put in the text and the text is then displayed as a result of the skill. And if you apply some logic more here and do comparison of text and if you don't like that text backtracking is applied to have another result out of the result list. So yeah, there's another example, it's more complex and unfortunately we have an API key here. We don't have a solution for API keys so you have to put in them in clear text but a better solution is being developed. Yeah. And this is an example where I can say news or anything new and it applies both. So here are the examples from the most simple to the most complex. We have already seen the most complex construction here. Roses are red. Susie, the heck is the answer to roses are red. You can apply randomness on answer. So if you ask what is your favorite dish, Susie answers potatoes or vegetables or fish. So one of that. You can have different utterances. So either you say, or the answer is hello. So we have patterns. The star matches anything and you can use that anything to reply it inside your result. This is just like Eliza, the 30 or 40 year old program which was an AI demonstration. But most of these engines are working in this way and we are just working on top of this way of examples. So if you have two stars, then it matches with a one and two and you can take more attributes into one answer. And this is called an assignment. If you use that greater sign, then you can assign something which is visible in the answer into your variable. And this is then going into a Susie fort. The memory of Susie is a stream of forts. So this becomes part of a fort and can be remembered out of the stream of forts. So beer brand then is available in one of the forts in the last fort. And it can be remembered from there by using the variable name and you can put it inside another answer if you wanted. So next example is an invisible assignment. So if you say I'm so happy, Susie will answer good for you and does not print out excited but will store the word excited into mood. And you can use this to store different words according to what you said. And if you say how do I feel it will print out that word what it's remembered before. You can use this for decisions. So if the variable mood is set, then it answers you are in that mood. And if it's not set, Susie says, I don't know your mood because it can see if the variable is set or not. It can do comparisons here and say, is that variable equal to something? And then it's a constraint on the answer. You can, this is introduction to reflection. So if you define something which is called function color, function is not a special word, it's just a word. You can also say table color or whatever you want to. It just matches then with something which you want to use in reflection. So this is a random function for colors. And if you create the skill about what is your favorite color? So this, of course you want to have matches which are, which matches more of what you can say. But if this is the question and the color is set, then Susie will say my favorite color is color. But usually the color is not set. Then it will do a reflection. So this back quote means, this is called inside of the skill computation. It will do function color, replace this with the color and store it in color and say that color. Okay? All right. Yeah, and these are the examples I already shown, JavaScript, computations inside JavaScript and the console rule to access external APIs. What we not have implemented so far, so far backtracking is incomplete. First order logic like prologue is incomplete that skills can read skills to compute something out of it should be implemented. So this is the to-do list, the backlog of the Susie implementation. So a lot of work for this year, but with the help of the First Asia community, we have worked so far to make all this happening. This is the sign of last year of the Susie speaker, but this year it's much smaller and it's actually working. So I hope that you want to join in and want to contribute to that project. And yes, that's it. Thank you. Thank you for listening. Are there questions? Well, for Q and Cal, we have five minutes for questions. What kind of an LP system is being used for this Susie.ai for natural language understanding? Like if we are speaking anything, then how Susie will understand all the things that what we are saying. Yeah, right now we only have regular expression based on these pattern matching, but what I want to have is a NLU component on top, which is formulating what kind of structure we have created. So it's not that we forget to have NLU in this structure, but it should operate like a plug-in on top. So you can have natural language understanding. But right now it's just pattern matching. Okay, so is it possible that maybe in future we can use open source NLU like Raza or anything? Yeah, that would be great. Okay, so that is a possibility, right? And okay, so as per my understanding right now, we can create a logical database chatbot, I would say. Yes. It's not actual AI right now. Yeah, right now you can create a conversation flow like a tree with these variables, but it's not very ergonomic. Next step is to enhance the Susie language of thought to have a reflection of that tree-like language. And we also want to have a visual editor where you can create that tree and see what kind of conversation flow you're implementing. But that's not yet there, but we should have this. Okay, okay, this looks pretty interesting. Yeah, this is the work in progress. So that's how we bent. Okay, good. I like to discuss more, but we'll take it offline. All right, thank you very much, Michael, thanks. Hey, hi, Michael. And first of all, really nice presentation. And the way you presented the slides was really awesome, so thank you for it. I have one question. So first, in the initial section of the slide, you told that the search engine is the one which basically doesn't let you just search about anything. It presents the results in the stepwise format. So one question is that does that increase any complexity or overhead on the system itself? Because it has to be internal processing, a lot of processing itself to get the exact results out. And it might take a lot of time and it might be computationally expensive, especially where low-end devices are concerned. So I wanted to ask that, what is your thought on this? So we are attaching to external search engines, which are just, yeah, almost everything is a search engine if there's a database and it's searching in some way. So we depend on the response time of that external API. There's no search engine in Zuzi. It's just attaching external things. And so backtracking could be a problem if it's running too long and there must be some methods to interrupt backtracking. But this is a general search problem, not search like search engine, but a heuristic search as in AI. So it must be, these methods are incomplete by definition of the original problem. So there must be an interruption and we must work with this in some way. I don't have an exact answer to this, how we handle this. Okay, and just one more question that where exactly Zuzi placed itself in terms of the ongoing or the existing chatbots? Like maybe Watson or maybe the open source chatbots which is present in Mozilla or in any other, which can readily use the answers when we are on IRC or anything. So it's like Zuzi, where does it place itself or where do you think Zuzi come in power with that? It depends on the use case. So if you say, how good is it at playing music, then it's actually now better because you can ask play something and it will take some music from YouTube and play it. It's not something which Alexa can do. They are restricted in some other ways. You have to have an account with a music provider and so on. So we are free to attach any kind of source which is playing music. So we can do better right now actually. But if it's about knowledge and say a lot of ergonomic thing like setting a timer. This is a lot hardware related. So if you have setting a timer in an Android application we have to attach to the Android functions and it's still a lot of things to do. So there's a lot of work to be done. So it depends on the area you are talking about. In some fields we can be better right now. In some fields we have still a lot of things to do and I don't know when we keep up with this work. But our chance is that in our community we find out the use cases which are important for us and implement that, concentrate on that.