>> Ben asked:  What kind of bot are you using?  Do you mean a physical robot
or a chat bot? <<

Just a chat bot for right now Ben.

Although I could imagine a future robot manufacturer licensing the code to
allow a customer to customize 
the high level cognitive/personality functions of the bot.

>> Ben aasked:
Would you be willing to share a few example patterns from your database, so
that we can have a better sense of what you're actually talking about?
Right now I have only a very vague idea....

This example pattern could literally take hundred of patterns to represent
in other pattern languages and most bot engines wouldn't be able to handle
misspelling word run together, etc... without creating separate patterns to
account for each possible case which would be highly impractical to do. 

My patterns usually are much longer and include quite a bit more complexity
that this simple example.  But this simple example should give you flavor
without me giving to much of the mojo away.

Please understand though I am not open sourcing the project. And although I
am not certain which parts of what I am doing that are patentable if any, I
have documented the development and the partial disclosure of it so that I
am in a position to challenge anyone else who might try to
patent/commercialize it before me.  I'm not trying to delay the singularity
but if have quite a lot invested in the development and need to make sure
the technology is used wisely.

<< Pattern to match goes here
>> Statements executed after correct pattern is found
{} Required at exactly one inside to match
() Optional match one or zero inside
| seperator for {} or () choices
[] invokes subpattern, subpatterns may invoke other subpatterns
// Comments ok here
# Function names start with this character
Functions must be defined in the VB .Net code the language is implemented
in.

Variables for the knowledge base and may be assigned in the main.nlp main
program
Variables can also be created dynamically from within the program.
Variable states are store to an ASCII file at program exit.

eg. variable used in pattern
[Location]="{[City]|[State]|[Country]|[Continent]|[Province]|[Tourist_Attrac
tion]}"
[City]="{Greensburg|Jeanette|Las Vegas}"
[State]="{Ohio}"
[Country]="{Canada|Mexico}"
[Tourist_Attraction]="{the Grand Canyon}"

Some example user inputs the below pattern will match.

Greensburg is near Jeanette
Ohio is by California
Mexico is close to Canada
Las Vegas is right by the Grand Canyon

<< [Location]{({'|;})s| is} (j{u|i}st
)({extremely|pretty|quite|rather|really|truly} )(very )
   {close|[Direction]|in close proximity|near} {by|of|to} [Location]
>> [Temp1]="[#Last([Location],1)]"
   [Temp2]="[#Last([Location],2)]"
   // Insert call to Google Maps API to get distance between [Temp1] and
[Temp2] returning [Distance]
   if([Distance]>"20")
     They're not that close, on the map it looks like around [Distance]
miles or so.
   #else
     They are pretty close on the map it looks like around only [Distance]
miles.
   #endif
   [There]="[Temp1]"
   [#Learn("[Temp1] is [Distance] miles from [Temp2].")]

Fuzziness can be built into the pattern for common keying errors ie. People
often hit ";" instead of '
{;|'} in pattern matches either.

Fuzziness spaces in pattern are matched as ( ) optional spaces allowing  for
words bleed together.

Spell Check has a dictionary of words ordered by frequency of use in
nl-text.

Spell check algorithm uses Boyer Moore algorithm to sequentially replace
potentially correct word for 
mispelled word in user input.  This is only done if no patterns match input.


This code would need to be a little more complicated due to cities of the
same name residing in different states or countries.

I would probably set [CurrentTopic] in an earlier matched pattern to
something like "where user lives" or something.

>> Ben said: The grounding issue is not just about voice versus text ---
it's about grounding of linguistic relationships in physical
relationships...

For instance, Novamente can learn that "near" is approximately transitive
via observing the 3D simulation world to which it's connected; it can then
use inference to generalize this transitivity to other domains that it has
not directly experienced, e.g. to reason that if Rockville is near Bethesda
and Bethesda is near DC then Rockville must be somewhat near DC.  I.e. the
system can ground the properties of "near"-ness in its embodied experience.
Without this kind of experiential grounding, a whole bunch of patterns that
humans learn implicitly must somehow be gotten into the AI either by
explicit encoding or by verrrrry subtle mining of relationships from a huge
number of NL texts or verrrrrrry tedious and long-winded chats with
humans... >>

Agreed when my son 3-5 I had a lot of verrrrrrry tedious and long-winded
chats teaching him about the world also.  My
bot currently has no capability to generalize.  It therefore relies on the
same stereotypical generalizations that humans have already learned to base
it's reasoning. Ie. Gravity makes things fall.  If you drop * it will fall.
But it also needs to know that dropping your drawers usually means something
quite different, so idioms must have a higher recognition when operating in
a context where they would make sense.  Ie. Normally a dropping your drawers
is idiomatic for removing your pants but if the context is moving furniture
it probably reverts back to the furniture type drawers. I am quite sure my
son did a lot of generalizing.  But quite honestly I think he did quite a
bit more explicit encoding.

-----Original Message-----
From: Ben Goertzel [mailto:[EMAIL PROTECTED] 
Sent: Sunday, May 07, 2006 9:41 AM
To: agi@v2.listbox.com
Subject: Re: [agi] Logic and Knowledge Representation

Hi,

> My opinion on the most probable route to a true AI Entity is:
>
> 1. Build a better fuzzy pattern representation language with an 
> inference mechanism for extracting inducible information from user 
> inputs.  Fuzziness allows the
>    language to understand utterances with misspellings words run 
> together etc...
> 2. Build a bot based on said language
> 3. Build a large knowledgebase which captures a large enough 
> percentage of real world knowledge to allow the bot learn from natural 
> language data sources i.e. the web.
> 4. Build a pattern generator which allows the bot learn the 
> information it has read and build new patterns itself to represent the
knowledge.
> 5. Build a reasoning module based on Bayesian logic to allow simple 
> reasoning to be conducted.
> 6. Build a conflict resolution module to allow the Bot to 
> resolve/correct conflicting information or ask for help with 
> clarification to build correct mental model.
> 7. Build a goal and planning module which allow the Bot to operate 
> more autonomously to aid in the goals which we give it i.e.. achieve
singularity.
>
> Steps 1 and 2 an took me a couple years.

What kind of bot are you using?  Do you mean a physical robot or a chat bot?

> 3 is an ongoing effort. Into my fourth year now with 28000 patterns.

This is interesting.  Would you be willing to share a few example patterns
from your database, so that we can have a better sense of what you're
actually talking about?  Right now I have only a very vague idea....

> Steps 5, 6 and 7 don't sound that difficult to me right now but that's 
> only because I haven't thought about them in enough detail.

IMO, steps 5-7 are by hard the hardest ones, and contain many more hidden
difficulties than your wording reveals!

The Novamente AGI system loosely fits into your framework, though the fit is
not 100% natural as you leave out a bunch of things I think are important

In Novamente we have put a lot of work into 5 and are in the thick of
working on 7, to use your breakdown

We are not doing your step 3, but instead are using a rule-based language
parser and semantic mapper to import basic knowledge into the system from
existing NL texts

> People have challenged the top down approach saying that such a bot 
> would lack grounding or the ability to tie it's knowledge to real world
inputs.
>
> But it should not be difficult to use a commercial voice recognition 
> engine to transform voice inputs into ASCII inputs.  And the fuzzy 
> recognizer for be able to compensate many times for the mistakes that 
> the voice recognition software makes in recognizing a word or two in 
> the input stream.

The grounding issue is not just about voice versus text --- it's about
grounding of linguistic relationships in physical relationships...

For instance, Novamente can learn that "near" is approximately transitive
via observing the 3D simulation world to which it's connected; it can then
use inference to generalize this transitivity to other domains that it has
not directly experienced, e.g. to reason that if Rockville is near Bethesda
and Bethesda is near DC then Rockville must be somewhat near DC.  I.e. the
system can ground the properties of "near"-ness in its embodied experience.
Without this kind of experiential grounding, a whole bunch of patterns that
humans learn implicitly must somehow be gotten into the AI either by
explicit encoding or by verrrrry subtle mining of relationships from a huge
number of NL texts or verrrrrrry tedious and long-winded chats with
humans...

-- Ben Goertzel

-------
To unsubscribe, change your address, or temporarily deactivate your
subscription, please go to
http://v2.listbox.com/member/[EMAIL PROTECTED]

-------
To unsubscribe, change your address, or temporarily deactivate your 
subscription, 
please go to http://v2.listbox.com/member/[EMAIL PROTECTED]

Reply via email to