Re: [Artificial Intelligence Group] My Natural Language Processing program
- --- In firstname.lastname@example.org, RobertsMrtn@...
> [...] You said that your program starts off knowinghttp://geocities.com/ai_project_1/ appears to be
> nothing but you asked it questions about the height
> of people compared with other people. So your program
> must already know about the concept of height.
an ALICE-type canned-response NLP program that
does not use concepts for knowledge-grounding.
If so, the program may not get close to True AI like
http://aimind-i.com in Forth based on Mind.Forth or
http://modularai.corecoding.com is a Modular AI Project
where a Perl AI coder could set up a discussion topic
for AI enthusiasts to cooperate in coding the various
http://mind.sourceforge.net/aisteps.html modules of the
Comprehensive Perl Archive Network (CPAN) AI proposal.
If the original poster to whom Martin responded really
wants to "create the best NLP program possible" he might
consider hosting two separate branches of Perl AI coding --
his own original program and all new work that he adds,
plus a conceptual, modular Perlmind program as described at
http://mind.sourceforge.net/perl.html so that the world
of Perl coders may have an opportunity to build on his
invention of artificial intelligence in Perl via CPAN.
http://www.blogcharm.com/Singularity describes how near
the Singularity is and how AI coders may hasten its arrival.
where interested AI coders may write such AI4U reviews as
http://mind.sourceforge.net/rjones.html with author response.
- --- In email@example.com, RobertsMrtn@... wrote:
> Your program looks quite impressive on the face of it.
> You said that your program starts off knowing nothing but you
> questions about the height of people compared with other people. Soyour
> program must already know about the concept of height. Would it beable to answer
> similar questions concerning size or age for example? You said thatyour
> program is quite basic, but to be able to hold conversations atthis level is
> quite an impressive task. I will be interested to hear more.Hi Martin,
> [Non-text portions of this message have been removed]
Thanks for your response.
I would just say that my programming philosophy is not to start off
with any sort of "knowledge base". What you do is create objects
through the "There is a..." mechanism and you can populate this object
with characteristics. Height just happens to be one of the
characteristics that it recognizes. If you ask who is the tallest of
two objects, it compares the registered heights of the two objects.
This is a very basic task, and it can easily be duplicated with any
other kind of quantifiable characteristic.
I am still very deep in the "thinking through" phase of development
here. The program that I have posted on the web at
geocities.com/ai_project_1 is really just a "first draft" of sorts: a
very basic prototype of the mechanisms that I use. I am now on the
second version which will much more flexible and robust.
What I think is missing from the field of AI programming is basic
working examples of simple human logic parsing and registration. To
me, the proof is in the pudding of the conversation threads that a
program is capable of handling. I am always thinking of new types of
threads that I want to be able to handle, such as:
"There is a funny man named Alex"
"Alex is a doctor"
So, the problem I had here is to decide how to treat the "being a
doctor" quality of Alex. Do I treat is as a simple characteristic,
such as his funniness? I figured that this approach makes no sense
because a "doctor" is a concrete object, just like a "man" is. So,
what I decided to do is develop the concept of a "hard link" between
objects. Just as the first statement creates a "man" object, the
second statement creates a "doctor" object. But the second statement
also creates a link between the "man" and "doctor" objects. I call
this a "hard" link because these two objects must not consist of any
contradictory characteristics. In other words, if the man is "funny",
then the doctor cannot be "unfunny". The two must have the same name,
birthdate, gender, height, weight, etc...
But then, we have this similiar conversation thread:
"There is a funny man named Alex"
"As a boy, Alex was not funny"
My thought in this case is to create something called a "temporal
link" between the man and the boy objects. A temporal link means that
two objects are linked along a timeline, in a definite order. Two
objects that are linked temporally may differ in some characteristics
,such as height, weight, funniness, but may not differ in others, such
as gender, name, or birthdate.
And then you have this kind of thread:
"There is a man named Joe and a man named Mike"
"Mike and Joe are MENSA members"
This would create the weakest link of all between objects: a nominal
link. The only necessary characteristic shared between the two
objects is membership in the same club.
Going back to the first thread, then, what should happen if you create
a hard link between objects, and then later negate it: "Alex is not a
doctor". My thinking is simply to turn the link into a temporal link.
That is, the doctor object exists only as being temporally prior to
the man object. This has the same effect as "Alex was a doctor".
Some of the charateristics of the two objects can now be different
from one another, while others must be the same.
The question of what to do upon the statement "Alex never was a
doctor", however, is up in the air...
I have also gotten the new version of my program to be able to handle
"There is a crazy boy named Bill and a crazy boy named Jeff and a
"The crazy boy swam in the pool"
The program will then ask which crazy boy is being referred to. If
the next statement is simply, "Bill", the program will then complete
the registration of the first statement, as if it had been, "Bill swam
in the pool".
About the basic philosophy of what I want this program to do,
"Dogs are four legged"
"Men are mortal"
"Always eat breakfast in the morning"
"The sky is blue"
are highly uninteresting. All other Natural Language Processing
programs that I have seen get hung up on statements like these. I
fail to see how otherwise intelligent human beings could be served in
the least by computer programs with this kind of "knowledege base".
This kind of abstractive reasoning is highly derivative. The first
task in the field of AI should be to get computers to "think"
concretely. After all, this is the way in which we learn to think as
we are growing up.
Our parents point to some object and say, "There is an airplane" or
"There is a bird" or whatever. We then ask our parents questions
about the characteristics of THAT PARTICULAR object: "How fast can it
go?" or "How high can it fly?"
We live in the real world that is composed of real, discrete objects.
The problem is that we refer to the same objects in many various
ways: "Joe" or "he" or "the doctor" or "Alice's son" or "the guy I met
on the Subway last Tuesday". In fact, one of the first things I
realized I needed to get my program to do was pronoun substitution.
This is something that the human mind does effortlessly, and we
therefore take it for granted. But it is immensely important when it
comes to everyday human communication.
So, here's what I'm thinking of the future of where this kind of
programming can go. You start out with personal computers that you
tell all of your personal information to. These are the computers
that can easily handle everyday references, such as, "Mike" or "my
doctor" or whatever. You can then tell your computer "I need to
schedule a reservation at Angelo's Pizzeria for Mike's Birthday" or
"Make an appointment with my doctor for next Tuesday at 9 am". You
computer knows who "Mike" is and all of his necessary attributes, and
the same goes for "my doctor". Your personal computer will then be
able to send a plain text message to another computer, such as the one
at Angelo's Pizzeria or the one at your doctor's office.
These other computers, then, will be able to handle the specialized
task of setting appointments, for example. Other computers, however,
might just be "routers" in that they parse an incoming request, such
as ..."What is the atomic weight of Boron" and determine what kind of
computer would be able to answer the question. The router might be
able to determine that the question deals with chemistry, and then
would send the question off to a known chemistry server, at the local
university, for instance. In this way, we would be able to build an
"intelligent internet" that quickly and easily handles everyday human
The bottom line of what we, in the NLP field, are trying to do is to
be able to program computers from a distance. If we only have access
to a telephone, and are otherwise indisposed, we might want to be able
to leave our computers a voice message that it can register the logic
of, and perform any necessary actions. The examples of appointment
setting are simply very basic examples of "at-a-distance computer
programming". But before any of this becomes an everyday reality, we
need to be able to program our computers to parse and register
everyday human logic.
The end task, ultimately, is the creation of the highest possible
level computer programming language: English (or the human language of
- --- In firstname.lastname@example.org, "AT Murray"
>There is a MAJOR difference between a "canned response" that has noth
> http://geocities.com/ai_project_1/ appears to be
> an ALICE-type canned-response NLP program that
> does not use concepts for knowledge-grounding.
ing to do with the price of tea in China and a response that is
logically correct. My program is founded on functional logical
correctness. Everything like Alice and Jabberwacky is simple amusement.
> If so, the program may not get close to True AI like ...I have no idea what the term "True AI" is meant to connote. I assume
the main users of the term are the snake-oil salesmen of today.
> If the original poster to whom Martin responded reallyThe proof is in the pudding of the conversational threads that a
> wants to "create the best NLP program possible" he might
computer program can handle. As I am not highly impressed by the
threads that your program can handle, I'm not sure how seriously I
should take any suggestions you may offer.
> -----Original Message-----<snip>
> From: email@example.com
> [mailto:firstname.lastname@example.org] On Behalf Of dkane75
> Sent: Wednesday, 31 January 2007 2:05 PM
> To: email@example.com
> Subject: [Artificial Intelligence Group] Re: My Natural Language
> Processing program
>One needs to focus on the roots of logic to get it to allow for development
> I would just say that my programming philosophy is not to start off
> with any sort of "knowledge base". What you do is create objects
> through the "There is a..." mechanism and you can populate this object
> with characteristics. Height just happens to be one of the
> characteristics that it recognizes. If you ask who is the tallest of
> two objects, it compares the registered heights of the two objects.
> This is a very basic task, and it can easily be duplicated with any
> other kind of quantifiable characteristic.
> I am still very deep in the "thinking through" phase of development
> here. The program that I have posted on the web at
> geocities.com/ai_project_1 is really just a "first draft" of sorts: a
> very basic prototype of the mechanisms that I use. I am now on the
> second version which will much more flexible and robust.
> What I think is missing from the field of AI programming is basic
> working examples of simple human logic parsing and registration.
of meaning. The neurological dynamics of our brains reflect a derivation of
the full set of logic operators from a sub-set, or more so a generic set,
covering symmetric perspectives and so approximations. Out of the symmetric
emerged the asymmetric and combining the two introduces hierarchy covering
non-nested to nested.
Given hierarchy we will have levels of logic with the most refined requiring
energy to operate where that energy can be costly and so we fall back on
some 'easier' level of operation but in so doing introduce 'illogic' in
reasoning - IOW we fall back from asymmetric to symmetric and that includes
interpreting the asymmetric as if symmetric (emotion does this).
IF a IS NEAR b then b is NEAR a.
IF a is two inches to the LEFT of b then b is two inches to the RIGHT of a.
The asymmetric is more precise.
Everyday 'chit chat' covers a more symmetric focus in that living off
autopilot means living off instincts/habits and THEIR focus is on SAMENESS
(and so the symmetric focus that reflects our use of metaphor etc -
asymmetric distorts the metaphor into metonymy - part for whole confusions)
As a species we are super-sensitive to DIFFERENCES (XOR operator) but upon
experience of such will try and seek out SAMENESS (EQV operator). To
maintain asymmetry we focus on the IMP operator that is the only asymmetric
operator and covers the converse of IF..THEN.. not being true. Symmetry
focus is 'lazy' and works as A IFF B etc to allow for converse.
The cost of the asymmetric is that it can elicit sensory paradox - see
examples in http://members.iimetro.com.au/~lofting/myweb/paradox.html )
WE can trace the roots of all of this back to basic brain dynamics covering
self-referencing of dichotomies and in particular the WHAT/WHERE aka
differentiating/integrating aka difference/sameness aka asymmetric/symmetric
The self-referencing gives us (a) three forms of dichotomy (symmetric,
asymmetric, anti-symmetric) and (b) two basic forms of hierarchy, nested vs
With the dichotomies, once self-referenced, we can derive a set of
categories covering the full spectrum of dichotomies in that underneath all
of the possible labels for categories, there is a core set derived from our
neurology where that set seeds such notions as verbs/nouns and their
derivatives or local labelling and does the set seed basic categories of
emotions and of the types of numbers we use in mathematics etc etc etc
There is more of course, there is a property of self-referencing that is not
covered in the literature, namely the set of categories, being a form of
language, must be able to describe themselves, and they DO if one uses the
bit representations of categories and use the XOR operator - see
http://members.iimetro.com.au/~lofting/myweb/properties.html - in that that
operator allows for extraction of parts (difference) from a whole regardless
of scale (but you DO need to recurse to 5/6 levels to start to get 'value'
from this process)
generic categories of meaning:
Objects bias (differentiating):
BLEND - wholeness, whole numbers
BOUND - partness, rational numbers
Relationships bias (integrating):
BOND - share space, irrational numbers
BIND - share time, imaginary numbers
From these come composites as reals, complex, quaternions, octonions. All
- --- In firstname.lastname@example.org, "AT Murray"
is an invitation to code conceptual, modular AI Minds in Perl.
- about natural language understanding, i advise you Turkish language, that has a mathematical base, and fully regular (no irregular words/phases)
----- Original Message ----
From: dkane75 <dkane75@...>
Sent: Friday, January 26, 2007 6:22:46 AM
Subject: [Artificial Intelligence Group] My Natural Language Processing program
I've taken upon myself the task of creating a full-fledged natural
language processing program that could serve as a sort of "operating
system" in a computer that you talk to rather than point and click at.
My main interest deals in parsing and registering everday human logic
followed by handling queries based upon what the program has been
I finished my first generation program several months ago, which can
be downloaded here: http://geocities. com/ai_project_ 1 .
The program starts out as a "clean slate" whereby you begin teaching
it basic facts that you can later query. Here is a "discussion" that
I held with it.
Me: Who do you know?
Computer: I do not know anyone.
Me: There is a crazy boy and a wild girl.
Me: He is named Joe.
Computer: Confirm the name of the boy is: Joe.
Computer: Thank you.
Me: Her name is Sally.
Computer: Confirm the name of the girl is: Sally.
Computer: Thank you.
Me: There is a green pool.
Me: Yesterday, Joe swam in it.
Me: He did that because he is crazy.
Me: There is a hilly park.
Me: Sally ran in it.
Me: She is 2 meters tall.
Me: The boy is 5 feet tall.
Me: Who do you know?
Computer: I know a boy named Joe and a girl named Sally.
Me: What is Joe like?
Computer: Joe is crazy.
Me: Why is he like that?
Computer: I do not know.
Me: Where is the boy?
Computer: As of 1-14-07 Joe was in the pool.
Me: What is he doing?
Computer: As of 1-14-07 Joe was swimming.
Me: Why did he swim?
Computer: Because Joe is crazy.
Me: Is Sally crazy?
Computer: No, Sally is not crazy.
Me: She is wild.
Computer: Yes, I know.
Me: Where is she?
Computer: As of 3 minutes ago Sally was in the park.
Me: Is Joe taller than Sally?
Me: What is the park like?
Computer: It is hilly.
Me: Where is it?
Computer: I do not know the location of the park.
Very basic stuff, but not bad for my first try at programming!
I knew that I was going to need to start the whole thing over again if
I was going to be able to handle the complexity of statements that I
wanted, and also if it was going to be able to output more
naturalistic and varied responses.
My new program, so far, is able to parse statements of arbitrary
length and complexity:
"Joe and Sally walked in and around the park and playground"
"They are wild and crazy swam in the pool and ate the pizza"
"There is a boy girl and pool the boy and girl are wild and crazy they
swam in it because they are hot"
I intentionally left out the punctuation because the program is
intended to be able to parse text that is input from a speech
recognition program, which is punctuation free, of course.
I would like to get in touch with others who have the same kind of
interest in natural language processing. I would like to find people
that I can work on this project with, either as a developer, a
beta-tester, or even an output response writer (as in the response to
a statement like "Hello" or "The boy is crazy").
I have tried to find other working examples of programs like mine. I
have tried those web-based chatbots, and they are horrifyingly awful.
I have looked in the Natural Language registry website, and found
nothing very exciting. Mainly, I am looking for inspiration so that I
can create the best NLP program possible.
contact me at: ai_project_1 at yahoo dot you-know-what
Need a quick answer? Get one in minutes from people who know.
Ask your question on www.Answers.yahoo.com
[Non-text portions of this message have been removed]