View Full Version : programming challenge
hardyfoster
03-20-2008, 09:17 PM
hi,
it's probably a simple fix, not that something is "wrong". i'm writing this only from a programming point of view. having said that,
i saw a video where a kid was playing tug of war with pleo and was very quickly pulling the leaf out of it's mouth. yet, pleo continued to "play tug of war" as if the leaf were in his mouth.
as a programmer, i would have liked to see pleo recognize this quick switch and change.
pleoguy101
03-21-2008, 05:44 AM
hi hardyfoster!! haven't heard from you in a while!! can I see this video?
kchamster
03-22-2008, 03:27 AM
hi,
it's probably a simple fix, not that something is "wrong". i'm writing this only from a programming point of view. having said that,
i saw a video where a kid was playing tug of war with pleo and was very quickly pulling the leaf out of it's mouth. yet, pleo continued to "play tug of war" as if the leaf were in his mouth.
as a programmer, i would have liked to see pleo recognize this quick switch and change.
Yeah, Domino seems to do that sometimes too! Now that you mention it it would be cool for him to learn....
pleoguy101
03-22-2008, 04:25 AM
Yeah, Domino seems to do that sometimes too! Now that you mention it it would be cool for him to learn....
these are all good suggestions that should go into the new OS upgrade, hopfully the new upgrade will allow pleo to develop his own personality, and learn over time:)
lights
03-22-2008, 09:05 AM
Hi i have tried this several times and found that my pleo does recognise when i have pulled the leaf out and makes a "oh" noise and waits for me to put it back in again.
pleoguy101
03-22-2008, 09:18 AM
Hi i have tried this several times and found that my pleo does recognise when i have pulled the leaf out and makes a "oh" noise and waits for me to put it back in again.
my pleo does too:)
PleoPet
03-23-2008, 11:13 AM
>... i'm writing this only from a programming point of view
You raise several issues.
The hardware detects the leaf missing very quickly, it is up to the Pawn program (the personality) to react appropriately and end the tug-of-war mode.
If simply reporting it as a bug (ie. taking too long to exit the tug-of-war), I suggest posting it under the UGOBE suggestions, but I doubt it will be high priority for UGOBE to fix/change.
It may be more interesting to tweek the personality yourself, so you can customize the behavior any way you want. Change the tug-of-war logic, or add your own game etc.
If you are interested in that level of programming please ask UGOBE to consider releasing the Pawn source code to the basic personality. That way programmers could attempt many "programming challenges" to customize and improve the personality, add new AI features, and generally improve the built-in personality without having to start over from scratch.
hardyfoster
04-01-2008, 12:44 PM
hi pleoguy101,
ya, i've been busy working on a program that will trade financial markets. it's close, but i want closer.
are you familiar with programming yourself or do you have an interest in it ?
pleoguy101
04-01-2008, 02:16 PM
hi pleoguy101,
ya, i've been busy working on a program that will trade financial markets. it's close, but i want closer.
are you familiar with programming yourself or do you have an interest in it ?
yes.. I am interested in programming:)!!! I do have some knowledge of programming.. but I'm very far from anything professinal:)
hardyfoster
04-02-2008, 09:41 AM
that's fine.
you have an imagination is all that matters.
you could probably help me devise what i am thinking concerning how to have a conversation with a computer (robot).
the program itself i don't think would be as difficult as devising how it would be setup. i'm not talking about the silly chatterbots and other "dumb" conversing agents.
i am thinking about a computer that learns (at least it seems like it) because it will break down the sentence structure to properly understand what is being talked about.
each word will have multi-values so it will be able to keep words in context.
an example would be
if I said i am going to get the soap.
well, the computer doesn't know what kind of soap you're talking about. there's car soap, body soap, floor soap, dishwashing soap, etc.
so it would need to find out what kind of soap before it can continue the conversation.
the way i envision it being able to set a word in it's own context and relation to other words would look something like this
5.15.235.88.75
where each number is a category and has some kind of meaning of how to use a word.
well, now that i gave my idea out, someone will probably program it. ha ha....
the program would be small as the computer would learn as you talk with it. it would write it's data to disk of course.
the cheap chatterbots don't break down each word.
if I said
"I am going to get a ball"
has a different meaning than
"I am going to get the ball"
pleoWhisperer
04-02-2008, 11:18 AM
\
the cheap chatterbots don't break down each word.
if I said
"I am going to get a ball"
has a different meaning than
"I am going to get the ball"
but "ball" can also mean more than one thing. As in "I am going to have a ball". ;)
hardyfoster
04-02-2008, 07:09 PM
i know.
all this will be considered because in the multi-number format it will also contain words that do not go together with exceptions as to what it is taught.
for the most part, what it will be doing is be able to analyze and break down sentences. (remember doing that in english class).
what's an adjective, adverb, noun, subject, synonym, etc....
the word "big" can be an adjective or an adverb.
the challenge comes in to the multi-number format. since sentences have a certain structure to them, breaking them down is easier than deciding how to have the multi-number method i am thinking of relate to the other words. this format though, will allow the computer to know how to structure a sentence.
ball can also mean fun. but a sentence of "hit the fun" doesn't make sense. "hit the ball" does.
so it would learn "have a ball" means fun because "i am going to have a basketball" doesn't make sense in this particular sentence.
i need to come up with a series of questions for it to ask so it can categorize each word or phrase.
it's not the programming part that's hard, it's coming up with a method so the computer can recognize everything. that's where the multi-number set comes in. but how big does the set need to be ?
how many different sections does one set need ?
if i'm talking about a basketball then say
'i am going to get the ball". or "a ball"
it knows what kind of ball i'm talking about.
if there was no preceding information and i say
"i am going to get the ball" or "a ball", it would then ask what kind of ball since there are many different kinds.
on a more advanced level (which i'm not looking to do)
if a robot lived with you and knew the only ball you had was a football. then you could say i'm going to get the ball and it would assume football. but that's probably for third generation .
obviously what i'm thinking of is 2nd generation.
i actually think Eliza is alot better than the chatterbots i have seen.
sandro
04-02-2008, 10:09 PM
Sigh. They're way ahead of you...
One large linked-lexical database (WordNET) is already 150,000+ words with 200,000+ word pair relationships. Even richer semantic meaning can be derived from an ontology which includes axioms for relating words together ("throwing a ball" makes sense, "throwing ball a" less so, "ball a throwing" not at all). The largest freely available one (SUMO) is 20,000 terms with 70,000 axioms.
It works out that the programming isn't simple. It's the whole problem. Even if a computer understood everything you said perfectly, reasoning on an appropriate response is an open problem.
I can tell the computer that "I'm going to get the ball". And it could know exactly which ball I mean, where it is, and a million other facts about the universe, but having it figure to respond, "I'll go get the bat" is pretty much an open problem. (Actually this is probably solved for limited set universes of a small number of facts, objects and words, but doesn't work in open contexts).
The truth is that you can get a pretty basic system up easily (I hacked up a research quality summarizing program during a single lecture once), but getting something that meets the expectations of the average 4 year old is pretty much not going to happen without some serious genius.
hardyfoster
04-02-2008, 10:21 PM
hi and thanks. i think they are after something different than i am.
i'm not seeking groups of words / word pair relationships. the multi-number set would be per word. each word would have it's own multi number value. the challenge is devising what each number in the multi number set would represent.
by their method yes "ball a throwing" doesn't make sense. by what i'm thinking, even these partial sentences follow sentence structure. there is a verb and a noun. it would still be able to verify in asking "oh, so you want to throw the ball ?! ok!"
if the previous conversation were about baseball and you said "i'll go get the ball" it can assume among other choices and ask " do you want me to get a bat?"
if there were no previous conversation and you said i'll get the ball , the only response would be something along the lines " and what are we going to play ?" (or do instead of play).
that's what's lacking in the chatterbots. they group things together instead of breaking down sentence structure. they don't value articles such as a, an, the. yet these can make the sentence mean something different.
i'm going to get a ball
can meaning something different from
i'm going to get the ball.
what if i said
she has gone to get the ball....
then the computer would know the person has already left to get it and wait for their return
i think once the hurdle of devising the multi-number set can be devised, the programming part would be easy.
hardyfoster
04-02-2008, 10:29 PM
i just peeked at word net. perhaps we'll both be able to help each other out. but here is a big problem and it's what i mean.
from the word net FAQ
how come i cannot find the words
of, an, the, and, about, above, because, etc. ?
WordNet only contains "open-class words": nouns, verbs, adjectives, and adverbs. Thus, excluded words include determiners, prepositions, pronouns, conjunctions, and particles
excluding any words would not help the computer to analyze a sentence properly with what i am envisioning.
"i'm going to get the ball above the car because mom told me to get it down"
vs.
"i'm going get ball car mom told me get down"
the latter sentence would not make any sense to what i'm planning on doing.
hardyfoster
04-02-2008, 11:04 PM
i just emailed the CEO asking if his open source program could help me. I just stumbled upon this out of curiosity and by accident.
www.brainhat.com
time for us to get to work pleoguy !
i'll let you know what he says when he emails me back if his program is suitable for what i want to do.
hardyfoster
04-02-2008, 11:17 PM
he made a new homepage for downloading the stuff you need
http://www.brainhat.com/sdk/index.html
i've got alot of reading to do ! but it's going to be fun.
hardyfoster
04-02-2008, 11:26 PM
ok, enough with the posts already !
here's some clips of brainhat in use for those who are interested.
http://www.brainhat.com/jennifer.php#other
sandro
04-03-2008, 02:48 AM
excluding any words would not help the computer to analyze a sentence properly with what i am envisioning.
If I understand your explanation, your entire idea is predicated on the work already done in WordNet.
Your "multi number value" is what is better known as a synset. "ball, football, baseball" might all belong to a particular synset. While "ball, party, dance" might belong to a different synset.
WordNet excludes words like "and, of, the" because they are singletons each has a specific (and usually single) use. "And" is always a conjunction, "the" is always a preposition. There's no need to include them in the lexical linking because you can treat them directly.
And while you don't think you're interested in word pairs, the truth is that your methodology requires them. I can "throw a ball" and you still might not know what kind of ball I'm throwing (spherical or party). Add the word "masquerade", and the particular instance of "ball" is now clear. In general the only way to disambiguate a particular word (with multiple meanings) is by looking at context, and mostly context comes from surrounding words (the simplest form of which is word pairs).
Part of speech tagging ("breaking a sentence down" in your previous post), is actually a really well understood problem. Even getting a computer to generate grammatically correct sentences is easy. But I'm not sure where you believe the content of the sentences is coming from . In your examples you assume the presence of some kind of intelligence (or at least a sophisticated expert system). In your examples you mention "if the previous conversation were about baseball...''do you want me to get a bat?'' " How would your system associate baseball->ball->bat? Ontologies might contain that particular relationship, but even then how does your system even choose what sentence to make involving bats?
You gave a pointer to brainhat, yet it seems like exactly the kind of system that doesn't work. Note that to create even the limited chat ability in the audio clip it took several dozen facts, and that it's *very* easy to run it off the rails even on things it has in the fact store. (and it makes grammatical mistakes). For instance if you ask it why it doesn't like bluefish, it won't mention that it was in the hospital from eating sour fish (both facts it does have in the example datafile you linked to). The audio clip includes 1 or 2 obvious grammatical errors in the speech. Brainhat suffers from the failure of other rules based systems (like Eliza) in that the average human will pass the scope of limited rules systems very quickly. Larger rule sets slow the system down (possibly excessively).
-Sandro
andreivc
04-03-2008, 11:54 AM
Instead of starting from scratch, can you smart people take an existing little program, like winalice (that also has 'moods' to be linked to pleo's moods, if there is such a thing), and adopt it for pleo?
Communicating with pleo using pc voice recognition or simple text interface would be nice
pleo can walk around the table, and you can talk to it through your PC, and it would react.
Challenging will be to hook up actions to the chatting logic.
But the end product could be lots of fun.
Sample conversation: Hello, pleo.
Pleo looks up: hello, john. How are you this evening?
- pleo, please tell me about Mary.
Pleo looks like he is thinking and says: This is what I know about Mary. Mary's birthday is April 7th. Mary likes chocolate. Mary can be naughty sometimes. Mary's number is 4334033.
- thank you, pleo. Go explore now.
Pleo plays happy and says: you are welcome, John. You are always polite with me. I will wait until you are ready to play with me. - pleo leaves or goes to sleep.
sandro
04-03-2008, 12:19 PM
Andreivc,
actually, none of the last bit of the discussion is really about Pleo (since it would require significantly more on-board computing power than Pleo has to accomplish even a fraction of the kinds of things I think HardyFoster is talking about.
You PC could generate all of the conversation, and just have Pleo "act" like it's coming from him, but even that's beyond the scope of the abilities we have to programmatically control Pleo.
PleoPet
04-03-2008, 12:28 PM
> ...can you smart people take an existing little program, like winalice
If interested, check out BrainBo/HomieGate (long since discontinued)
http://www.aibohack.com/210/brainbo.htm
Demo video with AIBO: http://www.aibohack.com/movies/apv_brainbo.mov
FWIW: BrainBo/HomieGate uses the Alice chatter-bot data, but not the engine. The AliceBot engine, like most chatterbots work best with a keyboard.
As discussed on this thread, hooking in a voice dictation engine into a text processor can be tricky and much information and context can be lost (even in very simple cases "What time is it", "what thyme is it", "what rhyme is it"...)
Creating a language aware voice recognition engine can be a lot of work. There is much research and practical application of this technology, but will never be perfect.
My approach with BrainBo/HomieGate was more practical. Not using free form voice dication mode, but using a relatively large vocabulary of phrases and variation. The free/built-in Windows voice recognition engine does this for you. Some examples: http://www.aibohack.com/homie/vcmd.htm
======
re: will this work with Pleo?
If you are happy talking into the PC microphone and having the Text-To-Speech synthesized sound come out of the PC speakers, then this is relatively easy to do. You need a wireless connection to the Pleo (using BlueTooth or XBee for example) to control the robots actions and receive sensor input. Pleo becomes an additional 'performer' to the PC based chatterbot program.
Streaming audio from or to the Pleo might be possible, but that would tax the hardware.
NOTE: The AIBO version does stream audio to/from the robot, so you talk into the robot's ears/microphones and the robot talks back through it's mouth (see the demo video). IMHO this makes a much better experience. The robot becomes the gateway to the PC program.
pleoWhisperer
04-03-2008, 01:59 PM
Like AIBO (and Zeno) you really do want the pleo to be the interface, with the PC just doing to computing that pleo can't.
andreivc
04-03-2008, 03:23 PM
sandro, that's what i meant - pc do the work, pleo do the moves
thanks to all for the interesting discussion
pleoWhisperer, I am all with you on that - the more processors the better
in regards to what Mr.Pleopet said, it was a while since i heard about brainbo... Pleo is not going to be all that, I guess. But once the developer tools become available, I am sure Mr.Pleopet and Dogslife and others will come up with really cool stuff. When you look to things that they have done - brainbo, dogslife, etc., you get an idea of the quality of work that they do. They are crazy in a good kind of way :)
hardyfoster
04-03-2008, 03:24 PM
hey sandro,
thanks for assisting in my thoughts about this.
but bat would have a linking to baseball. i'll have a look at the synsets, but off the top of my head it seems like it might hinder learning.
what if some new kind of ball used with a bat were developed in the future ? Or if some game in another country uses a ball and a bat and
there is no
synset for it ?
that's why each individual word will have it's own number system. so you may have several "bat" words with their own numerical formats.
speaking on the topic of conversing with Pleo, andrevic (can't see your name right now)
i don't think pleo has the capability to do that (i could be wrong)
but they are working on what you're talking about with Papero.
http://www.incx.nec.co.jp/robot/english/robotcenter_e.html
sandro
04-03-2008, 04:42 PM
hey sandro,
thanks for assisting in my thoughts about this.
but bat would have a linking to baseball. i'll have a look at the synsets, but off the top of my head it seems like it might hinder learning.
You confusing synsets (which are groups of words that form synonyms) with ontologies which link words into concept groups.
what if some new kind of ball used with a bat were developed in the future ? Or if some game in another country uses a ball and a bat and
there is no synset for it ?
This exists today. It's called cricket (for one), or stickball, or t-ball. If there's no synset, it would have to be added. How would your multi number system add it without human intervention.
that's why each individual word will have it's own number system. so you may have several "bat" words with their own numerical formats.
So how do you propose the disambiguate them using your number system? Cricket uses terms like "bat, ball, pitch, batter, etc". Which are the exact terms for baseball -- of course in that list "pitch" in cricket means "field" in baseball.
Again WordNet links a words with synonyms (and antonyms, and a few other ways, but synsets are the important bit here). This gets you the fact that sometimes a "bat" might be called a "stick, louisville slugger, or homerun hammer" (although I don't know that this example is actually in WordNet). But that they all refer to the same item.
An ontology (like SUMO) links words together into conceptual groups (so that you can discover that the bat in question is for baseball).
If a concept isn't in the ontology it either has to be added by hand, or it has to be learned from an inference engine. I don't see how you would do any better with your number system.
Here's a link to the WordNet entry for Ball (I've expanded the full hyponym entry for the most common noun form): http://wordnet.princeton.edu/perl/webwn?o2=1&o0=&o7=&o5=&o1=1&o6=1&o4=1&o3=&r=1&s=ball&i=1&h=110000000000000000000000000000000000000000000#c
WordNet is clearly incomplete (to ball: syn for to cry isn't in it for instance).
pleoguy101
04-03-2008, 06:08 PM
that's fine.
you have an imagination is all that matters.
you could probably help me devise what i am thinking concerning how to have a conversation with a computer (robot).
the program itself i don't think would be as difficult as devising how it would be setup. i'm not talking about the silly chatterbots and other "dumb" conversing agents.
i am thinking about a computer that learns (at least it seems like it) because it will break down the sentence structure to properly understand what is being talked about.
each word will have multi-values so it will be able to keep words in context.
an example would be
if I said i am going to get the soap.
well, the computer doesn't know what kind of soap you're talking about. there's car soap, body soap, floor soap, dishwashing soap, etc.
so it would need to find out what kind of soap before it can continue the conversation.
the way i envision it being able to set a word in it's own context and relation to other words would look something like this
5.15.235.88.75
where each number is a category and has some kind of meaning of how to use a word.
well, now that i gave my idea out, someone will probably program it. ha ha....
the program would be small as the computer would learn as you talk with it. it would write it's data to disk of course.
the cheap chatterbots don't break down each word.
if I said
"I am going to get a ball"
has a different meaning than
"I am going to get the ball" I may know exactly what you are trying to ask me, or I may be totally confused, tell me if I am:o:) as a programmer, you would probably rate me as "beginner" but heres how I see it, if you ask the computer " I am going to get the ball" you maybe should be more specific and say " I'm going to get the basket ball"
the computer might mainly have to pay attention to and learn the word "basket ball" and respond something like, "lets shoot some hoops":D or somthing, I'm not sure if your looking for the computer to learn the word "basketball" or already have the words programmed into it, with a responce but like I said, my programming knowledge may be ranked at beginner, so the rest of the stuff is up to really good programmers:) but as I said, I might be a confused, and need more clarification on what everyone is trying to solve, or I could be right on the mark, I', not sure, but tell me if I'm confused, and please clarify:):o
hardyfoster
04-03-2008, 08:05 PM
yeah you're doing fine.
thanks sandro, gives me some stuff to read and think about.
pleoguy, don't worry about your programming skills. if you can think something, it can be programmed in most cases. you can think of a type of game you'd like even though you don't know how to program it. but yeah, you're along the lines of what i'm thinking.
if the computer doesn't know something, it would ask a series of questions so it would be able to classify the word. therefore it learns, the challenge comes in is "what set of questions."
i can think of how i would want a voltron game, although i don't know how to actually program it. i got a rough start on one many years ago, but that was when computers weren't powerful enough at all to even create / run a voltron character.
even now you'd need a top of the line computer.
vBulletin® v3.6.8, Copyright ©2000-2008, Jelsoft Enterprises Ltd.