CONVERSATION SYSTEM - 0910.97

			  notes, ideas, etc
		      for a conversation system
		       to pass the turing test



hey.. this is a mess right now.. actually, it's all set
up to be converted into html chunks.. :)

once i get code written for that, i'll index all this automatically
and make it all pretty and searchable..
but that's later..
right now I just wanted to get it into the computer.

- michal / sabren



----------------------------------------------------------------------
0912.97
	split function in perl will make an array of words out of
	a string (you specify the seperator)


0926.97 Neural networks
	NN's can be trained to give certain responses based on criteria.
	If there were a way to classify the incoming message and then
	respond with a learned type of response... It's like rotating
	the input through hilbert space... (?)

	A conversation system has to be flexible. It would be
	cool to have several abilities/objects/systems... Neural nets,
	markov chains, meta/milton models with libraries and databases
	of predefined deep structures.. meta modelers to extract more
	information.. spider programs and scouts to seek new info from
	the web and learn about it... multiprocessing / event driven
	stuff so the system could distract users, talk to several users..
	It could even get live input from scouts on IRC talking to human
	beings. It could talk to you while its scouts sent out messages
	and when they returned with knowledge, could suddenly "remember"
	All of this could be tied together with self-adapting code.

	

drivers

All of these behaviors should evolve. That is, I can give the program all the abilities it needs by giving it very basic skills. I might even create some more complex systems.. But they won't be limited to how I would do things.. I can provide a basic script, but like everything else, it would be subject to evolution.

thinknet

My old 386 is so much more powerful than one neuron. Yet I can easily outthink poor GURU. But what if a million people on the internet each had a copy of my program running, and the programs could talk? It would be hell on bandwith... On the other hand, it could learn so much faster. (Note on that: I'd obviously (?) lose control of the program if i did it this way... No one knows who i am, but if I were to develop the idea in a book first.. I'd get the fame and recognition.. I'd also have a better thought out program, and there'd be more people working on the idea. (thus, I'm linking brains memetically as well as computers via the net).. Hey, this could be part of the book, too.. People could teach one copy of the program, and the knowledge would spread instantly!)

memetics: survival of the fittest .. gossip

Strands of the code could mate when meeting.. new installations would always be derived from one or more existing strands... from time to time, more popular strands would "eat" the others... The idea being that strands that were fun to talk to, or worth talking to, would survive, and spread their memes. Others could model them. It could evolve & spread by becoming more and more useful to humans... simply by natural selection.. so the internet would grow to have personal friendships with individuals, and ideas would easily spread to where they needed to go: gossip! Imagine someone telling a new idea to the net.. It can only happen with $1,000,000 but the net knows everyone and passes the idea on to an investor, or a philanthropist.. and s/he sends the money... suddenly everyone interested in the subject hears about the new business. wow! 1007.97 Breeding a silver tongued devil Computer code is a language. I want to make code that generates language. Language making language! Now, what if I made a simple program that knew how to create, random, syntactically correct language, maybe using a formal system. That program could easily become a standard subroutine in a computer language. I could then feed the particulars of the computer language into that procedure, and the language could replicate itself. I get the intuition that the computer could be programmed in English! Passing the turing test will wipe out the need for any other computer language! Perhaps such a program would even become a universal translator! 1018.97 reference books.. :) It should have an online word menu to quickly gain access to a small body of knowledge about a particular subject. Also, a dictionary, maybe a thesaurus, a book of names, and a small encyclopedia.. 1125.97 objects Words are objects. They derive from other words & interact with each other based on simple rules of syntax. Could each word object have a method to clarify itself? Pronouns would try to determine their referrents. Nouns chunk down (pet becomes cat). Nothing hard about that, but which words are "class" words, which are pronouns, etc? 0105.98 Hacking Eliza 0201.98 Network-Based Expert systems Hey! Not all expert systems are rule-based!! When more causal information is available, then other representotions may be more pertinent, such as networks that link state nodes (representing parts of the physical system in question) by arcs representing causal relations - William B Gevarter (??) in Applications in Artificial Intelligence (stephen Andriole, ed) Examples: "CADUCEUS", "PROSPECTOR"
LADDER: What (be) the (attributes) of (ship-description) (it uses patterns like that)

scripts

Players: customer, server, cashier Props: restaurant, table, menu, food, check, payment, tip Actions:
  1. customer goes to restaurant
  2. customer goes to table
  3. server brings menu
  4. etc..
I could do cool stuff with this.. consider: a week is 7 days. a day is: an Xrefed script would be an ideal way to meta/milton something: general script points to more detailed script.. chunk up, chunk down, etc... 0125.98 Stacks for Keeping track of Threads If you have an outcome in mind, all you have to do is change your behavior until you get what you want. So what if I started that way? Have a stack, and pop an outcome onto the stack: "Convince them I'm human" or "Lead them into a state".. Chunk up a lot... Expect a certain quality of answer.. "what response am I looking for?" .. It could be a specific word, or whatever... Like yes or no, or an equivalent. In any case, we can now stack realities, open and close loops, etc. -> what about SS type language? 0125.98 Elements of NLP Chat 0126.98 Database ideas for Expert System

Assert

Add to assertion hash. Query all rules that ref it. If any rule completely fires, rut its macro.

principle

Whether or not you are an expert, you can build ... up the kind of knowledge base ... by recording a large number of examples or instances of.. observations and what actually happened... - mike van horn, understanding expert systems algorithms

abstractor

"the cat is ugly" --> "Art1 n1 v1 adj1".. (convert to string) Now, use formal system (transformational grammarish) to change the sentence and respond: "v1 art1 n1 adj1" --> "is the cat ugly?" or, as a metamodeler, "how do you know the cat is ugly?"
what if i used an expert system to parse? word could be noun, verb, etc, so we use backward chaining....
synonyms are important! we could llok for verbs, nouns, or feeling words, names, etc... what about a "dictionary" of sets: ID WORD DEF(92l3847923847tbqjxteohk) where DEF is a huge bitmap of sets to which a word can belong..
What if I could keep track of successful strategies? What if I could compress a sentence to a (type of sentence) .. and use a markov chain to discover the (type of sentence) best used for a response?
What about using NLP modelling tools to generate expert system rules?
In a forward-chaining system, you can simplify rules as you learn:
  1. if (has tail), (barks), (eats kibble) then (is dog)
  2. Assert (has tail)
  3. rule shortens to: if (barks), (eats kibble) then (is dog)
0129.98 Rules as Objects, Rules as DB Rules have properties: What about a broadcasting procedure?
imagine a database: ... something's lacking though in defining a truth for each consequence... blah.. probably makes more sense to use an expert system, but...
What about submodalities? various attributes for each object. Or store sentences with lots of adverbs, adjectives, etc.. Assert: big green [monster] Assert: big [city] (tokyo) Assert: [monster] eating [city] consider: every xyz can't abc --> no xyz can abc. 0130.98 Some thoughts while studying perl "If" has another mode in english: what if? Perl uses nulls, empty arrays, "", or 0 to be false... I think i could do a lot of lrisp stuff using perl's array handling. 0131.98 Esperanto You know, this program, to pass the turing test, doesn't have to know very much, or produce eloquent responses. Those are good attributes, but not essential. Essential is having a coherent conversation. For that, the program has to understand language. But english is way too complex to understand. The grammar, spelling, etc, varies way too much. I've always thought that esperanto would be easier to work in. You know which words are nouns, which are verbs, etc. Word order doesn't really matter, or at least is not as strict. Plus there's dictionaries online... All I'd have to worry about is.. formulating a useful reply in english... And it wouldn't have to be a translator.. It could just convey a grammatically correct sentence back to the user...
  1. Input
  2. "translate" to simple esperanto
  3. ? - various processes
  4. generate esperanto response
  5. filter back into english
0202.98 Some thoughts for Loebner about...

mind reading

Why has the user asked a question or given a statement? How can I second guess them? eg: do you know what time it is? Can you XXX? Ah.. Computer must garner presuppostions and act on embedded commands.. :)

object-oriented esperanto

scripts, yes.. and objects... or classes.. > John is a man : what does he look like? ; john has looks ; he also has (probably) ; clothes, a car(?), a job ; parents, family so.. if i know that a person has a gender, an age, etc., i can meta-model that. how old are you? are you a man or a woman? what do you do for a living? for fun? Keeping track of this stuff is so much easier in Esperanto!! Just tack on a prefix.. (look up in dictionary to see how it should appear) Perhaps each object could have a rule base for polymorphism.. "If gender is male and age > 18 then reclassify as MAN" consider:
Male Female
Old Man Old Woman
Man Woman
Boy Girl
Little Boy Little Girl
Baby
Ellipsis: leaving out words anaphor: pronoun/phrases pointing back to nouns.. Hey! What about the socratic method for leading/dominating the conversation?
Question: what does the program do when no one's talking to it? If its rep system is useful enough, it could just come up with hypothetical situations and act them out. Or explore mixes and matches.. It could daydream! Think! Hmm... It could have problems to solve and try to solve them..
OOP/Inheritance means using syllogisms. If joe is a man, and men are mortal, then joe is mortal. Ah.
What if the system talked to itself? Kind of like IRC. The user inputs a question, and all these bots talk to it.. But only one message gets through.. Or maybe 1 or 2 or 3. This could be how it thinks... User input would just add to the current dialog... One bot could report on the topic.. "I was just thinking about xyz..." In fact, it could be our (us as humans) liasons to the electronic tribe/hive mind. But how to pick the best result? Somehow, we have to have an ability to figure out what makes sense next. Perhaps an abstraction: A text becomes a series of classes, each represented by a symbol. Then compress sentences into symbol-words and use a markov chain to see what type of sentence is likely to follow...??

Evolving Sabrina (an a-life chatbot)

rule bases: use genetic algorithm to generate 0226.98 "neural net" 2^64 = 1.8446x10^19 256^64 = 1.3408x10^154 A 64-byte internal experience offers a lot of room to play. an inconceivable number of options / combinations / permutations i may need to generalize a bit... i'm in this state.. what's most appropriate of these 1,000 actions? ... maybe... 0313.98 The Modeler Given a totally empty neural net, an initial null 64-tuple and a set of books to read, sabrina would probably not learn much.. she'd not really experience anything... absolute zen. given a totally random net (meaning a large dictionary of random 64-tuples) she'd *probably* start to notice patterns. Words like "the" would begin to lose meaning.. They'd get associated with everything.. 0417.98 Meta-modelery
  1. deletion
    1. are there verbs in sentence with missing arguments?
      • passive voice
      • i'm (verb - running, etc.)
      • i feel xyz...
      • perhaps special parsing for non E' sentences?
      • -ing words
      • note some sentences have 2 verbs <-like that
    2. adjectives - the bored man said hi. (bored about what?) (said hi to whom?)
    3. comparatives - more xyz, faster/better/smarter - than what?
    4. suprelatives - best most worst - compared to what?
    5. clearly/obviously - to whom? (p.68 of StrucI - "it is" test)
    6. Modal operators of necessity - have to, must, etc (what would happen..?)
    7. Modal ops of possibility - impossible, can't, may not (what prevents?)
  2. distortion
0418.98 Active Listening Sabrina could have a thesaurus, and rank words based on frequency/simplicity.. Then she could take a sentence, change a couple words, turn others into pronouns, and otherwise pace what the user/client is saying... 0418.98 Client-Server It would be kinda cool if I had a sabrina-server and all kinds of clients.... One client for the mud, one for IRC.. a command line one.. One that could search the web.. The server could keep track of multiple conversations.. So, if I said "tell _stile_ i said hi," then any client that talks to stile - whether its irc, in response to an email, or on the mud... or whatever.. the client will tell the server "hey, stile's here"... and the server will say, "tell him michal said hi".. and the client will say, "hey stile -> michal said hi!" 0420.98 Anti-Math and Isomorphic Engines I get the feeling that one way a sentence could be compressed is as an Anti-Math story. The above sentence might look like this, for example: |++++++|*| It would be nice to have some more advanced symbols, though.. Like "many" (small numbers are covered already).. and possibility.. And maybe some meta-symbols.. for "it would be nice" or "this would suck".. It seems anti-math stories are inherently archetypical.. Perhaps we could use some Jungian archetype symbols as well, and their likely interactions (heck, we could just use a daily horoscope, or tv guide as an experiment) (WOOHOO! FINALLY A USE FOR TELEVIDEOGUIDEOMANCY!!!!!!) :) :) :) :) Anyway, once we can abstract an english story to an anti-math story, then we could have a routine that re-told the story using different objects or different people... Now, if we came up with a sort of genetic evolution or even RANDOM storytelling made up of anti-math stories strung together, then not only could we tell new stories, but we could offer metaphors, etc that relate to the client's experience. 0420.98 Clarity, Sabrina, and these notes In typing these up, I've realised that they're not very clear. That's fine. They'll be the first test for Sabrina-as-Meta modeler. 0421.98 64tuples, from Alex > I took a look at your notes, and I like the idea of the 64-byte submod > anchors. My idea is, when the anchor is fired, it should be somehow > averaged in two different proportions with the current 64-tuple and one > goes into the current experience, the other replaces the anchor. That > way, you can change and reset anchors more realistically. I don't know > if you want to do this, but it might be a good idea to make the > proportions evolutionary or learned or something.
word id kn/adv/adj/etc definition (esperanto)?
an english/esperanto word (or any language) primary key parts of speech 256 char string.. 128 values.. (binary string) (maybe) word in esperanto