AI Zone Admin Forum Add your forum

NEWS: Chatbots.org survey on 3000 US and UK consumers shows it is time for chatbot integration in customer service!read more..

A couple of things
 
 

Hey,
first of all congrats on the chatscript engine. I chatted a bit with suzette, very impressive and distinguished.

I am using Mountain Lion, so I compiled it using the MacCompile.bat. I suggest renaming the filename extension to *.sh since *.bat is not an extension used in the unix world. This was a bit confusing to me at first since *.bat is windows. Also the uppercase file naming pattern is a bit unusual, this maybe because of windows I reckon.

What I am trying to understand is what happens when the server starts. What files does it read? How does it know where to look for data? It looks like it has build in default files. Can I override that with command line flag when starting the server?

Right now when I start a session “./LinuxChatScript client=localhost:1024” I don’t get beyond ‘I don’t know what to say’ no matter what I say to the bot. Is this the default behavior? Would love to get some better example of a bot, but I can’t seem to find it in the distribution. Is there a place where I can download one? And this goes back to the first block of questions, how do I deploy it on the server?

Looking forward to use chatscript!
Stan

 

 

 
  [ # 1 ]

I suggest renaming the filename extension to *.sh since *.bat is not an extension used in the unix world.—DONE

Also the uppercase file naming pattern is a bit unusual, this maybe because of windows I reckon.—DOUBTLESS, but I didn’t understand the comment. If you could elaborate.

When the server starts up, presuming that the current directory is ChatScript, it reads DICT folder for dict.bin and facts.bin.
It reads LIVEDATA folder toplevel files. It reads TOPIC for the compiled definition of the chatbot. It reads src for dictionarySystem.h .

Once started, the only files it reads and writes after that are USER topic and log files.

You say: “./LinuxChatScript client=localhost:1024”,  is this presuming you have ALSO got another process running as the server (since this is a client)? 

 

 

 

 
  [ # 2 ]

Can I override that with command line flag when starting the server?

Not sure what you are asking here.

 

 
  [ # 3 ]

Thanks for the great reply.

>You say: “./LinuxChatScript client=localhost:1024”,  is this presuming you have ALSO got another process running as the server (since this is a client)?
Yes, I have a server running.

>Also the uppercase file naming pattern is a bit unusual, this maybe because of windows I reckon.—DOUBTLESS, but I didn’t understand the comment. If you could elaborate

Well this may sounds silly;), but on UNIX basically all folder/fileNames are lower case, if there is an upper case folder that is only call special attention to it. also if you work from the unix shell lower case names are easier since you don’t have to use shift all the time, since windows is not case sensitive this doesn’t matter. Only cosmetic stuff.

>Can I override that with command line flag when starting the server?

This is not an important question anymore since I now understand how the server starts. If I have different characters then I simply put DICT/LIVEDATA/TOPIC/src/dictionarySystem.h in its own folder. I was just curious how to organize that since I will have 6 different characters.

 

 

 
  [ # 4 ]

Yes, I was calling attention to the FOLDER nature of things by capitalizing them. Windows pays no attention.

—- I have different characters then I simply put DICT/LIVEDATA/TOPIC/src/dictionarySystem.h in its own folder.—
Probably not.  If you did, then you’d have to have a different server for each character. You PROBABLY don’t want to do that (though maybe you do).  Multiple characters can coexist in the same topic folder.  You can choose that they share some topics in common and/and have unique topics all to them selves.

So… as for why your client gets nothing out of the server…. Don’t know. I presume when you run the system as a local copy, ChatScript local, it works fine?

 

 
  [ # 5 ]

—- I have different characters then I simply put DICT/LIVEDATA/TOPIC/src/dictionarySystem.h in its own folder.—
Probably not.  If you did, then you’d have to have a different server for each character. You PROBABLY don’t want to do that (though maybe you do).  Multiple characters can coexist in the same topic folder.  You can choose that they share some topics in common and/and have unique topics all to them selves.

Interesting, it makes sense, since the the characters are strongly related in our game context and share a lot of knowledge.

>So… as for why your client gets nothing out of the server…. Don’t know. I presume when you run the system as a local copy, ChatScript local, it works fine?
When I start the server I get this. Does this look ok to you?

>>./LinuxChatScript
ChatScript Version 2.9 64 bit
  Full dictionary code.
: Aug 18 09:07:58 2012 words=52,168 specials=2261 waste=28465 hash=65536 avgseek=1.1 maxseek=7 facts=32,475 dtext=3961052
Keyword0 altered Micronesian
Build0: words=59188 facts=116931 dtext=1042044 stext=0
Build1: words=5 facts=15 dtext=460 stext=4460
Livedata: entries=11887 facts=919 dtext=204956 posrules=485
Used 30MB: dict 153,980 (18477kb) fact 150,340 (6013kb) text 5213kb buffer (12x80000= 960kb) user (1x7000= 7kb)
Free 50MB: dict 894,595 fact 649,660 text 24,786KB
Server ready: LOGS/serverlog1024.txt

A conversation goes like this:

>>./LinuxChatScript client=localhost:1024

Enter client user name: stan

** Client launched
Sent data to port 1024
Received 12 bytes
Received 0 bytes
Received response: Welcome back
Welcome back
>  Thank you
Sent data to port 1024
Received 25 bytes
Received 0 bytes
Received response: I don’t know what to say.
I don’t know what to say.

 

 

 
  [ # 6 ]

When I run the executable in on path without the required folders I get an error. Is there a linebreak issue when reading the files perhaps?

>>./LinuxChatScript
ChatScript Version 2.9 64 bit
  Full dictionary code.
Missing 37 word files

  in LIVEDATA/systemfacts.txt at 0:
  Cant generate tmp backups of dict values. Guessing folder isn’t writeable.
:  words=8 specials=233 waste=65296 hash=65536 avgseek=136.5 maxseek=2 facts=0 dtext=2604
Build0: words=0 facts=0 dtext=0 stext=0
Build1: words=0 facts=0 dtext=0 stext=0
missing LIVEDATA/posrules.txt
Livedata: entries=0 facts=0 dtext=0 posrules=0
Used 8MB: dict 65,539 (7864kb) fact 0 (0kb) text 2kb buffer (12x80000= 960kb) user (1x7000= 7kb)
Free 61MB: dict 983,036 fact 800,000 text 29,997KB
Server ready: LOGS/serverlog1024.txt

 

 
  [ # 7 ]

For your first trace, all looks normal. You are “welcomed back”, which means it knew you had chatted before. And HARRY is a simple bot who can only answer a few things. Your saying “thanks” flummoxed him.  You can enter :reset as a command to restart your user and then say “what is your name”  as a question he understands.

 

 
  [ # 8 ]

when you run the server WITHOUT its current directory of folders, you get all sorts of complaints.
You lack a dictionary.  The system will attempt to use TMP folder to save states of things so you can do :build and :revert easily. You block that if you don’t have a TMP folder it can use.  You are missing LIVEDATA so it complains because the pos tagger cant run.
But the system can still limp along, even though you are a cruel master.

 

 
  [ # 9 ]

yes this works. so its a very simple bot.

>  :reset
Sent data to port 1024
Received 14 bytes
Received 0 bytes
Received response: We start anew.
We start anew.
>  what is your name?
Sent data to port 1024
Received 17 bytes
Received 0 bytes
Received response: My name is Harry.
My name is Harry.
>  Hi Harry!
Sent data to port 1024
Received 26 bytes
Received 0 bytes
Received response: Have you been here before?
Have you been here before?
>  Yes I have been here before.
Sent data to port 1024
Received 25 bytes
Received 0 bytes
Received response: I don’t know what to say.
I don’t know what to say.

 

 
  [ # 10 ]

I like your observations of AIML. I used it myself and I loved topics. But what I found out later is that nobody was using them strangely. Never understood that.

 

 
  [ # 11 ]

AIML is designed for simplicity. It was simple, it was first, and it was open source. All good things.
But it is not good at scalability from a human’s perspective and lacks support for maintenance of large systems.
And there are many features I want in a production grade system that it does not have. Hence creating ChatScript.

 

 
  [ # 12 ]

Not only that, but it’s very easy to get “stuck” in a topic if the AIML isn’t properly written. Of all of the examples of AIML that I’ve seen that use topics, very few were written with this in mind, and many ended up with ‘topic black holes’. smile

 

 
  [ # 13 ]

which is unfortunate, since topics are an ESSENTIAL organizational concept in conversation.

 

 
  [ # 14 ]

Topics work great in AIML. I use them all the time.
I would suggest blaming the coder rather than the language.

Would you say a piano is useless as a musical instrument because you can only play Jingle Bells with one finger on it? Learn how to play it and it will reward you with beautiful music.

 

 
  [ # 15 ]
Steve Worswick - Aug 29, 2012:

Topics work great in AIML. I use them all the time.
I would suggest blaming the coder rather than the language.

I completely agree, Steve. It wasn’t my intention to sound like I was putting AIML down. I guess my “isn’t properly written” comment wasn’t worded strongly enough, huh? raspberry cheese

 

 
  login or register to react