Teen Programmers Unite  


Return to forum top

AI Conversation Program

Posted by CodeRed [send private reply] at June 02, 2003, 08:46:06 AM

Since I haven't written anything in a year and I was wanting to get back into it I was thinking of writing a program where you can talk to an Artificial Intelligence and actually have conversations with it. The main goal of the conversation would be for the AI to learn as much about the person it was talking to as possible. I was thinking of using a database set up with a tree and each ending branch on the tree would be an array of strings. For example, the first branch in the tree would be the first word in the sentance that you write to it, it could be things like "I, You, It, She, He" Etc. Then, lets say the first word you write is "I", the next branch would be the second word in the sentance, for example "Like, Am, Can, Have" Etc. Okay, so now lets assume you wrote "I Like", from there their are millions of possibilities for the next word, so instead it could be the end of the branch and be an array of strings, each element of the array would be a word representing something you like, such as "dogs, eggs, boobs" etc. But of course the next word could also be "to", as in "I like to..." so instead of adding that to the array it could be another branch going down to another array, consisting of things like "I like to cook", "I like to eat" or whatever. But, once again you could say "I like to play..." or "I like to eat..." so there would have to be other branches for all of the things you like to play or eat or watch or collect or whatever. The point is that each branch would end in an array containing all of the final words in the sentance. Anyways, thats just an idea I had while laying in bed trying to sleep last night, I do all my best thinking like that. I know this is a lot more complicated than I think it is, and so far all I have is a way to store all the data that you could give the program, and nothing in the way of making it respond intelligently. So what do you think? What should my next step be?

Posted by CodeX [send private reply] at June 02, 2003, 10:09:27 AM

Well, since you're doing it in english i assume, i would suggest two methods.

1) Use the branching system you're talking about and have loopbacks for prepositions. This would generate correct sentences, but i'm not sure how intelligible they will be. It depends on how you make it select words. Of course this method has many drawbacks. The only way to expand its vocabulary is to have it analyze sentence input from the user and break down the parts of speech and store them on the appropriate level of the 'tree'.

To make it speak intelligently, you'll have to have some system that realates words to each other. You can design one to work off of user input and what they say, which means you could balance weights between different levels depending on how the user speaks. This would cause the system to tend to generate something the user themself might say. It also means that (unless the user speaks in this manner) it won't generate a sentence like: I like to eat shoes.

So, weighting links between words should solve the problem of intelligent speaking in this method.

2) The other method involves starting with a clean slate. The words that the program logs are not classified, just related to each other in some way. It also uses the weighting method and allows the program to respond with what the user has entered before. Slowly, it self-organizes the information. For example, if it saw many sentences using the word: "the" and it always came before a single thing, it would use that word when specifying a single thing. This method is harder to understand for humans (it's called the bottom-up approach). It depends on self-organizing systems as opposed to method 1 (the top-down approach) which depends on constructing sentences based on a pre-existing organized system.

Hope this helps

Posted by taubz [send private reply] at June 02, 2003, 06:55:28 PM

I'm going to probably need to do something like the first part of this for my senior thesis next year. That said, I'm not sure it's a realistic goal at the level that I would need it to work.

Google search for "link grammar." It's a good natural language parser that will help you build the tree. Good C interface.

- taubz

Posted by ItinitI [send private reply] at June 02, 2003, 09:14:36 PM

If I was going to do this, I would use a combonation of AIML, XML, and Java...like Alice. AIML [though not really a programming language] seems to be rather nicely designed for multipul scenarioistic phrases.
I had an idea of creating either an AI layer to over lay a shell [Bash for example] or an actual AI shell itsself. The idea would be to make the computer more humanistic by being able to use english terms rather than simply just commands and offering advice for situations...

Posted by CodeRed [send private reply] at June 02, 2003, 09:30:14 PM

Itinitl, That sounds like a really cool idea, making a GUI that implements an AI to help the "computer retarded" (as I like to call them). This is the kind of thing you could sell to microsoft for millions of dollars, maybe Ill start working on this instead...

Posted by ItinitI [send private reply] at June 02, 2003, 09:52:59 PM

Glad you like it...the intent was kinda dual, to be help for the computational impaired and also "the hacker's best friend". Though as you pointed out, an overlay to the DOS prompt and Windows in general could be quite lucrative.

Posted by Mike_L [send private reply] at June 08, 2003, 07:03:33 PM

I think that AI will not be useful until massively parallel computing machines are available. I also think that the bottom-up approach will be the only viable option. The trouble with AI is that it exists in a computer. Any knowledge that it can have will be purely academic - just words. Thus the first useful AI will be able to help you find information, but won't be able to make sense of real-world ideas. The computer will "know" that the sky is blue, but it will have no idea what blue looks like, or what other colors match it, or in what way the sky's color is different from the ocean's color.

So before AI is able to make real sense of the world, we will need to build AI that has some of the real senses of humans: vision, hearing, touch, and temperature. Just like a bottom-up text-only AI would have to be trained on texts and conversations, so a physical AI would need to be trained like a baby. It would have to start out moving slowly and learn to interact with the world in gradual steps. If such an AI could be made to function on digital systems, then it could be copied and duplicated. I have a feeling, though, that it will be impossible to create a capable AI without analog states. These are just my generally uninformed ramblings... I'm studying robotics, so I am naturally interested in the physical applications of AI. I'm just now learning about electrical circuits, so I'm quite a long way from being ready to build anything useful... hence my uninformed opinion. =)

You must be logged in to post messages and see which you have already read.

Log on
Save for later automatic logon

Register as a new user
Copyright TPU 2002. See the Credits and About TPU for more information.