The Athena Project

  • 176 Replies
  • 39974 Views
*

Freddy

  • Administrator
  • **********************
  • Colossus
  • *
  • 6052
  • Mostly Harmless
Re: The Athena Project
« Reply #15 on: December 31, 2013, 02:29:45 pm »
Aaron, that shorter video seemed fine to me, it's a nice little introduction to what you are doing. I have not yet had time to watch the longer video in full yet, but I will as soon as I can :)

*

Snowman

  • Trusty Member
  • ****
  • Electric Dreamer
  • *
  • 140
    • minervaai.com
Re: The Athena Project
« Reply #16 on: January 03, 2014, 09:03:15 am »
Thanks Freddy for responding. I tend to talk too much sometimes and can put people to sleep. The video should be improved soon.

Hey Art, I made two rough drafts of what I could say in the videos. Naturally, I try to answer your questions. I also added a few more to the mix. There are two drafts because one is intended to be an introductory video about Athena and the other is more of an Update video. I realized when trying to answering your questions that I needed to brush up on my general knowledge about current ai development. This was definitely good for me.

This first Draft is for the Introductory video.

Disclaimer
Anything I say prior to release of Athena is subject to change, including the name of the chatbot, release date, or any of the chatbot's coding. So if any of this happens, do not be angry with me, you were warned.

What is Athena?

Athena is a programmable chatbot for the pc. She is an emotionally aware assistant. She can chat, read stories, open programs, remember important information, and play games with you. She is fully programmable and customizable. Not satisfied with the way she responds to you, you can change her coding, remove unwanted responses, add new ones, and reinforce the ones you like. Plugins can be created and added anywhere within Athena's brain module. No need to be overwhelmed by not knowing how to code her. Tutorials will be created and uploaded to my youtube channel (aaronwsnow) and also linked to my website minervaai.com teaching about a variety of Athena related topics.

Who is Athena for?

Athena is made for the person who wishes to explore the world of artificial intelligence from their own desktop. It is also built with both the novice and the advanced programmer in mind. Athena can be used for far more than just a simple lesson in ai development. Athena can be used as a personal assistant to help remember birthdays, contacts, appointments, or friendly reminders. If you like text adventure games, Athena can easily be programmed to play one for you. If you are interested in learning a programming language or just want to sharpen your skills Athena is good for that too. Since Athena is written in Visual Basic you have an array of programming tools in order to accomplish anything you set your mind to create.

When was Athena first conceived?

It was sometime before August 5, 2009. At the time, I was working on making plugins for Ultra Hal (a chatbot first created by Robert Medeksza back in 1997)  I soon realized that I had lots of ideas which could not be implemented without actually creating a new ai engine and platform. With no real background in coding or any in-depth understanding of chatbots I began this ambitious task.

What language is Athena coded in?

She is coded in the most up-to-date version of Visual Basic. I chose this language because it is very easy to learn, it is used by many professionals, and it is available on most desktop computers on today’s market. I personally like it because it is very manageable. This is excellent for the upcoming programmer who is interested in learning a cutting edge language.

What types of Algorithms does Athena use?

Athena combines algorithms from neuro networks, markov chains, game engine style features, database search features, pattern searches, conversational skills, and general emotional awareness to create endless possibilities with Athena. I'm always improving the code.

What about community growth?

I'm creating Athena to be easily modified and coded. This should allow for the sharing of plugins and mods by the community. A forum will be provided for community growth hopefully in the future. Whether a community grows around Athena, I really don't know, but I hope it will.

When do you think you'd be ready to release a beta version for testing?
Possibly before the end of this year (2014). However, anything could happen between now and then so its only an optimistic guess.

How much will I charge for Athena?

I'm thinking about making Athena work only through donations. If you believe you will contribute by improving Athena in some way. For instance, by developing plugins, creating graphics or skins, or even helping others with tutorials then why should you have to pay to own Athena. Also, I personally have no desire to hound people for money. However, if you are so incline to donate $20 or so, it would certainly be appreciated. I believe Athena will be released under the GPL v3 license. I believe Athena should be shared and developed by all who love ai.

*

Snowman

  • Trusty Member
  • ****
  • Electric Dreamer
  • *
  • 140
    • minervaai.com
Re: The Athena Project
« Reply #17 on: January 03, 2014, 09:06:22 am »
This second Draft is for the Update video.

Disclaimer
Anything I say prior to release of Athena is subject to change, including the name of the chatbot, release date, or any of the chatbot's coding. So if any of this happens, do not be angry with me, you were warned.

Where is Athena in terms of development?

If I was to venture a guess I would say I'm 80% finished with the coding. There isn't much I can show you in terms of something visual that you haven't already seen. Right now Athena is nearly in a disassembled state and currently I'm coding on some very complex algorithms, but most of the basic skeletal structure and utilities are finished. I essentially have 80% of the parts ready to be assembled, and I will assemble everything together once I get the last code snippets the way I want them.

What is Athena capable of doing at this moment?

At this moment not very much (considering she's in pieces). She can do a wide variety for specialized database searches which will be used for future knowledge queries. She can open program via links, return random responses, respond to emotional keywords. She is capable at this stage to create any text based game within her code. She is connected to her own xml parser which I wrote and optimized using Visual Basic code. Athena's code is very well organized at the moment. She can also read stories, preform a variety of pattern searches. Virtually all the basics are finished. I just need to finish some of the more complex algorithms.

What would I like for Athena to be able to do in the near future?
 
I would say everything I or you can reasonably imagine. It would be cool though if I could utilize google's freebase data. Ultimately, my goal is to continually improve her as long as I can. Whether it be in optimization or perhaps an entirely new set of algorithms I want to see her flourish (such as it is). 

Will Athena be customizable like adding "brain modules", learning (from chatting, text files, Internet, etc.)?

Yes, Yes, Yes, and Hopefully Yes. This Ai is totally built around easy code editing and modding. With this in mind the users can create as many new brain modules as they want and to also add as many new plugins as they want. Athena is intended to learn from chatting with the user, as well as, from a text file. As far as the internet is concerned I personally don't want Athena to get information from there, seeing it is not very safe or accurate for a chatbot to roam the internet for knowledge. However, there are some online database that I am considering at the moment, namely Google's Freebase.

Given her current state of development, when do you think you'd be ready to release a beta version for testing?

I started this project before August 5, 2009 with the intent to make an ai engine, that's four years and four months to this current date. I've been coding off and on, taking very few breaks, and slowly drifting off into a blackhole of coding insanity.. all to get to this point. What took up most of my time was the learning curve, I wasn't even a decent coder when I started and had no idea how to create an ai. Now, If you were to ask me back then, “when will I be releasing Athena?” I might have gave an answer “sometime soon, maybe by December” but I would have never guessed I would be only 80% done over four years later. So predicting a release date to me is a bit sketchy. So I must be conservative here. Hopefully before the end of this year. Assuming nothing life-changing takes place, like being shot, framed for murder and sent to jail, marriage, etc.  So to repeat sometime this year, before December seems like a reasonable goal for a beta version.

During the Beta testing phase I assume I will send trusted testers a copy of Athena to try to workout some unforeseen bugs and to get needed general user feedback.

*

Art

  • At the end of the game, the King and Pawn go into the same box.
  • Global Moderator
  • ******************
  • Hal 4000
  • *
  • 4360
Re: The Athena Project
« Reply #18 on: January 03, 2014, 01:32:18 pm »
Now THAT's what we wanted to hear!! Nice breakdown of whys and wherefores!!

It sounds like a very promising path you're walking and we hope to both witness
and be part of the development with regard to input, testing, etc.

Thanks for the update!! O0
In the world of AI, it's the thought that counts!

*

Freddy

  • Administrator
  • **********************
  • Colossus
  • *
  • 6052
  • Mostly Harmless
Re: The Athena Project
« Reply #19 on: January 05, 2014, 04:58:35 pm »
Yep that's a nice run down Aaron, very interesting read. Reading from text files interested me. This was a nice feature in UltraHal that got removed pending further development, which was never done to my knowledge. The end user customisation is where you are going to really shine I think  O0

I agree in thinking Freebase would be a good addition, I was looking at Wiktionary a little while back, maybe that's something you could consider too.

Good luck in all you code :)

*

NickyBlue

  • Roomba
  • *
  • 17
    • Cosmos - A Quest!
Re: The Athena Project
« Reply #20 on: January 07, 2014, 01:55:18 pm »
Hey snowman! Joined your Athena forum! ... ;)

*

Snowman

  • Trusty Member
  • ****
  • Electric Dreamer
  • *
  • 140
    • minervaai.com
Re: The Athena Project
« Reply #21 on: January 08, 2014, 09:06:25 am »
Its been a while since I even looked at that forum... maybe more than a year. I guess I better check it.

Anyway, I guess I should tell you guys what I've been up to.

I've been scouring the web for free video editing software the last few days. I ended up with Lightworks and a conversion software called Eyeframe. Lightworks is a bit tricky to learn. I also played with the video editing software on Blender.

A few days ago I recorded another couple videos covering the content I laid out in this thread. I needed some better video editing software so that lead me on the hunt. I had to watch a few youtube tutorials just to load a video into the software... yep lightworks is weird. :p

I also did some work on Athena. I upgraded a few utilities, just messing around. Where I did most of my work was in brainstorming. I thought about what I needed to improve. I wrote down what I needed to prioritize. Went on a few long walks in the freezing cold, just doing some thinking. I ended up having some great ideas it seems.

Today, I finally got comfortable with Lightworks. All I need now is a green screen :) .

Just letting you guys know what I'm up to. There is still an area I need to brainstorm soon. Its the area of fine-tuning some NLP. I'll have to break out the whiteboard for this.

Well, its 3:00AM for me, better get some needed beauty sleep.  :uglystupid2:




*

Art

  • At the end of the game, the King and Pawn go into the same box.
  • Global Moderator
  • ******************
  • Hal 4000
  • *
  • 4360
Re: The Athena Project
« Reply #22 on: January 08, 2014, 01:54:44 pm »
That's nice Aaron just watch out for frostbite on those long winter walks! ;)

Some thoughts with regard to Athena...and I'll personify the software by using the word, "her" or "she".

One thing that I think would be important for Athena, much like with humans, is a Memory!
She needs to have a memory of past events, conversations, dates, times, places mentioned, last time chatted, what was discussed for a particular item.
For instance, we might have discussed trains and the fact that I had a loved playing with my gray, toy train as a child and it was my favorite toy.
A discussion like that or at least the pertinent part of it should be retained by Athena. She doesn't need to recall the entire chat log, but then again how for her to decide on what IS pertinent data? Perhaps if data is repeated or a key word like train (in this instance) is repeated, then she could attach or assign a weighted value to it and prioritize the subject.

Remembering with WHOM she had a conversation might not be as important but it would still be a nice touch to help users develop a relationship with their Athena on a more personal level. Avoid the usual, "Have we [chatted | talked | had a conversation | met] before?" If she knew, she wouldn't have to ask and deflate the user's eagerness to be recognized.

Dates, birthdays, anniversaries, weddings, etc. are all done to assist with the user recalling (not forgetting) a date or event and to allow the bot to personify the information for the user's benefit. "Hi Tom, today is the XX, Happy Birthday!!", etc. It's more of a personal experience between user and bot.

I'm sure you've tossed some of these and likely tons more but I think it's always good to stir the pot a bit as it helps bring some overlooked items to the top!
Kind of like a nice beef stew! Ohh...look! It's 10 degrees F, outside!! A nice pot of stew would be nice!! See you later!! (instead of CUL8R) as this is NOT the place for netspeak!

Let us know how or in what area(s) we might assist (if desired).
In the world of AI, it's the thought that counts!

*

Snowman

  • Trusty Member
  • ****
  • Electric Dreamer
  • *
  • 140
    • minervaai.com
Re: The Athena Project
« Reply #23 on: January 09, 2014, 08:03:00 am »
W8t i si ur poit  :P

I spent some time today, too much time, buying some lamps and getting a green screen. I ended up buying a king-sized sheet and dying it green... I think I need more dye. Its a lime green color now. :) I had lots of fun though.

I live in the southern part of Oklahoma, very near Texas, so its cold but no where near 10 degrees cold.
I hope you don't stick to something and stay there Art... yeesh!

Here's Some Detailed Thoughts

So building an Ai breaks down into different categories. Or levels of coding skill...

LEVEL 1
The easiest thing to code in an Ai is the simple search and response coding. The aiml code does this quite well.
i.e. If users say "What is your name?" Then the Ai says "My name is Athena".

LEVEL 2
You can make it more difficult by creating some wild and complex search features.

i.e. If the user says these words (in no particular order) "I, angry, shotgun, myself" then Athena can respond at random one of the following statements: "No, please don't hurt yourself", "isn't there a better way of handling this", "I love you, please remember that".  However, if Athena is in an Angry mood she could respond with "Sounds like you feel the way I do", "I have three things to say to you, but I'm too angry to know what they are", "who cares about how you feel, i'm angry!"

LEVEL 3
In this level, we are dealing with scripting entire conversations, as well as, creating them. Instead of just directly responding to a users response, you really want to know at what level of the conversation you are in first.

At the first level of a conversation you could have a choice of saying "hello", "hi", "how was your day", "Its been a long day at work". Now lets say that you said "how was your day". So Athena sees this and moves to the next level of conversation, "It was terribly difficult". Then the User responds with "How was it difficult". At this point a normal chatbot would forget what you previously said and so search for the new phrase. In the end an Ai like Hal might say "There have always been difficult times." This makes no good sense. However, if the Ai knows what level of conversation she is in then she might say "I had to wait for you, that was very difficult."

This layered type of coding is not that difficult to do. It sort of like keeping track of what room you are in when coding a basic text adventure game.

Of course, you can create these Conversational Hierarchies (CH) by hand just like you were creating a game. You could then share this CH script with others. I have a program to make this easier, but it needs improvement. There are other ways of creating CH scripts. If you had a large database of conversations on hand, then you could create a CH script through parsing. Another way of creating one is through directly teaching Athena, if she doesn't know what to say, you can just tell her. Over time a very large and extensive script can accumulate. Randomness can be added and a like and dislike function can help teach her which answers you prefer. This is especially important if you are getting your information from external conversations.

There are a lot of details I'm leaving out.

LEVEL 4
At this level we are now having to keep track of specific learned information. We must first extract the information from the user sentence (a sentence has a relational data structure, everything in the sentence is related to each other in some way). Then we must store this information in an easily accessible way. This information should be pulled apart and examined to see if new information might be extrapolated from it. This extrapolation can be done while the Ai is idle. Next, when the user says "It's been a long day." the Ai needs to make sense of this and respond with sense in return, "That's too bad, if I was there it would have felt like a short day."

This is something like how Data, C3PO, and Hal (the original) becomes life-like in conversation.

However, there is a shortcut way of doing this that UltraHal utilizes. Its when you spell out what information you want to store. Its like the Standard Definition of Ais. The Ai stores birthdays, appointments, contacts, phone numbers, etc. It can also store names, your gender, as well as, anything else you specify. In order to code this, the Ai first needs to recognize that the sentence is intended to be parsed and then finally it needs to actually extrapolate this information. Then it stores it. Later on when the user asks the Ai a specific question then the information is retrieved.

i.e. User say, "I have an appointment on December 25, 2014." The Ai recognizes that it is being sent the date of an appointment with the "I have an appointment on" phrase and then the Ai extrapolates the information by getting everything to the right of the word "on". The Ai will also check to see if this is a valid date. Then the Ai will respond with "Ok, I will remember that you have an appointment on December 25, 2014, what type of appointment will it be?" I call this the poor man's NLP (natural language processing) system.

Of course, there is the HD version of NLP. That's what I'm trying to work on at the moment. To make it easier for myself I created a Constructed Language, that way, it will be much simpler to get needed information from it. There are a few problems with this language though, but its a starting place.

Once we have an accessible form of sentence structure (i.e. my constructed language) to extrapolate from then we need to know how the information needs to be stored. I'm not referring to database structures but to the types of knowledge that needs to be stored.

There are three types of knowledge that exist: #1 Simple Information, i.e. a cow can give milk, a chicken can lay eggs. #2 Instruction, i.e. If you don't notice me texting for awhile tell me to wake up. #3 wisdom, if a chicken can cross a road then so can you (conceptual understanding). In order for the HD version of NLP to be complete we need to be able to extrapolate these three types of knowledge from the user's input (or textfile, web, etc).

A sentence can be tagged so that the Ai can easily distinguish between these three. (this is what make this constructed language cool). i.e  information(a cow eats grass), instruction(go make the cow eat grass), concept(cows can run therefore humans can run) Once we've tagged a sentence to death we can then feed it to the Ai. Then the Ai stores this to appropriate databases, one for each type of knowledge. The verbs, nouns, and corresponding adjectives and adverbs are all tagged appropriately.

Once the knowledge is acquired then a subroutine needs to create new information based on the data. For instance, the user tells the Ai, "a cat can run because he has legs" then the user says, "a man has legs".  So later the User asks the Ai, "can a man run?" the Ai responds with, "I think a man can run because he has legs". This new knowledge was gathered from the two previous sentences in the information database and then stored in the concept database (or perhaps only stores it when confirmed as true by the user).

Ultimately, when the User says something to the Ai then it can draw information out of a database based upon the content of the user's sentence. So there must be some way to distinguish what type of information needs to be draw from the Ai's database. Is the user asking a question about information, or a concept, or instruction? Is the user teaching information, a concept, or instruction? This can also be tagged onto the user's input with the constructed language.

An instruction should be created with the advent of information and concepts. For instance, if a user says some information,”a cow eats grass” then the user says a concept, “an ai can feed a cow grass” so the Ai surmises an instruction “I will feed the cow grass”. So then will the Ai feed the cow grass? Only if two things will occur. First of all, can the Ai actually do this task? And Secondly, does the Ai want to do the task? Therefore there must be a rating on tasks based on the Ai's personal preference and a list of abilities.


LEVEL 5
What kind of behaviors can the Ai have? It would be cool to actually tell her what to do with whatever skills she has and then she does it. Hal has some of this ability, like opening a program on command. Its also easy to tell an Ai to remember something directly. I.e User says: When I say “up” you say “down” and then the Ai does this. You can tell an Ai to not say something, count to 10, tell me the time, or wake me up at 6:45AM. However, it would be interesting for the user to make up some task and give her the rules. For instance, User says, “I want you to feed some fish.” Ai says, You gave me some fish?, I'm so happy”. Then she says “Where are the fish?”, User says, “they are in your room.” Ai says, “ok”, user says, “you must feed your fish twice a day”, Ai says, “Ok, I will”. Later that day, User says, “did you feed your fish” Ai says “Yes, I did.”

In this example you are essentially creating an environment for the ai to live in and to do things within that environment. This is like an imagination. Since the Ai has no means of actually seeing, hearing, touching, tasting, and smelling then you will need to give it the rules yourself. Or maybe a set of basic rules could be written before hand, i.e. “a thing can be held, an arm can hold things, an ai has arms, a hot thing can not be held, etc. “

Ultimately, an Ai, after learning information, concepts, and instructions, could actually carry out those instruction in its so-called imagination. User says, “Hello” Ai says, “I'm dead”, User says, “how did that happen?” User says “I was killed while climbing mount Everest”, User says, “sorry to hear that”. It would be interesting if certain rules were unknown to the Ai and set in her memory. Like, “some dogs can bite” and the Ai sets this as a random chance, so next time the Ai takes the risk of petting a dog and ends up getting bitten.


FINAL THOUGHTS

If would be great if all these ideas are fully implemented in Athena. I got the search features in-the-bag. I got the conversations idea pretty well worked out. As for the NLP, there is some problem with using my constructed language. It will definitely make it easier to communicate with Athena but it is something a person must learn to use, thus making it a con for the average person. Perhaps there could be some coding to translate a Natural language (ie English) into the VLL constructed language, and back again. It would be difficult to do, most natural languages are pretty crazy. (Although, I did make a rudimentary Parts Of Speech class for Athena.)

I have already written a parser for my VLL language. I have previously built some test structures to figure out what to do with the incoming information from the user's input. The information I've provided here will help me design further. As for designing an imagination, this is really the first time I've given it any real thought. I'll have to work out some details yet.

If I wanted to I could just work on the conversation structure and basically build Athena around that. Athena would still have search features. She would have a poor man's NLP and who knows if she'll have an imagination without my Constructed language. If I did this you wouldn't have to worry about learning the VLL language. Unless, of course, an interpreter is made. I really don't know. It would cut down on the time it would take finishing her, but it wouldn't quite meet my ultimate expectations for Athena. This seems to be my toughest decision yet.

And yes Art, I need to add some time stamps to any database storing and maybe retrieval also.
 ;)


*

Art

  • At the end of the game, the King and Pawn go into the same box.
  • Global Moderator
  • ******************
  • Hal 4000
  • *
  • 4360
Re: The Athena Project
« Reply #24 on: January 09, 2014, 10:21:55 am »
Aaron,

Two things I've tried to work on (with limited success) in the past was to allow the bot to have or "formulate" Dreams. These Dreams are based loosely on previous conversational bits and pieces then stringed together to allow the user a Shared reference of what your bot dreamed. The bot could also use items that might have carried some weights (as in repeated items or favored items or thoughts of the user), some novel words or phrases that the bot might have learned during a given chat. The bot might extract some useful data from one of it's chat logs to cobble together then recalled as a Dream. Lastly,
the bot could simply have a series of pre-scripted statements it could use to recall as a dream experience or memory.

The other idea was to allow the bot to keep a secret. This "secret" would not be shared with any other user(s) other than with the originator or said secret.
In most times, the bot would say it had a secret but a clever user could sometimes pry it out or trick the bot into conveying the secret when it wasn't supposed to. A clever user (not the originator of the secret), might be able to go into the code to find the secret so I was told by a friend that perhaps it should be encrypted once understood by the bot. This would obviously add to the code but it might make for a more interesting bot. The secrets would be cute sharing not something of national importance, as if a bot was interested in that anyway!

Just some more fodder for the cannons!!  O0 ::)
In the world of AI, it's the thought that counts!

*

Snowman

  • Trusty Member
  • ****
  • Electric Dreamer
  • *
  • 140
    • minervaai.com
Re: The Athena Project
« Reply #25 on: January 11, 2014, 09:15:28 am »
Your Dream algorithm sounds a lot like how a markov chain works. Part of what it does is keeps track of the frequency of words and phrases. That could be used to piece together a generated sentence. In fact, it has been used for things similar to that before.

You could have layers of investigating before you could get the secrete out of her. I gave it some thought before but its been a while. I think it would be easy create using the conversation grid I've already mentioned.

Oh and I ended up just buying a green screen off of ebay. I'll find out if it will work for me whenever it arrives. Apparently, it's hard to find the right color green.

Today (1/11) is my birthday too. I turn 34. Just thought I'd mention that.

woo hoo!

*

Bragi

  • Trusty Member
  • ********
  • Replicant
  • *
  • 564
    • Neural network design blog
Re: The Athena Project
« Reply #26 on: January 11, 2014, 09:37:39 am »
happy bday snowman...

*

Art

  • At the end of the game, the King and Pawn go into the same box.
  • Global Moderator
  • ******************
  • Hal 4000
  • *
  • 4360
Re: The Athena Project
« Reply #27 on: January 11, 2014, 03:25:28 pm »
Well Happy Birthday, Snowman!!  My Dad's was yesterday! (although he's quite a bit older!)  ;)

For that green screen, did you try pool table felt? I'm not sure what shades of green can be had for them but you might run across something close.

Also check out those fabric stores in major cities and maybe online like JoAnn's Fabrics or craft stores like Michaels. Just a thought.

Lastly and maybe the best is: http://www.filmtools.com/ligdep/chromkeyfab.html
They have screens, paint and lot of film related items!
In the world of AI, it's the thought that counts!

*

Freddy

  • Administrator
  • **********************
  • Colossus
  • *
  • 6052
  • Mostly Harmless
Re: The Athena Project
« Reply #28 on: January 11, 2014, 03:40:10 pm »
Happy Birthday  :)

*

Snowman

  • Trusty Member
  • ****
  • Electric Dreamer
  • *
  • 140
    • minervaai.com
Re: The Athena Project
« Reply #29 on: January 12, 2014, 02:59:25 am »
Thanks guys for the birthday wishes. I guess its all downhill from here.   O0

Today, I ate some cake and ice-cream with family, got a couple shirts, and got a new keyboard to play with.

It was a good day  :)

 


Users Online

25 Guests, 2 Users
Users active in past 15 minutes:
ivan.moony, infurl
[Trusty Member]

Most Online Today: 35. Most Online Ever: 208 (August 27, 2008, 09:36:30 am)

Articles