Using Lisp (or another language) to generate fictional characters

Started by
125 comments, last by Woodsman 20 years, 4 months ago
I have the tendency of, well, not speaking english.

My concern is that someone might do something like this:
(setf some-guy ''())SOME-GUY(bassert ''(power-source triple-a some-guy))((POWER-SOURCE (TRIPLE-A)))(bassert ''(instance-of human-male some-guy))((INSTANCE-OF (HUMAN-MALE))(POWER-SOURCE (TRIPLE-A))); now here define the human-male category, which does not, nor will it likely ever, define a subslot of type power-source. 
This is all under the assumption that the categories, subcategories and slots must be defined before adding the same to a frame/structure.
Advertisement
Well, doesn''t bassert automatically make the additional assertion that power-source makes-sense-for human-male once some-guy is said to be an instance-of human-male?

No?

Probably not. bassert should deny the right to make some-guy an instance-of human-male when you attempt to assert it, because he has the slot power-source on him.

Let''s assume that we already had a frame for the slot power-source.

power-source:
instance-of: slot
makes-sense-for: powered-objects


Now, given that, as soon as one asserts that some-guy has a power-source, the bassert function then looks up the info for the power-source slot, determines that the power-source slot is indeed an instance-of slot (it had better be) and that it makes-sense-for powered-objects, thus bassert then asserts that some-guy is an instance-of powered-objects, and assuming that we have defined powered-objects to be mutually disjoint from living-things, then obviously, when we attempt to assert that some-guy is an instance-of human-male, it will deny that, unless human-male is not yet defined. Let''s say that it is not yet defined. Then, of course, when we ultimately try and declare that human-male is a sub-category of living-thing, it should deny that.

So, in the beginning, you want to bootstrap the knowledge base with enough meta-info and common sense to disallow such things. It''s possible.
_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
quote:Original post by bishop_pass
So, in the beginning, you want to bootstrap the knowledge base with enough meta-info and common sense to disallow such things. It's possible.

Ok, that's where I reasoned that you stood. My other question is whether bassert should only allow slots to be added to existing structures (which will do all the necessary checks to make certain no illegal entries) and add a separate instantiation function taking the name and type. This would force a distinction between making and modifying which seems to me to have some benefits.

[edited by - kordova on November 5, 2003 12:11:28 AM]
quote:Original post by kordova
quote:Original post by bishop_pass
So, in the beginning, you want to bootstrap the knowledge base with enough meta-info and common sense to disallow such things. It''s possible.

Ok, that''s where I reasoned that you stood. My other question is whether bassert should only allow slots to be added to existing structures (which will do all the necessary checks to make certain no illegal entries) and add a separate instantiation function taking the name and type. This would force a distinction between making and modifying which seems to me to have some benefits.
Either way. Your preference would appear to be in part motivated by a desire for less errors. Certainly, you don''t want a typo to cause a new frame to be made when you meant an existing one.

I hope you have (and it appears that you have) caught on to the subtlety that slots are also frames, and part of a hierarchy themselves.

For example, instance-of is a frame, and it looks like this:


instance-of:
((instance-of (slot))
(makes-sense-for (thing))
(inverse (instances)))


So, given that info, we see that when we assert:
(instance-of human-male bob)

assert looks up the frame for instance-of and sees that the inverse is instances, and automatically asserts the inverse relation, that being:
(instances bob human-male)

Also, bob must be an instance-of thing for the slot instance-of to reside on the bob frame, this following from the fact that instance-of makes-sense-for thing.

And lastly, the context under which we use instance-of is to to be a slot on another frame, and that''s why instance-of is an instance-of slot, as opposed to something else, like a frog.

_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
Here's what I've got (in terms of utility functions) for the time being:

A. (define-slot '((this-makes-sense-for) this-number-of-entries object))
result: object:
((instance-of (slot))
(makes-sense-for (this-makes-sense-for))
(number-of-entries (this-number-of-entries)))


Details:
1. The parameter number-of-entries can be zero, a positive number or the symbol any.
2. The this-makes-sense-for field is in a list so that a slot may be defined with reusability in mind (something such as a name for example could and would be used just as readily be a person as by a horse).

B. (instantiate '(this-category object))
result: object:
((instance-of (this-category)))


Details:
1. This function also appends object to the (instances) field of this-category.

C. (define-category '(this-sub-category-of object))
result: object:
((sub-category-of (this-sub-category-of)))


Details:
1. This function also appends object to the (sub-categories) field of this-sub-category-of.

D. (b-assert '(slot value object) &optional overwrite-existing-value)
result: object:
((EXISTING-SLOT (EXISTING-VALUE)
(slot (value)))


Details:
1. If slot-makes-sense-for object, either:
a. (slot (value)) is added if an instance of it didn't exist beforehand.
b. value is appened to the existing value list if there is room.
c. value overwrites any existing value for the slot.

[edited by - kordova on November 9, 2003 3:03:47 PM]
That''s all looking pretty good so far. Have you read about Douglas Lenat''s EURISKO program or RLL, which is a Representation Language Language?
_______________________________
"To understand the horse you'll find that you're going to be working on yourself. The horse will give you the answers and he will question you to see if you are sure or not."
- Ray Hunt, in Think Harmony With Horses
ALU - SHRDLU - WORDNET - CYC - SWALE - AM - CD - J.M. - K.S. | CAA - BCHA - AQHA - APHA - R.H. - T.D. | 395 - SPS - GORDIE - SCMA - R.M. - G.R. - V.C. - C.F.
quote:Original post by bishop_pass
That''s all looking pretty good so far. Have you read about Douglas Lenat''s EURISKO program or RLL, which is a Representation Language Language?

I definitely have not. I''ll have to look into it.
there is no link related to, too??

>>>>>>>>>>>>>>>
be good
be evil
but do it WELL
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>be goodbe evilbut do it WELL>>>>>>>>>>>>>>>
quote:Original post by Neoshaman
there is no link related to, too??

Nice to see that you''re paying attention to the threads, shaman. I don''t see any books on the topic but I''ll share a link if I find a particularly good one with my pal google.
yep i''m still paying attention but i have some overflow because of high level abstract english, remember i''mn''t a programmer at the basis, i have a flexible mind but i reach some limits
i think some post around this period may look like a little puzzle because my mind is puzzle because of the large amount of data i have take from 3 mouth since i have begin this project
and the fact i understand not that easy english and could not use it subtlety is hard for myself

i have start study the case with my cinema teacher in my artschool to see if there something i could borrow for academic storywritings

i have to synchronize too what i know about semantice s and how i use them with the work done is programmation and the kind, i have use until now empirical thoughts build with memory of some article i have read once, then...

don''t pay to much attention if some of my post are a little inacurate, i''m still learning english and after re-read twice both thread it seems that i did misunderstood some post, i would re-read more, i would seek for academics resherch on that field, i have once read about a project called TALESPUN which would answer the topic about interlude

>>>>>>>>>>>>>>>
be good
be evil
but do it WELL
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>be goodbe evilbut do it WELL>>>>>>>>>>>>>>>

This topic is closed to new replies.

Advertisement