Chatbot

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
Kempelen
Posts: 620
Joined: Fri Feb 08, 2008 10:44 am
Location: Madrid - Spain

Chatbot

Post by Kempelen »

Hi,

I think many chess AI lovers here would sometime feel curiosity for natural language techniques and programs. At my student time I was fascinting with all about IA. Now after released last version of Rodin an idea is around my head about to program a chatbot, but dont know how difficult is, where to find documentation, if there are any forum like this for the topic and so on.... I have found in Internet one or two tutorials but would like to know if someone here has experience about it and tell me where can I start from (If at the end a decide to go with it) and where is info, help and share impressions.

regards,
Fermin
Fermin Serrano
Author of 'Rodin' engine
http://sites.google.com/site/clonfsp/
User avatar
David Dahlem
Posts: 900
Joined: Wed Mar 08, 2006 9:06 pm

Re: Chatbot

Post by David Dahlem »

Kempelen wrote:Hi,

I think many chess AI lovers here would sometime feel curiosity for natural language techniques and programs. At my student time I was fascinting with all about IA. Now after released last version of Rodin an idea is around my head about to program a chatbot, but dont know how difficult is, where to find documentation, if there are any forum like this for the topic and so on.... I have found in Internet one or two tutorials but would like to know if someone here has experience about it and tell me where can I start from (If at the end a decide to go with it) and where is info, help and share impressions.

regards,
Fermin
You could start here -

http://en.wikipedia.org/wiki/Chatterbot
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Chatbot

Post by Don »

Kempelen wrote:Hi,

I think many chess AI lovers here would sometime feel curiosity for natural language techniques and programs. At my student time I was fascinting with all about IA. Now after released last version of Rodin an idea is around my head about to program a chatbot, but dont know how difficult is, where to find documentation, if there are any forum like this for the topic and so on.... I have found in Internet one or two tutorials but would like to know if someone here has experience about it and tell me where can I start from (If at the end a decide to go with it) and where is info, help and share impressions.

regards,
Fermin
We are a very long way from a convincing chat bot. I may be wrong about this, but what I have seen is that they are all based on simple word and pattern matching. They don't really have a sense of the flow of the conversation and cannot construct their own thoughts - other than random pattern matching.

I have put thought into this and I have outlined an approach, which of course I have not tried to implement out of respect for the incredible difficulty of the task. Here is a rough outline:

1. Start with a hybrid language that makes it easy to communicate and has no ambiguities. We can step down instead of asking the bot to step up in order to make the task easier.

2. Develop a bot that actually UNDERSTANDS the hybrid language and does not respond randomly and is not just a parrot - but has it's own thoughts and interest to communicate and a real memory and some rudimentary reasoning ability. This makes it obvious what is really going on. You can also provide instrumentation to monitor the bot "state of mind" using this approach.

3. Build a layer than translates from natural language to "bot language" and back again for actual demonstrations. In theory you could use the bot language to teach the bot how to speak the human language. Yes, I know this is not as easy as it sounds :-)

I personally think way too much stress is put on the results and not the process. So we use any trick we can think of to make a bot appear as if it understands, except to actually make it understand. A common technique for instance is to "change the subject" frequently in order to disguise lack of understanding, or to give the most generic possible answer that would make sense no matter what was being said.

In order to be realistic, our initial goal should be to create a bot which is severely retarded. Instead of trickery, we can work within the limitations of the system and then try to improve on that. I have no problem with emphasizing the strengths and minimizing the weakness of course (we all probably do that subconsciously) but trying to pass a bot off as a highly intelligent conversational partner is just too much. The bot can be a sort of highly gifted idiot savant since it will have access to many facts and will be able to compute like nobodies business and even play chess like a grand-master :-)

You can try to build this in a very modular way so that you can improve any aspect independently from the others. Of course my approach does not solve the really difficult problems - but I still think it's useful to break this down into more manageable pieces that you can improve on. The current method seems to be mostly ad-hoc.

I hope I don't sound critical, I'm not pretending I can do this better than those actually doing it - but as an engineer it's hard not to try to figure out ways to do things better or try to imagine how you might do it. I doubt my bot would win any contests (if I had a bot.)
User avatar
Kempelen
Posts: 620
Joined: Fri Feb 08, 2008 10:44 am
Location: Madrid - Spain

Re: Chatbot

Post by Kempelen »

Don wrote:
Kempelen wrote:Hi,

I think many chess AI lovers here would sometime feel curiosity for natural language techniques and programs. At my student time I was fascinting with all about IA. Now after released last version of Rodin an idea is around my head about to program a chatbot, but dont know how difficult is, where to find documentation, if there are any forum like this for the topic and so on.... I have found in Internet one or two tutorials but would like to know if someone here has experience about it and tell me where can I start from (If at the end a decide to go with it) and where is info, help and share impressions.

regards,
Fermin
We are a very long way from a convincing chat bot. I may be wrong about this, but what I have seen is that they are all based on simple word and pattern matching. They don't really have a sense of the flow of the conversation and cannot construct their own thoughts - other than random pattern matching.

I have put thought into this and I have outlined an approach, which of course I have not tried to implement out of respect for the incredible difficulty of the task. Here is a rough outline:

1. Start with a hybrid language that makes it easy to communicate and has no ambiguities. We can step down instead of asking the bot to step up in order to make the task easier.

2. Develop a bot that actually UNDERSTANDS the hybrid language and does not respond randomly and is not just a parrot - but has it's own thoughts and interest to communicate and a real memory and some rudimentary reasoning ability. This makes it obvious what is really going on. You can also provide instrumentation to monitor the bot "state of mind" using this approach.

3. Build a layer than translates from natural language to "bot language" and back again for actual demonstrations. In theory you could use the bot language to teach the bot how to speak the human language. Yes, I know this is not as easy as it sounds :-)

I personally think way too much stress is put on the results and not the process. So we use any trick we can think of to make a bot appear as if it understands, except to actually make it understand. A common technique for instance is to "change the subject" frequently in order to disguise lack of understanding, or to give the most generic possible answer that would make sense no matter what was being said.

In order to be realistic, our initial goal should be to create a bot which is severely retarded. Instead of trickery, we can work within the limitations of the system and then try to improve on that. I have no problem with emphasizing the strengths and minimizing the weakness of course (we all probably do that subconsciously) but trying to pass a bot off as a highly intelligent conversational partner is just too much. The bot can be a sort of highly gifted idiot savant since it will have access to many facts and will be able to compute like nobodies business and even play chess like a grand-master :-)

You can try to build this in a very modular way so that you can improve any aspect independently from the others. Of course my approach does not solve the really difficult problems - but I still think it's useful to break this down into more manageable pieces that you can improve on. The current method seems to be mostly ad-hoc.

I hope I don't sound critical, I'm not pretending I can do this better than those actually doing it - but as an engineer it's hard not to try to figure out ways to do things better or try to imagine how you might do it. I doubt my bot would win any contests (if I had a bot.)
Hi Don,

Thank you for your comments. The more I read you and the more I read about it in Internet, the more I see how difficult is to get plausible results. It is as you say, the chatbot IA is quite far from get a conversation with a thread. I think I will forget my aspiration about it, althought I will continue looking into this field because it has always fascinating me.

regards,
Fermin
Fermin Serrano
Author of 'Rodin' engine
http://sites.google.com/site/clonfsp/
User avatar
Don
Posts: 5106
Joined: Tue Apr 29, 2008 4:27 pm

Re: Chatbot

Post by Don »

Kempelen wrote:
Don wrote:
Kempelen wrote:Hi,

I think many chess AI lovers here would sometime feel curiosity for natural language techniques and programs. At my student time I was fascinting with all about IA. Now after released last version of Rodin an idea is around my head about to program a chatbot, but dont know how difficult is, where to find documentation, if there are any forum like this for the topic and so on.... I have found in Internet one or two tutorials but would like to know if someone here has experience about it and tell me where can I start from (If at the end a decide to go with it) and where is info, help and share impressions.

regards,
Fermin
We are a very long way from a convincing chat bot. I may be wrong about this, but what I have seen is that they are all based on simple word and pattern matching. They don't really have a sense of the flow of the conversation and cannot construct their own thoughts - other than random pattern matching.

I have put thought into this and I have outlined an approach, which of course I have not tried to implement out of respect for the incredible difficulty of the task. Here is a rough outline:

1. Start with a hybrid language that makes it easy to communicate and has no ambiguities. We can step down instead of asking the bot to step up in order to make the task easier.

2. Develop a bot that actually UNDERSTANDS the hybrid language and does not respond randomly and is not just a parrot - but has it's own thoughts and interest to communicate and a real memory and some rudimentary reasoning ability. This makes it obvious what is really going on. You can also provide instrumentation to monitor the bot "state of mind" using this approach.

3. Build a layer than translates from natural language to "bot language" and back again for actual demonstrations. In theory you could use the bot language to teach the bot how to speak the human language. Yes, I know this is not as easy as it sounds :-)

I personally think way too much stress is put on the results and not the process. So we use any trick we can think of to make a bot appear as if it understands, except to actually make it understand. A common technique for instance is to "change the subject" frequently in order to disguise lack of understanding, or to give the most generic possible answer that would make sense no matter what was being said.

In order to be realistic, our initial goal should be to create a bot which is severely retarded. Instead of trickery, we can work within the limitations of the system and then try to improve on that. I have no problem with emphasizing the strengths and minimizing the weakness of course (we all probably do that subconsciously) but trying to pass a bot off as a highly intelligent conversational partner is just too much. The bot can be a sort of highly gifted idiot savant since it will have access to many facts and will be able to compute like nobodies business and even play chess like a grand-master :-)

You can try to build this in a very modular way so that you can improve any aspect independently from the others. Of course my approach does not solve the really difficult problems - but I still think it's useful to break this down into more manageable pieces that you can improve on. The current method seems to be mostly ad-hoc.

I hope I don't sound critical, I'm not pretending I can do this better than those actually doing it - but as an engineer it's hard not to try to figure out ways to do things better or try to imagine how you might do it. I doubt my bot would win any contests (if I had a bot.)
Hi Don,

Thank you for your comments. The more I read you and the more I read about it in Internet, the more I see how difficult is to get plausible results. It is as you say, the chatbot IA is quite far from get a conversation with a thread. I think I will forget my aspiration about it, althought I will continue looking into this field because it has always fascinating me.

regards,
Fermin
Since posting this I starting thinking about a potential intermediate language for a bot. Esperanto is an artificial language which is very consistent and regular and would make the task far easier - but I did not have in a mind a human spoken language.

However an artificial language called Lojban might actually be worth serious consideration. It is designed to be extremely regular, it's easily parsed by a computer because of this and it is also designed to eliminate a great deal of ambiguity, something bots have a lot of trouble with. Supposedly it is simple and easy to learn also.

My idea is to "black box" various functions to make each a bit simpler to deal with. So using Lojban as the bot language simplifies a lot of things for the bot specific programming.

But it only moves the problem to another "module" if you want an English speaking bot. Since "translation" is a difficult problem itself, I would suggest focusing on a lojban bot even if you have to learn Lojban. You can probably learn enough to get started pretty quickly and use a reference source after that.