DAISY v1.1
A Greg Leedberg Creation, 2000
/////////////////////////////////
This program is FREEWARE, and may
be distributed freely, as long as
no profit is made from it.
/////////////////////////////////


////////////////////
PART I
****** HELLO, DAISY!
////////////////////
  For generations, people have fantasized about computers that
could talk, clean the house, cook food, and basically be servants
to man (and woman) kind.
  Well, Daisy certainly doesn't fulfill that fantasy.
  However, she is the next step in achieving that goal of a truly
intelligent computer.  Daisy's primary purpose is to be able to
converse with humans.  To this end, Daisy uses a new and exciting
technology.  I would never say that Daisy is the first computer
program that can hold a conversation -- there are many (heck, I
wrote one of them).  What sets Daisy apart from most (including
my previous) is that everything Daisy is capable of saying is
learned from her observing humans.  She has no "hard-wired" words,
sentences, or even patterns to look for.  From seeing what YOU
type, she learns patterns of words that make sense, and the
probability of these patterns occurring.  She can also figure
out, by analyzing everything she's ever seen, which words you
type in are important and should be responded to.  Amazingly,
Daisy is a computer program that is actually generating her
OWN sentences in conversation.
  This also means that Daisy can be taught any language, and
can learn slang.  Basically, she learns to speak as you do.
Which doesn't mean she'll always make sense -- remember, she
is still a computer program.  Every so often, however, she will
say something intelligent (maybe even make a very philosophical
statement on life!), and when this happens, try and forget every
stupid thing she's ever said and tell yourself, "She came up
with THAT on her own!"

::::::::::::::
: DISCLAIMER :
::::::::::::::
The DAISY software is an attempt to simulate human intelligence
and language.  To accomplish this goal, the DAISY software is capable
of learning.  The software uses many learning models to simulate
intelligence, and all of these models involve storing data it has
seen used by the humans it interacts with.  Much of this stored data
will eventually be used by the software to generate intelligent
responses.  Upon initialization, the DAISY software contains no
objectionable material.  However, the author, Greg Leedberg, cannot
be held responsible for any material stored in the software's files
after initialization, or any offensive responses generated by the
learned data.


/////////////////////
PART II
******* RUNNING DAISY
/////////////////////
  To run Daisy, just execute DAISY.EXE from the directory
you put Daisy in.  If you are running Windows, double-click
on this file.  If you are running DOS, type DAISY from
within her directory.


////////////////////
PART III
******** USING DAISY
////////////////////
  Daisy has a very easy to use and powerful interface, which
allows you to customize her quite a bit.  For just a quick,
normal chat, though, you can ignore much of it.
  When you start Daisy, you will be asked to enter your name.
Do this, and then she will say something to try and start the
conversation.  From this point on, just type in what you want to
say, press <ENTER>, and read what she says in response.  The
zip file of Daisy contains one memory file which has been created
by having Daisy talk with me, so she will already have a small
amount of vocab when you start her for the first time. When
you're done talking to Daisy, press <ESC> to quit.

  For the power users and hackers out there, though, there's
much more you can do with Daisy.  On the bottom of the screen,
various options are displayed, which you can access while
talking to Daisy.  Each of these options will be described here.

  RESTART - Press F1 to restart the conversation.  This is useful
            mainly if someone else wants to talk to Daisy, because
            this brings you back to the name prompt.
  OPTIONS - Press F2 to access the options menu.  This menu lets
            customize aspects of the Daisy program, and is described
            in more detail in PART IV.
  FILES   - Press F3 to access the files menu.  This menu lets you
            create and load memory files, and toggle Learn Mode,
            among other things.  This mode is described in more
            detail in PART V.
  ABOUT   - Press F4 to access this dialog.  This window will show
            you the current version number of Daisy, and also shows
            you how much memory is available to Daisy, how many
            words are in the current memory file, and the current
            speed at which Daisy is generating sentences.
  EXIT    - Press ESC to exit the conversation.  This quits, and saves
            all newly learned vocab (if Learn Mode is enabled).


////////////////////
PART IV
******* OPTIONS MENU
////////////////////
  The Options menu lets you customize various settings for the
Daisy program.

  CORRECT SPELLING  - If you accidentally mistype a word while talking
                      to Daisy, you can use this option to correct it in
                      Daisy's memory.  Just type in the (incorrect) way
                      that you spelled it, and the (correct) way that
                      it should be spelled.  Each time that word is found
                      in Daisy's memory, you will be given the context
                      (preceeding and proceeding words), and asked if you
                      want it corrected there.  This affects only the
                      currently loaded memory file.

  MAX THINKING TIME - This changes the maximum amount of time that
                      Daisy is allowed to "think" before giving a
                      response.  The shorter the amount of time, the
                      dumber the response.  The default time is 3
                      seconds.  Note that Daisy may or may not
                      actually use the whole time allotted.

  BUFFER SIZE       - To increase performance on slower machines,
                      Daisy creates a buffer of responses, which
                      she generates on start-up.  The lower this
                      is set, the dumber she will appear on slower
                      computers, but if this is set too high then
                      you see many of the same sentences repeated
                      throughout a conversation.  The default is
                      50 sentences.

  COLOR OF DAISY'S TEXT
  COLOR OF YOUR TEXT - These change the color of Daisy's output text
                       and the color of your input text, respectively.
                       Text colors range from 1 to 15.  The defaults
                       are 11 and 14.


/////////////////
PART V
****** FILES MENU
/////////////////
  Daisy, as I've stated, starts with no knowledge of language, and then
learns by watching what you say.  To start you off with somewhat intelligent
conversations, I've included a 255-word default memory file, created
from conversations with me.  Feel free, however, to create your own
memory files from scratch, or to try memory files created by other people.

  CREATE A NEW FILE - This allows you to create a new, empty memory
                      file, with any name that you choose. If no file
                      extension is given, .DSY will be assumed.  Use this
                      to try and teach Daisy other languages, or try
                      and create different personalities for Daisy.
                      Note that Daisy only knows as much as is in
                      her memory file, so when you first start talking
                      to an empty one, she will just repeat what you
                      say.  Don't worry -- she is in fact learning.
                      She just doesn't have enough vocab yet to form
                      her own sentences.  After a little while, the
                      fun will start. :)

  LOAD A FILE       - This lets you load any existing memory file.
                      When you select this, you will see a list of all
                      .DSY files in the current directory, but you can
                      load any memory file from any directory as long
                      as you give the full path.  If no extension is
                      given, .DSY will be assumed.

  SELECT DEFAULT FILE - Use this to change what file automatically
                        loads when Daisy starts.  This also selects the
                        file used for link mode.

  TOGGLE LEARN MODE - This lets you toggle whether Learn Mode is turned
                      on or off.  If it is on, Daisy is able to learn
                      from what she sees humans say (this is the
                      default for all files).  If it is off, she
                      remembers nothing of what she sees, and can only
                      use what is in her memory file.  This is intended
                      for two main purposes.  First, if a file gets to
                      be too big and you don't want it to grow any more,
                      this will stop the file's growth.  Second, if you
                      have created a memory file with a specific
                      personality which you want to distribute, but
                      don't want the personality to get altered by talking
                      to other people, this disables Daisy's ability
                      to change that file.  Remember that this switch
                      only affects the currently loaded file.

  DELETE A FILE    - This is the preferred method to delete existing
                     memory files.  In general, use this instead of
                     deleting from DOS or Windows because this method
                     helps you by looking for possible conflicts
                     (namely, if you try to delete the current default
                     file).

  Files Mode makes Daisy very open-ended.  If you make a particularly
  good memory file, send it to me.  I hope to at some point post some
  of the best ones on my website, so if you're looking for some,
  check it out.


/////////////////
PART VI
******* LINK MODE
/////////////////
  If you know someone else who has a copy of Daisy, you can link the
  two Daisies together for a computer-only conversation, through the
  magic of UDLP2 (Universal Dynamic Link Protocol Revision 2).  You can
  also link Daisy to any other UDLP2 program, as well as any UDLP
  (revision 1) program.  Daisy will also be able to link (hopefully)
  to all of my future chatbots, through UDLP2.

  To start a linked conversation, simply execute LINK.EXE (rather
  than DAISY.EXE), to load the UDLP2 Shell.  This will ask you for
  the directories that the two programs are located in.  Once the
  conversation starts, all you have to do is press any key, and it
  will end momentarily.  NOTE:  There are some known issues with
  the Shell locking up during linked conversations.  Because of this,
  it is best to run the Shell under Windows rather than DOS, so that
  if a lock occurs, you can simply close the LINK.EXE window, rather
  than having to reboot.  Sorry for the inconvenience.

  Link Mode is definitely amusing.  Don't worry, though - Daisy can't
  learn from link mode, so the, ahem, "anti-intelligence" won't
  multiply.  Have fun!


////////////////////////////
PART VII
******** VIEWING TRANSCRIPTS
////////////////////////////
  If you want to take a stroll down memory lane with Daisy, all you
  have to do is open up DAISY.TXT.  There you'll find a transcript of
  every chat Daisy has had.


////////////////////////////////////
PART VIII
********* GETTING THE LATEST VERSION
////////////////////////////////////
  Daisy is a work in progress.  Even as I release versions of her,
there will always be more that I want to add, and probably even more that
YOU want me to add.  Over time, there will be more revisions of the
technology, hopefully getting more human-like each time.  The latest
version of Daisy (as well as Billy, and any other chatbots I make
in the future) will ALWAYS be available at:

                    http://greg.simplenet.com/glsoft

This address will also allow you to sign up for my mailing list which
will always keep you up-to-date on new releases.


//////////////////////////////
PART IX
******* QUESTIONS WITH ANSWERS
//////////////////////////////
  Q: Ack!  Daisy crashed!
  A: Well, that's not supposed to happen!  I really did work hard to
     make Daisy as crash-proof as possible, but there are probably
     still some things that will crash her.  Try running INIT.EXE
     (which will restore all of her files to their original
     states -- including MEM.DSY).  If that doesn't work, feel free
     to e-mail me!

  Q: I get an error when I try to link Daisy!
  A: Try creating a directory just for the link shell.  That is, create
     a directory called c:\link or something like that.  Then, copy
     LINK.EXE and WRITER.EXE to that directory, and execute LINK.EXE
     from there.

  Q: Linking Daisy to another Daisy is cool, but can I link Daisy
     with Billy?
  A: Of course you can!  Billy 2.2 (and higher) supports UDLP2, so
     linking with him is done exactly as if you were linking with
     another copy of Daisy.  Billy 2.1 and 2.11 use UDLP revision 1,
     so it'll take a little more work than linking with another UDLP2
     program. To link with 2.1/2.11, initiate link mode from within
     Billy (type LINK as your name, remember?), and give Daisy's
     directory.  This backwards-compatibility was not heavily tested,
     though, so it's not guaranteed to work under all conditions.

  Q: What do I enter for the paths for link mode?
  A: The path is the drive and directory that the programs are located in.
     So, say you are linking Daisy to Billy.  Let's say you have both on
     the same hard drive (C), but in different folders (also known as
     directories).  Let's say that Daisy is located in a folder called
     DAISY and Billy is located in a folder called BURRITOS.  The path to
     a program is: DRIVE:\FOLDER, so the path to Daisy would be
     C:\DAISY and the path to Billy would be C:\BURRITOS.  If you use
     sub-folders, then you just put a backslash (\) in-between each
     folder name.

  Q: Why doesn't Daisy make any sense?  Is she on any medication?
  A: Daisy does too make sense.  Kind of.  You have to keep in mind
     that she is still a computer program, not a real human, and that
     she is attempting to generate original sentences on the fly.
     She is also the first generation of her technology.  Please be
     a little forgiving.

  Q: Is it wrong to love Daisy?
  A: Whatever makes you happy.


///////////////
PART X
****** CREDITS
///////////////

                   DAISY v1.1 was created entirely by:
                             GREG LEEDBERG!
                         (ggl@cisunix.unh.edu)

  Feel free to send comments, suggestions, cool transcripts, and
memory files to that e-mail address.  All feedback is appreciated!


////////////////////////
PART XI
******* REVISION HISTORY
////////////////////////
  DAISY v1.1 - (6/25/2000)
               **Daisy now uses extended memory!  In 1.0, she only
                 could access 640K of DOS memory, and since this
                 is where the DSY files are stored during chat,
                 the size of those files were severely limited.
                 Daisy now allocates 2Mb at start-up, but if she
                 uses up all of that (which is unlikely), she
                 is able to continue to allocate more.
               **Daisy is now able to look back to previous statements
                 when building her responses.  In addition to pulling
                 keywords from the last thing you said to her, she
                 looks back to the user's statements before that for
                 more keywords, which helps to tie her responses into
                 the conversation more.
               **There is now a spell-corrector in the options menu,
                 which allows you to correct any typos you might
                 accidentally make, so that Daisy doesn't repeat
                 those typos.
               **In an attempt to solve one of Daisy's biggest problems
                 (seemingly never ending run-on sentences which make
                 no sense), Daisy now gives priority to sentences she
                 generates which are less than 70 characters.  I know 
                 this is just masking the problem rather than actually
                 fixing it, but for now... it works.
               **Daisy no longer crashes if the default memory file is
                 deleted from DOS/Windows (instead of within Daisy).
                 Now, you will be given an error and assisted in 
                 correcting the problem.  Still, even though Daisy can 
                 handle missing files, you still should only delete 
                 files from the Files Menu, as it will check for these 
                 problems before they happen, and help save some 
                 frustration.
               **Now has the capability to support plug-in programs, 
                 which can run within Daisy.  As of right now, I 
                 haven't created any, and this is why the feature does 
                 not appear in any menus.  However, if I ever do make 
                 some plug-ins, the feature is already programmed into
                 Daisy, and will enable itself if it detects plug-ins 
                 in the current directory.  The plug-ins could be 
                 anything from utilities for Daisy, to just fun little 
                 "toys".  This feature is like an expansion slot in 
                 Daisy for future use.
               **Added some stuff to the included MEM.DSY, now has 255 
                 words.
               **Now comes with version 1.01 of the UDLP2 Shell.  This 
                 version fixes one bug which caused quite a lot of 
                 "file not found" errors: the paths to the chat bots 
                 were truncated at 25 characters!  Now the paths can 
                 be up to 255 characters long.

  DAISY v1.0 - (5/10/2000)
               The Daisy technology is based around a central concept of
               learning.  Daisy has no hard coded language of any kind.
               She starts with no knowledge of anything, but then is
               able to gain knowledge as she observes what humans say.
               From this, she is able to remember patterns of words,
               and the probability of these patterns occurring.  Using
               this data, Daisy is able to actually generate her own,
               original, sentences.  She also figures out how to
               respond to user's input by analyzing what she has seen
               before -- she weeds out the unimportant words, and builds
               her response on the important ones.  Daisy also features
               an improved interface, which makes it easy to adjust
               options and manage memory files.