|
Joined: Oct 2007
Posts: 51
Babel fish
|
OP
Babel fish
Joined: Oct 2007
Posts: 51 |
Some of you may have heard or seen the movie Animatrix.
In this movie, it is described that humans have creates robots, programs, much like we have today, but these robots and programs have evolved, and developed their own conciousness.
In other words, they became living creatures, only they were created by humans.
And they were intelligent, even more than humans were, which led to them creating better, and more efficient Artificial Intelligence.
In recent days, I have decided to take on the challenge of creating an artificially intelligent bot, coded in mIRC scripting.
My main goal was to create a bot which will learn the English language, and will be able to have full conversations with other IRC users, much like a human would.
I can not find a way to do this right now, it seems to be too complex.
I wanted the bot to be able to learn completely by itself, with a minor help of grammar rules, which it would have been taught by me.
Do you think this is possible? Can it be done?
Is it possible to bypass the limitations of a programmed bot, with programming?
Some of you may have encountered artificial intelligence chatting bots before, such as the Alice bot, but there's a different between what I want to create, and those bots.
These bots (such as Alice Bot), have predefined sentences and words in a database, from which they retrieve them, according to what is being said to them.
This though, is not what I mean.
I want to create a bot which will sit in an IRC channel, and completely learn everything from scratch.
One problem is, how will this bot know what the words it sees, mean?
I had thought of making it add all words to a database, with a number next to them.
So the bot does have some sort of meaning and understanding about the specific word, it may not be the way we as humans understand that word, but it's something, it has something to compare the word with, so when the word is said, the bot knows it means "that number".
So, do you think it's possible? And if it can be done, do you think there's a chance bots of this type will somehow develop their own conciousness?
And if they do, what will they be like?
|
|
|
|
Joined: Sep 2005
Posts: 2,881
Hoopy frood
|
Hoopy frood
Joined: Sep 2005
Posts: 2,881 |
|
|
|
|
Joined: Oct 2007
Posts: 51
Babel fish
|
OP
Babel fish
Joined: Oct 2007
Posts: 51 |
Dude, be serious.
Do you think it's possible?
This is a serious matter.
|
|
|
|
Joined: Dec 2002
Posts: 2,962
Hoopy frood
|
Hoopy frood
Joined: Dec 2002
Posts: 2,962 |
Could someone create a bot that used sophisticated lexical analysis and various other methods to emulate human conversation in a way that fooled people into believing they were talking to another human being? Yes, probably, provided they had the necessary background in natural language processing and related fields. But definitely not in mIRC script. You might want to take a look at the Turing Test for more information about the theory behind the idea and also discussion about whether that truly represents intelligence or merely dynamic, but ultimately still programmed responses. Could someone create a program that was truly intelligent and conscious? Impossible to know without having some clear definition of what consciousness is. But in practical terms for here and now with the computers and technology available: No. And absolutely positively not-in-a-million-lifetimes could it ever be done using mIRC's scripting language.
Spelling mistakes, grammatical errors, and stupid comments are intentional.
|
|
|
|
Joined: Jan 2004
Posts: 509
Fjord artisan
|
Fjord artisan
Joined: Jan 2004
Posts: 509 |
Er Sid.
Just ask Oliver for his perl bot.
It's the most artificial-intelligence bot I ever seen.
Don't know how he did it..
-Neal.
|
|
|
|
Joined: Jan 2004
Posts: 509
Fjord artisan
|
Fjord artisan
Joined: Jan 2004
Posts: 509 |
O nvm.
You wanted it in mIRC scripting.
And non-defined.
How about.
A socket bot.
That can read from dictionary.com.
So when it wants to know or understand words, it'll dictionary.com it.
*shrug*
I guess it'll have to just store strings. And parts of sentences.
Like if people ever say the same 2 or 3 words in that order, the bot stores it. But not any 1 individual word.
|
|
|
|
Joined: Oct 2003
Posts: 313
Fjord artisan
|
Fjord artisan
Joined: Oct 2003
Posts: 313 |
Google for things like "Markov chains", "lexical analysis", "Natural Language", "Machine learning" as a starting point. The comp.lang.ai faq is perhaps a useful starting point, too.
Then realise how huge an endeavour this is!
Natural Language processing has been given some serious attention, and it is possible to get some OK results. But I can't say I've seen anything that's any more than just "OK".
There was _one_ account I read of a computer being able to "speak like a child", having been "taught from scratch"...but the article never went into details.
Last edited by Sais; 05/02/08 08:13 PM.
Sais
|
|
|
|
Joined: Jan 2003
Posts: 1,063
Hoopy frood
|
Hoopy frood
Joined: Jan 2003
Posts: 1,063 |
I think the easy answer would be: yes it's possible, but not in your lifetime ;-]
there are many universities who do studies in these area's who haven't even made such a program, let alone anyone doing it in a scripting language like that of mIRC O_o
there are a few premade bots/scripts out there which mimic some behaviour they picked up from the channel they are stationed in but none of them are even close to human like reactions ;-]
If it ain't broken, don't fix it!
|
|
|
|
Joined: Oct 2003
Posts: 313
Fjord artisan
|
Fjord artisan
Joined: Oct 2003
Posts: 313 |
So when it wants to know or understand words, it'll dictionary.com it. And when it doesn't understand the words it reads from dictionary.com it'll look those up? And then look those up and then.... There's more to understanding the meaning of a word than just re-expressing it in terms of other words.
Sais
|
|
|
|
Joined: Oct 2003
Posts: 3,918
Hoopy frood
|
Hoopy frood
Joined: Oct 2003
Posts: 3,918 |
but orange means round, orange tasty fruit! that's all you need to know
- argv[0] on EFnet #mIRC - "Life is a pointer to an integer without a cast"
|
|
|
|
Joined: Oct 2004
Posts: 8,330
Hoopy frood
|
Hoopy frood
Joined: Oct 2004
Posts: 8,330 |
About the best use of a dictionary site wouldn't really be the definitions, but the type of word (verb, noun, etc). With that, the bot would at least have the ability to combine things into something that could potentially be a valid sentence even if the words themselves aren't correct.
Example (not valid because it's just nouns):
car ball ocean sky
Example (could be valid if the word meanings were different):
the moon wrote ocean
Obviously, that makes no sense because we know what those words mean. However, the point I'm making is that without actual meaning of words, it could be a valid sentence. Just combining the right types of words together could form a valid sentence. Then, you can move to what words mean and what words can be put together and still make sense.
That isn't to say this is easy or possible in mIRC. I'm just showing that the definitions aren't necessarily the most important part of a dictionary lookup.
Invision Support #Invision on irc.irchighway.net
|
|
|
|
Joined: Oct 2003
Posts: 313
Fjord artisan
|
Fjord artisan
Joined: Oct 2003
Posts: 313 |
A quickly knocked-up Markov chain programme:
;; Markov chain
#Markov on
on *:TEXT:*:#:{
;; cycle through each "word", adding it to the chain
var %n = $0, %i = 1
var %w1 = _NOWORD_, %w2 = _NOWORD_
while (%i <= %n) {
var %word = $gettok($1-,%i,32)
insert $prefix(%w1,%w2) %word
%w1 = %w2
%w2 = %word
inc %i
}
}
alias -l insert {
if (!$hget(Markov)) { hmake Markov 50 }
var %index = $1, %value = $2-
hadd -s Markov %index $hget(Markov,%index) %value
}
alias -l prefix {
var %word1 = $remove($1,`), %word2 = $remove($2,`)
return $+(%word1,`,%word2)
}
on *:TEXT:!Markov*:#markovtest:{
msg $chan [MARKOV] $genmarkov($2)
}
on *:INPUT:#markovtest:{
if ($1 == !Markov) {
msg $chan [MARKOV] $genmarkov($2)
}
}
alias -l genmarkov {
var %length = $iif($1,$1,10)
var %i = 1, %w1 = _NOWORD_, %w2 = _NOWORD_, %out
while (%i <= %length) {
var %list = $hget(Markov,$prefix(%w1,%w2))
var %nextword = $gettok(%list, $r(1,$numtok(%list,32)), 32)
if (%nextword === _NOWORD_) { return }
%out = %out %nextword
%w1 = %w2
%w2 = %nextword
inc %i
}
return %out
}
#Markov end
To use it, you'll need to join #markovtest (or whatever channel you feel like using, but rename the two instances above), and type !Markov. The default is to stop after (maximum) 10 words. If you type !Markov N, it will stop after max N words. I find that it is just spewing out fairly non-random lines at the moment, so it probably needs a _lot_ more seeding - it's currently at 1105 entries, but the average length of each list is only 1.26 words. It'll probably overrun the 900-char length limit before it gets too useful, unfortunately, but it might give you an idea of how easy it is to make relatively intelligible sentences with rather little effort. (Attribution: I nabbed the basis of the code from "Programming in Lua", which I had to hand. Thanks Roberto! It also explains why it perhaps isn't in the best of data structures for mIRCScript 
Last edited by Sais; 05/02/08 11:33 PM.
Sais
|
|
|
|
Joined: Oct 2004
Posts: 8,330
Hoopy frood
|
Hoopy frood
Joined: Oct 2004
Posts: 8,330 |
If you're going to attach words to a single variable, you'll need binary variables to avoid that size limit.
Invision Support #Invision on irc.irchighway.net
|
|
|
|
Joined: Oct 2003
Posts: 313
Fjord artisan
|
Fjord artisan
Joined: Oct 2003
Posts: 313 |
Yep - or multiple hash tables or a file or...
Just goes to show why mIRCScript isn't the best of languages to use, I guess.
Sais
|
|
|
|
Joined: Mar 2006
Posts: 398
Pan-dimensional mouse
|
Pan-dimensional mouse
Joined: Mar 2006
Posts: 398 |
Dictionary and Thesauras are great tools when venturing on this kind of programming.
Im presuming you want the bot to learn from what people are saying on IRC. There are several issues with this:
* Spelling/Typos etc. Do you want your bot to be 'dumb'? * Random responses from people (eg. user joins and says "HIGUYSIMGAY") * Following conversations. At times it may be difficult for a bot to 'guess' who is talking to who. * many more
But it definately is possible. I might give it a try in a year or two. You will need to teach your bot about words such as "and" "or" "while" etc.
[02:16] * Titanic has quit IRC (Excess Flood)
|
|
|
|
Joined: Feb 2008
Posts: 11
Pikka bird
|
Pikka bird
Joined: Feb 2008
Posts: 11 |
|
|
|
|
|