Ways to Improve This?
I have been writing a chatter bot in C# now for a few years. It started off as an AIML adaptation, but I quickly realized that that was pretty boring and it felt like "cheating" to me. Plus everything was pretty much a predetermined response. I guess I could have tried to write a way for it to actually add stuff to the AIML files, but it felt like a waste of time.
With that in mind, I set out to try and create a markov chain style bot and have been working on it ever since. This is where I stand now. I'm wondering if anyone out there has some ideas on how to improve what I've started and make the bot a little smarter.
All the source files
The AIML stuff is still there, but I don't use it any more. I'm probably going to take it out for the next version. The markov chain style stuff is contained in LB.cs (named after a friend's ruby bot that was also written in this style).
Basically the bot will connect to IRC (using my shoddy IRC connection code) and join a channel of your choice. From there it'll watch conversations and split the conversations up into its brain.
For example, if someone in the channel said: Yeah, buying food for a group of people is cheaper.
The bot will split that into this:
START_SENTENCE Yeah, buying food
Yeah, buying food for
buying food for a
food for a group
for a group of
a group of people
group of people is
of people is cheaper.
people is cheaper.
is cheaper. END_SENTENCE
Later, if someone were to go kon: food it might pull that response and reconstruct that sentence. And if the bot has seen enough conversations, it will start to mix the sentences together and create a somewhat unique, possibly hilarious, result.
That's it in short. In reality there's other stuff too, like the bot will attempt to find a subject of a sentence (well, basically any word that isn't a common word, defined in an array, and is more than 4 characters in length). If the first reply it creates is too short it will try to create a second reply and link them together.
My problem is that it isn't very "smart" with its replies. In the real world you say "how are you?" and you expect a response on how the other person is doing ("good" "bad" "sick" whatever). With this style you can ask Kon how it's doing and it might return a sentence about eating chicken under a full moon. It's totally random.
So I'm asking if anyone has some ideas on how to improve the bot further. This is the only forum I could think of to ask this question to. If someone else has a better idea of where to take this question, I'll gladly go post it there also. :)
Thanks for any ideas you might have. And please excuse some of my shoddy coding.. I'm learning as I go.