AI Zone Admin Forum Add your forum

NEWS: survey on 3000 US and UK consumers shows it is time for chatbot integration in customer service!read more..

Looking for collaborators (developers) on my chatbot Yoko ( 

Hi all,

Long time no see first of all! I had a great ‘run’ building out my chatbot 2 summers ago, while I was nicely isolated from the ‘real world’ in a little town in Italy. A bit like those old painters heading to the mediterranean to focus just on their art! Fond memories, and in my mind the closest I have ever come to ‘academic research’ in my life, albeit on my own.

After returning from there, the real world hit hard though, and I’ve been pretty much caught up in work and other things, leaving my beloved Yoko a bit on the side. Some rewrites and fixes here and there, and a lot more logging / exposing of her internals, but no major progress.

My chatbot has gotten back on my mind recently though, but work and life are also not going anywhere.

So, to h*ll with dreams of Lubner prizes just for myself, I’m playing with the thought of opening up Yokobot’s internals to the public, hoping for collaboration!

Anybody here interested? If yes, I’d urge you to not just have a chat with Yoko, but also expand and look at the logs shown on the left, and have a look at the about pages. If you feel some of my excitement reading those pages and would love to contribute, let me know here or at wouter at I’d say.

Of course, I would not just want to ‘recruit’ in this amazing community - I’d try to share back more thoughts and questions with it just like I once used to, and am very curious for any ideas of kickstarting a succesful open-source project.

Anybody interested to join, or with suggestions on how to make ‘opening up to more developers’ for a project like this a success?


  [ # 1 ]

Maybe it’s a good idea to share some details right away:

* Yoko is not based on AIML or another widely technology, though both for parsing and generating phrases there is a small ‘template’ system at play

* All code is written in PHP, using a MySQL database for not just the ‘knowledge’, but since recently also for ‘language’ stuff like template ‘patterns’ and things like that - this to allow easier inspection straight from the web interface.

* The ‘site’ is written using an MVC framework, and a number of classes with names like ‘brain’

* The central ‘paradigm’ behind Yoko is to separate language/semantic processing from ‘knowledge storing/retrieving’ as much as possible. So she tries to parse natural language in a ‘meaning’ object, process that one with code to come up with a structured answer, and translating that back to natural language. Of course there’s many complications to this as we all know, but that’s the idea at least.

* Given the above, Yoko ‘learns’ from user input, and ‘feeding’ her with larger quantities of data happens through just feeding her simple phrases like ‘a dog is an animal’ which she than processes. I’ve spent quite some time translating first phrases of popular wikipedia pages, AIML sets, things like wordnet etc etc into this format for Yoko to learn from, but habitually reset all of her database for testing purposes.

* The code is in a (currently still private, but that’s what I’m looking to change!) Github repository.

... Any other questions?


  [ # 2 ]

What version of PHP are you using? Are the administration tools (looking through the data, admin, etc) separate from the bot’s code or are they part of its core?


  [ # 3 ]

Wouter, I like a lot of what you had to say on the Yoko website, especially about using a knowledge base and semantic web technologies. I think your ideas about using classes and properties is right on target. However, I do think that in order to realize the full power of a knowledge base (KB) approach you will need to use a formal knowledge representation language such as OWL. The fact that OWL is based on formal descriptive logic underpinnings allows for actual reasoning, which I believe is essential for any real breakthrough in chatbot capabilities. As a simple example take the situation where the fact that Barack Obama is the president of the United States is in the KB. Also in the KB is the fact that Malia Obama is Barack Obams’s daughter. Using formal inferencing the new fact that Malia Obama is the daughter of the president of the United States can be determined, even though that fact is not actually in the KB. Even though this example is very simple one-step inference that any human can easily accomplish you can imagine that in a large complex formal KB inferencing could be done across many layers of facts and could potentially discover new facts that are far beyond what a human could do. So, I think you are on the right track but it is going to be important to use a formal knowledge representation language such as OWL in order to make the real breakthrough chatbot capabilities.

John Flynn


  [ # 4 ]

Thanks for the questions!

I’m using php 5.1 or something - I am not using namespaces or anonymous functions or any other php 5 specific feature anywhere yet though.

The admin parts are in the same codebase, and (obviously) acting on the same database, but in the code they are pretty neatly separated out, following an MVC pattern.

The ‘core’ part is contained in a number of classes that take an input phrase, and return the current conversation in return, including phrase added by Yoko. This means for example also that turning Yoko into an API would be fairly trivial.

Thanks for reading through my ramblings! The type of reasoning you say shouldn’t be too hard to implement with Yoko, and would definitely be possible with her current database, though I must confess I haven’t quite implemented the ‘general’ case yet. ‘resolving’ phrase parts like that I also haven’t cracked, though your simple example makes clear how common this is.

But if you would want to make yoko capable of that, there would be a fairfly straightforward path towards achieving it I feel. (resolving descriptions to some ‘canonical’ instance, and then reasoning on the relations of that one)

The ‘is-a’ and ‘has-a’ things are stored in a table specifically for those (relation_class_parentclass, relation_class_possessedclass etc), so it’s easy to know what logic applies to things coming from there. I’ve run into the need of a more ‘general’ relation storage as well though, where I store not just the relation, but also properties like ‘inheritance’ type: transitive, symmetric, etc… So ‘is a sibling of’ would be symmetric etc…

If any of you would want to set up a google hangout or so, I’d be happy to show some things in more detail!


  [ # 5 ]

You have good and feasable ideas in the area of enhancing conversational chatbots with AI, and it looks like these guys could use that:


  login or register to react