Merlin - Dec 31, 2010:
Your example where;
> an ant = an insect
Okay, an ant = an insect.
implies that they are identical. I think that breaks down because although all ants are insects, not all insects are ants.
Sure. “=” is an equivalence relation. The problem is that in English, sometimes “is” can express an equivalence relation and sometimes not. I’m testing the hypothesis that I can use the “=” relation in cases such as “a man = all men” or “an insect = an ant”, and then deal with the cases where it doesn’t hold true. There is a sense in which “an insect is an ant”; using the “=” operator is an attempt to capture that. It can also be thought of as “insects include ants”, “all men includes a man”. But my use of “=” is a hypothesis, which is working for most of the dialogs I’m testing the bot with so far; very likely though I will have to modify the model as the complexity of making it work for a wider range of examples grows
If I substitute different items into your example you will see what I mean.
[...]
If I asked it about a whale and told it a whale is a mammal wouldn’t it reply that a whale is smaller than a car?
I’ve modified the program to try to handle negative statements better:
> a man is smaller than a car
Okay, a man is smaller than a car.
> a man == a mammal
Okay, a man = a mammal.
> a whale = a mammal
Okay, a whale = a mammal.
> is a whale smaller than a car?
Yes, a whale is smaller than a car.
> a whale is not smaller than a car
Okay, a whale is not smaller than a car.
> a whale is bigger than a car
Okay, a whale is bigger than a car.
> is a whale smaller than a car?
No, a whale is not smaller than a car
> is a mammal bigger than a car?
Yes, a mammal is bigger than a car.
> “is bigger than” = “is larger than”
Okay, is bigger than = is larger than.
> is a mammal larger than a car?
Yes, a mammal is larger than a car.
—-
This is not quite where I want to be, but it’s getting there Instead of “is” the agent should use “can be”: “a mammal can be smaller/larger than a car”.
One of the things I am also looking at is how to handle/store exceptions to the rule.
If ALL (SOMETHING) ARE (SOMETHING)
This is a quick method to cover the general case. But for an individual case this might not be true.
> all metals are solid
Okay, all metals are solid.
> mercury is a metal
Okay, mercury is a metal.
> all metals includes a metal
Okay, all metals = a metal.
> is mercury solid?
Yes, mercury is solid.
> Mercury is not solid.
Okay, Mercury is not solid.
> Iron is a metal.
Okay, Iron is a metal.
> is Iron solid?
Yes, Iron is solid.
> is Mercury solid?
No, Mercury is not solid.
> is Mercury a metal?
Yes, Mercury is a metal.
> is iron a metal?
Yes, iron is a metal.