Ai Dreams Forum

Member's Experiments & Projects => General Project Discussion => Topic started by: ivan.moony on June 13, 2014, 11:27:20 pm

Title: AGI methods
Post by: ivan.moony on June 13, 2014, 11:27:20 pm
Hi all

I just felt like to share this document with you:

Synth Preview (Artificial Intelligence Aspect) (https://docs.google.com/document/d/1Q8AxXFFgvGb9cHbpyFCUIzz1IDBJu2Wc1q2yUuVdGEE/edit?usp=sharing)

I hope that Freddy isn't mad at me anymore.

Ivan
Title: Re: AGI methods
Post by: Freddy on June 14, 2014, 12:11:41 am
I don't think I was mad at you Ivan  :-[

Anyway welcome back :)
Title: Re: AGI methods
Post by: Art on June 14, 2014, 01:04:02 pm
Nice posting Ivan! Good to see you back!!
Title: Re: AGI methods
Post by: ivan.moony on June 14, 2014, 01:51:39 pm
From AI point of view, Synth would be a direct competition to OpenCog. It would be ran inside browser, so specific programmed applications would be easily presented to a wide range of users.

Although U might consider Synth as AI domain specific language, I wouldn't call it that way because it would be a general use language in which U could program regular applications such are games, databases and other general apps. It just happens that it handles AI very well (in fact, this was one of mine conditions in making a new language, to handle AI well).

So, why not javascript or something else for AI? It is because in the essence of Synth are mechanisms that are commonly used in AI, so U wouldn't have to program it from the scratch which U would have to do in javascript and similar languages. These mechanisms are expression unification and reactive inference engine.

Let's digress a bit to see the other side of Synth, the general programming part. Well, Synth would provide a new, exotic way of programming. Let's say that we have a structure by which we can store data in variables. Programming in Synth would be managed only with assignments to variables upon events and events araise when other variables change their values. So we wouldn't have classic pointer which goes line by line in code and executes it. We would have a state machine in which variables change their values when events araise. It is yet to be seen how this system would behave in algorithm construction, but from what I've seen by now, technology is promissing.

And if U can imagine some DSL (domain specific language) that would easy up programming of a part of your application, there is a solution for that: Synth would provide user definable parser and interpreter for custom languages, so U can mix Synth and i.e. Python or other code. But I think that this wouldn't be used much, as my experience shows that people usually stick with one language per application. What might be used wider is user definable data formats for storing data such is SVG (scallable vector graphics). So you would pick a language to program in (let's say Synth) and when you get to graphics part, you can use SVG syntax to manage shapes on screen.

Synth would attempt to combine state machine with reactive programming (automatic updating of variables on change of a value that compose the variable). State machines assigns values to variables, while inference engine provides reactive part to the very same variables. So, variables can contain states, reactive values or both.

To return to AI, most of AI theories deal with stateless systems. Synth would attempt to extend itself to easily manage state machines, which would give us more complete embracement of systems in the Universe.

Actually I was searching for an AI method to deal with solving different problems. I needed a data structure that could describe states in the Universe. Besides that I needed some dynamics mechanism to describe how these data change through time. I've managed to battle through and Synth idea was born.

I find that Synth would be an exciting innovative platform and I hope that programmers will like it.
Title: Re: AGI methods
Post by: ivan.moony on June 14, 2014, 02:07:17 pm
Oh, and thanks for warm welcome, it meant a lot to me, guys :)
Title: Re: AGI methods
Post by: Freddy on June 14, 2014, 04:00:54 pm
Sorry if I am being dim, but is this a project of your own Ivan ?
Title: Re: AGI methods
Post by: ivan.moony on June 14, 2014, 04:33:37 pm
Yes, Synth is programming language I'm developing. I need it to create a web site which would solve math, physics and chemistry problems. The site would also include theorem proof finder and, maybe in the future, intelligent encyclopedia with some chatting support and tree branch exploring of knowledge (upon question U get a short matter abstract where U can recursively expand notions about which U want to read about). The site would serve as a show-off for AI techniques and would include a link to downloadable free Synth programming language. My final goal would be to interest public to be more creative in AI field, so someone would one day preferably build intelligent autonomous machine that would change the world.

I figured out that posting "come here to solve math problems" to facebook's and twitter's school and university pages would bring me some publicity to share the AI knowledge because maybe someone would be interested at how things work under the hub.

So Synth would be OpenCog competitor and later site would be Wolfram Alpha competitor. Wolfram Alpha is commercial site so if I provide free stuff, there should be interested crowd for the site (and I have something to show to the world by now). What a heck, I can live from Google adds, plus I get greater possibility of autonomous AGI in the future.
Title: Re: AGI methods
Post by: ivan.moony on June 15, 2014, 12:37:59 pm
I can imagine a chatbot that translates English sentences to logic, derives conclusions and fire answers when questions are answered. So it wouldn't be a classic chatbot, but an answering machine.
Title: Re: AGI methods
Post by: Don Patrick on June 15, 2014, 12:46:57 pm
I can imagine a chatbot that translates English sentences to logic, derives conclusions and fire answers when questions are answered. So it wouldn't be a classic chatbot, but an answering machine.
That about describes my AI project. But as far as I've heard that's not considered AGI, is it?
Title: Re: AGI methods
Post by: ivan.moony on June 15, 2014, 01:10:24 pm
I can imagine a chatbot that translates English sentences to logic, derives conclusions and fire answers when questions are answered. So it wouldn't be a classic chatbot, but an answering machine.
That about describes my AI project. But as far as I've heard that's not considered AGI, is it?
I think that deriving conclusions is AGI. It is induction and deduction that would make it AGI. Something like (a->b, b->c, a)->c and other more complicated forms of conclusions.
Title: Re: AGI methods
Post by: ivan.moony on June 15, 2014, 01:31:28 pm
I can imagine a chatbot that translates English sentences to logic, derives conclusions and fire answers when questions are answered. So it wouldn't be a classic chatbot, but an answering machine.
That about describes my AI project. But as far as I've heard that's not considered AGI, is it?
I think that deriving conclusions is AGI. It is induction and deduction that would make it AGI. Something like (a->b, b->c, a)->c and other more complicated forms of conclusions.
The other stuff is a behavior mechanism, or whatever is on top of AGI methods.
Title: Re: AGI methods
Post by: ivan.moony on July 06, 2014, 04:09:07 pm
Someone asked me for this specification on another site, so I wanted to share it here also. A 7 pages document complements above document about some AGI methods.

https://docs.google.com/document/d/1oCjPS212mk8boFIeKyz-9PdDaL5NflhhVL4acIuCqFs/edit?usp=sharing (https://docs.google.com/document/d/1oCjPS212mk8boFIeKyz-9PdDaL5NflhhVL4acIuCqFs/edit?usp=sharing)

Basically it explains Synth with its units that look like state machines, isolated units inside the Universe. If only I knew how to translate readings from arbitrary sensors into these units, I would be a very happy man.

I think I'll spend at least a month intensively on this question, maybe something shows up. And maybe specification would be finally changed, as the main purpose of Synth is an AI use.
Title: Re: AGI methods
Post by: Art on July 06, 2014, 06:01:41 pm
I can imagine a chatbot that translates English sentences to logic, derives conclusions and fire answers when questions are answered. So it wouldn't be a classic chatbot, but an answering machine.
That about describes my AI project. But as far as I've heard that's not considered AGI, is it?
I think that deriving conclusions is AGI. It is induction and deduction that would make it AGI. Something like (a->b, b->c, a)->c and other more complicated forms of conclusions.

I think you meant Inference instead induction. There are some more accomplished chatbots that can make inferences like in your A>B, B>C therefore A>C example. Induction is basically being introduced or assembled or put into a mix or group. Induction into the armed forces, etc.

Just to clarify and not to confuse...
Direct competitor to Wolfram Alpha and OpenCog...Wow...you really have your work cut out for yourself! Good luck with Sync! Do keep us posted on any development!! O0
Title: Re: AGI methods
Post by: ivan.moony on July 06, 2014, 06:38:14 pm
I figured that OpenCog wouldn't be that much strong competitor, but Wolfram Alpha... I'll have a lack of encyclopedic knowledge, so I'll have to catch it up with free automatic solution center (physics, chemistry and universal problem solver and theorem proof finder, besides math). It would hardly ever be better than commercial Wolfram Alpha (unless I invent autonomous AI, but my time is running out and I am not getting any younger. Frankly, I'm getting tired of these years of writing AI puzzles in my diary, so very soon I'll try to publish what I've found out so far through Synth. The rest would be left to crowd from schoolboys, over teachers, ending with scientists and AI enthusiasts. I decided to spend one more summer on autonomous AI. If it doesn't work out, I'll leave it for my old days)
Title: Re: AGI methods
Post by: Don Patrick on July 07, 2014, 07:30:54 pm
You have a pretty good brain on your shoulders and your recent posts were heading in the right direction, but AI like that is going to take more than a few months, and I can't help but think that AGI is a bit overkill if you're just trying to create a smart and easy programming language.
Not to discourage you though, because it is apparently possible to connect an AI program to WolfRam Alpha. Why compete if you can use it?

Art: I was personally only familiar with induction as a method of reasoning. It's confusing stuff, but as I understood it, induction is making generalisations "The victim was killed with something sharp, the butler has a knife, so the butler probably did it." with a probable conclusion rather than an inescapably true conclusion "The victim was killed with the kitchen knife, only the butler had that knife, so the butler did it". Both induction and deduction are two methods of inference aka reasoning :)
http://en.wikipedia.org/wiki/Inductive_reasoning (http://en.wikipedia.org/wiki/Inductive_reasoning)
Title: Re: AGI methods
Post by: toborman on July 08, 2014, 04:19:38 am
Reasoning methods include: Deduction, induction, and abduction. Other reasoning methods might include analogy, and case-based reasoning, although these may be considered special forms of the first three methods.

For additional info you may take a peek at http://thinker.iwarp.com (http://thinker.iwarp.com) which is part of http://mindmap.iwarp.com/. (http://mindmap.iwarp.com/.)

good luck on your project.  :)
Title: Re: AGI methods
Post by: Freddy on July 10, 2014, 02:18:05 pm
Topic split to allow this thread to stay on topic.

Welcome Toborman (http://aidreams.co.uk/forum/index.php?topic=6669)
Title: Re: AGI methods
Post by: ivan.moony on July 25, 2014, 11:47:16 am
I just re-thought of something after a long time :D

A site could be built on address www.synthetic-mind.com (http://www.synthetic-mind.com). The site would contain a knowledge base, like an encyclopedia, but in structured manner, subject-predicate-object and similar for texts or structured data for math, chemistry and others. Besides knowledge base navigator, it would provide deduction solver for math and other areas and inductive finder for finding new formulas in physics and generally new knowledge about world. The project would be crowdsourced like wikipedia, but it would start with existing data from public encyclopedias, giving a start data boost (http://dbpedia.org/About (http://dbpedia.org/About), http://babelnet.org/ (http://babelnet.org/), http://www.freebase.com/ (http://www.freebase.com/), http://people.mpi-inf.mpg.de/~gdemelo/yagosumo/ (http://people.mpi-inf.mpg.de/~gdemelo/yagosumo/)).

So, people would read data and solve math and other problems, but when their computers are idle, it could be used for some inductive gentic algorithm to find new rules in the Universe, while analyzing knowledge base. God knows what new rules would be found, maybe some that humans could never thought about. Users could also choose at which area they want to invest their processor time. To avoid false data, users that want to enter new data would have a ranking board where they would be publicly ranked or finally eliminated from knowledge base.
Title: Re: AGI methods
Post by: Don Patrick on July 25, 2014, 03:52:47 pm
I know two similar projects. One is project Cyc, where a small group of scientists has been collecting structured common knowledge for the past 30 years and offer it as a database for AI projects, along with an inference engine. Unfortunatly, implementation of this knowledge database and its structure leaves something to be desired.
The other project is NELL, the Never Ending Language Learner, which extracts facts from texts and websites, and relies on the online crowd to affirm or correct what it learns.
Title: Re: AGI methods
Post by: ivan.moony on July 25, 2014, 05:58:36 pm
Those both projects do not have online problem solver and without that it is hard to get publicity. With math, physics and chemistry solver based on deduction we could get hits from twitter's and facebook's school and university pages. And I have strong indicies that "www.synthetic-mind.com" could hold programs and web pages beside data, making it a base for web 3.0.

So at the end it would be:

All of this reminds me heavily of web 3.0 buzzword and I think it is reachable through free advertisement on twitter and facebook for the start. Especially if we make synthetic mind opensource for installing on whatever server.

Yeah I know, now I fly so hi, maybe I'll fall so low  :P
Title: Re: AGI methods
Post by: Freddy on July 25, 2014, 06:43:34 pm
Crowd sourced Encyclopaedia - you're probably going to get a few people telling you to use the Wikipedia API...

Ambitious project, but cool nonetheless  :)
Title: Re: AGI methods
Post by: Art on July 26, 2014, 12:18:39 am
Or perhaps you could find a way to link into the NSA. They have collected and compiled information on everything and everyone! O0
Title: Re: AGI methods
Post by: ivan.moony on July 26, 2014, 12:40:26 am
I don't need NSA when I can see you all through this hole in the screen: o
Hey, you! I saw that!
And you! Put that finger out of your nose!
And you girl! Wear something on, there are children over here!
 ;D
Title: Re: AGI methods
Post by: ivan.moony on November 27, 2014, 06:03:35 pm
I just thought of some direction of using Synth that could inspire someone:

What if a site would be built that would allow learning small fragments of english texts on demand (less than 1000 lines - like Don Patric's solution)? people could load texts and then ask questions about the matter. Simple answers could be given right away, but complex answers with a lot of proofing consumption could be processed in a larger amount of given processor time. And if a lot of machines would be running on the main web page, idle processor times could be shared to get answers for some complex questions.

People could vote where do they want to invest the most of their processor time. And if some answers are not yet achievable because of lack of data, triggers could be set up that would pop up "question solved!" window when answers get available (when enough data is collected from other users).

I have a good feeling about this one. Intelligent crowdsourced machines might visit us in some near future (while we are still alive). "IQ" could be a good name for such artificial assistant.
Title: Re: AGI methods
Post by: ivan.moony on January 01, 2015, 07:29:09 pm
The idea is to have a programming language which behaves naturally in terms of cognitive process. If we have such a language, it would be an easy process to convert real world data to in-memory representation. It means that IQ would map data first from textual input stream to grammar structure and then from grammar structure to intrenal world representation. I think it is all about grouping different object into higher order constructs: words to sentences, sentences to theories, theories to Universe representation. The same goes for vision: different shapes are grouped together forming cognitive representation of wholes. All of this should be easily represented by language constructs.

I further simplified Synth's grammar to accept only: variable types, variable values and value dynamics. Complex structures like inference should be easily defined with just these three constructs which can represent any closed system in the Universe, including inference mechanism.
Title: Re: AGI methods
Post by: ivan.moony on January 02, 2015, 06:57:52 pm
there is some technology I have in mind for a long time now. It is about classification of things in memory.

this is the basic idea: presentation (https://docs.google.com/presentation/d/1nw7UiYpjvbZv1hOuGiWjxklVKXA3zrGc168XQQ1Mwi0/edit?usp=sharing)

i guess this could be a starting point for learning new facts about the Universe.
Title: Re: AGI methods
Post by: 8pla.net on January 03, 2015, 12:25:19 am
Is your new technology like database tables, or is it different?
Title: Re: AGI methods
Post by: ivan.moony on January 03, 2015, 12:56:46 am
it can be used as classic relational database tables, like having all tables in one big table.

But I'm more interested in classification object aspect. A column is classification base, a row field value is specific class the row belongs to and when a row belongs to some class it can be expanded by another columns of that class.

I imagine having objects in the Universe classified this way all in one big table. I even imagine predicates from classic logic being fitted in this like table which would bring typed predicates whose types would be defined by table header.
Title: Re: AGI methods
Post by: 8pla.net on January 03, 2015, 01:41:50 am
For the sake of friendly discussion, isn't one table, non-relational?   How are empty columns, in one big table, handled?
Title: Re: AGI methods
Post by: ivan.moony on January 03, 2015, 01:57:10 am
Well, you can define multiple tables in one big table. In noted example in presentation there can be derived three tables from one, namely: scape type->GroundScape, scape type->SeaScape and scape type->SkyScape. If you think further, another parallel extraction can be made - to tables: engine->Otto, engine->Electric and engine->Jet and if engine is having specific value, it can be further expanded by another columns specific to engine type. You can even nest these sub-classifications, thus forming a table tree. So, basically, sub-tables aren't nothing more than a subset of rows of big table and each sub-table have rows inherited from parent table and rows expanded specifically for sub-table.

Empty columns? I don't understand...
Title: Re: AGI methods
Post by: 8pla.net on January 03, 2015, 02:45:48 am
For example, an amphibious car may have an empty column (in one big table) for type->SkyScape.
Title: Re: AGI methods
Post by: ivan.moony on January 03, 2015, 10:46:43 am
scape type is a column that can hold either SkyScape, GroundScape or SeaScape as a value, but not all three or two. Each row can have its own extra columns, depending of its values, so there is no need for empty columns.
Title: Re: AGI methods
Post by: 8pla.net on January 04, 2015, 07:19:50 pm
Are these scape types in fifth normal form?
Title: Re: AGI methods
Post by: ivan.moony on January 04, 2015, 08:26:22 pm
If you're asking if scape types are redundant, the answer is no. SkyScape, GroundScape and SeaScape are key values which, when assigned to a record, open possibility to fill in extra columns like max altitude, contact type and hydroplaning.

8pla.net ,you seem interested in database design, so I'll reveal you some background. A textual header for noted table would be this one:

Code
Vehicle (
    Name (@String),
    Engine (Otto | Electric | Jet),
    Use (Transport | Tourism | Cargo),
    ScapeType (
        GroundScape (ContactType (Magnet | Wheels)) |
        SeaScape (Hydroplaning (@Boolean)) |
        SkyScape (MaxAltitude (@Number)
    )
)

and specific record (noted textually) could be this one:

Code
@Vehicle {
    @Name {"Bus"},
    @Engine {@Otto},
    @Use {@Transport},
    @ScapeType {
        @GroundScape {
            @ContactType {@Wheels}
        }
    }   

or this one:

Code
@Vehicle {
    @Name {"Plane"},
    @Engine {@Jet},
    @Use {@Transport},
    @ScapeType {
        @SkyScape {
            @MaxAltitude {1500}
        }
    }
}


You can say that when you assign a symbol to a variable in a record, you can expand that variable with symbol's extra variables.


Yes, this is a new database technology that, besides AI classification, can find use in database programming. I.e. you can imagine an excel like spreadsheet based on this kind of system. I've also done some experiments (http://synth.wink.ws/ui/ui.html) with this technology. I plan to make this graphical system as a part of Synth (a programming language for AI). I hope for big global crowdsourced database of everything, hosted somewhere on the web. Synth would also have a use in general programming, so if one likes databases, Synth would be the one for her/him.
Title: Re: AGI methods
Post by: 8pla.net on January 05, 2015, 05:55:47 am
Thank you.  This discussion is even more interesting now.
Let's code in Synth.  Is this sample source code correct ?

Code
@Member {
    @Name {"Alice"},
    @PhoneType {
        @Telephone {
            @Number {555-1000}
        }
        @Fax {
            @Number {555-2000}
        }
    }

@Member {
    @Name {"Betty"},
    @PhoneType {
        @Telephone {
            @Number {555-3000}
        }
        @Fax {
            @Number {555-4000}
        }
    }

@Member {
    @Name {"Catherine"},
    @PhoneType {
        @Telephone {
            @Number {555-5000}
        }
        @Fax {
            @Number {555-6000}
        }
    }
Title: Re: AGI methods
Post by: ivan.moony on January 05, 2015, 09:25:19 am

To code in Synth? Hehe, you miss variable types as Synth is ought to be a typed language :)

Thank you for being interested in this project in such a conceptual stage of development. If you would like to learn more about Synth, I invite you to take look at updated Synth Specification Overview (https://docs.google.com/document/d/1K2NJchVpvBzKBMqHCmhzCUjZnKUGKs3Jlk2io4Y5eYw/edit?usp=sharing) (I composed the version 0.2 this morning) for core language description.

As for an AI use, you can throw a look at a little bit outdated, but interesting document (https://docs.google.com/document/d/1Q8AxXFFgvGb9cHbpyFCUIzz1IDBJu2Wc1q2yUuVdGEE/edit?usp=sharing) (version 0.1) already published in this thread (you have to re-picture curly braces with round ones and square braces with curly braces to synchronize reading with this old document). The change in 0.2 conceptual version is that set holding variables and inference mechanism would be implemented not in core system, but rather as a regular Synth variable with its specific dynamic behavior. This depicts Synth's ability to hold any Universe's structure like inference mechanism. Nevertheless, the behavior of inference mechanism will not change. The main argument of using Synth in AI is its easily imagined analogousness with structures found in the Universe.


I'm still here thinking about end-implementation of autonomous AI machine, as I don't want to miss something important out of Synth. I'm dealing with analyzing and automatic recognizing of different structures in input stream like an English language is read from left to right, but Arabic is read from right to left. And encrypted text is being read through some special lenses... Still a lot of unresolved things...
Title: Re: AGI methods
Post by: DemonRaven on January 19, 2015, 02:16:30 am
good luck on your project. 
Title: Re: AGI methods
Post by: ivan.moony on January 19, 2015, 05:08:59 am
thx, DemonRaven :)
Title: Re: AGI methods
Post by: ivan.moony on January 24, 2015, 07:24:16 pm
Edit:
I'm moving further with my brainstorming about AGI. I want to define autonomous AGI before coding the Synth programming language to be sure I'm not forgetting something.

An AI could be bounded to text stream, having input from and output to it. To know what to output, one has to recognize input. To achieve recognition, I've decided to break memory into two parts: temporary memory and reconstructive memory. Input stream is passed to temporary memory where it is analyzed. When a pattern in temporary memory is recognized, it  copies itself to reconstructive memory. Later analyzing of AI thoughts is done by reconstructing input from reconstructive memory to temporary memory where we can spend more time on analytics.

So, how to recognize a pattern? Patterns could be compared to those already remembered in reconstructive memory. A match between analyzed fragment and a fragment stored in reconstructive memory could be seen through a function lenses applied to analyzed fragment. Specifically, a recognition would look like this:

Code
fun(A) = B

where A is a fragment from input and B is a fragment in reconstructive memory. Basic "fun" could be identity function (just plain equality comparison), but it can represent any combinatorial rearrangement constructed by some genetic algorithm (remember that genetic algorithms are used to construct new function combinations in any rearrangement, to check if the combination holds on some examplars).

I think that finding "fun" that holds on some data is the essence to AGI and it gives a basis for implementing behavior algorithm.
Title: Re: AGI methods
Post by: Ultron on January 24, 2015, 09:17:10 pm
It's a good idea to have multiple memory types. I have been thinking in that direction for applying artificial memory to an AGI program myself - specially for the NLP part, where it needs to remember certain facts (long term memory) as well as important conversations (same), and to remember previous sentences in the current conversation(short-term, temporary) in order to know what the user is referring to.

I would like to know what are your exact goals - a new NLP system or a complete AGI which can analyse many types of sensory input (sound, images etc.). With a pattern-based NLP system you would need a giant load of patterns and variations (depending on individual pattern element variations), but it would be still easily and quickly manageable with existing DB systems (as we have already discussed on GroupMe), however if you are going to also use pattern recognition for microphone and camera input (this goes further than voice recognition for the audio part) I would suggest a nested approach.

For example it sees a ball - to avoid listing through all geometric shapes then sub-shapes etc, identify general look (oval, square) then continue on the same way for as long as nest-able.

It is my belief that we personally associate every word (such as A-P-P-L-E) with as many things as possible - smell, look, feel etc.
This would in fact be the key behind artificial 'understanding'. You cannot have a program truly understand a word unless it can associate it with other things - which in most cases are abstract things hard to explain with words (words that further need to be explained and then you enter an infinite loop).
Title: Re: AGI methods
Post by: ivan.moony on January 24, 2015, 09:38:17 pm
Short term memory would be a very detailed memory while long term would be just about patterns (i.e. if short term would experience a large bitmap, say ball, then long term would store vector graphics, like three parameters for circle: position, radius and color).

Quote
I would like to know what are your exact goals - a new NLP system or a complete AGI which can analyse many types of sensory input (sound, images etc.).
I plan something like a general artificial brain core to which you can stitch any sensory input, like text stream for a start.

Quote
It is my belief that we personally associate every word (such as A-P-P-L-E) with as many things as possible - smell, look, feel etc.
I think that human mind associates different sensory experiences to artificial particles made in brain memory. Also, I think that we in a same way associate different memory particles to others. I have to find out how to do this and I have a clue in making sets of data and grouping that sets like in example of recognizing a natural language sentence as a group of elements from subject set, predicate set and object set (for a simplest example).
Title: Re: AGI methods
Post by: DemonRaven on January 25, 2015, 08:08:36 am
ok so synth is a language you are inventing I assume to be used inside of JavaScript in websites. Okay one thing i never understood was how you get the computer to acknowledge a new programming language that is meant browser based. Ruby for example you have to download some software to get the computer browser to let it show up in websites. How will it be done with yours?
Title: Re: AGI methods
Post by: ivan.moony on January 25, 2015, 01:31:36 pm
@DemonRaven
Just pure Javascript (and maybe some PHP) that parses and executes strings which contain Synth code. This is how to embed Synth code inside HTML:
Code
<script src='synth.js'></script>

<script id='source' type='text/plain'>
... synth source code goes here...
</script>

<script>
synth.run(document.getElementById('source').innerHTML);
</script>

And if you want to interpret a file from disk, you use AJAX to load it, then "synth.run" to execute it. This AJAX call can be implicitly made from Synth or Javascript code, interpreter takes care of it, you just pass a file name.

If I would use a download plugin as a Synth interpreter, things could be more tightly integrated and interpreter could be faster, but that would half down a user count. I hope that this would not be necessary.
Title: Re: AGI methods
Post by: DemonRaven on January 25, 2015, 06:36:45 pm
ok cool thank you for the info.
Title: Re: AGI methods
Post by: ivan.moony on April 06, 2015, 07:10:02 pm
I'm changing a codename of the project to "CogLog" programming language, as the name "Synth" is already taken.

I'm still intensively working out details and the new version will use new javascript 6 features to function better. I plan to use multiple line strings for embedding CogLog code into javascript sections. More important news include neater CogLog syntax and possibility to compile code blocks to Javascript through expression translation (i.e. Python or something else to native Javascript). Among the news is extensible syntax of variables, so it will be possible after extension definition to write code in extended manner:

Code
StandardJavascriptCogLogObject.Execute (`
    @JavascriptOrOtherLanguageName ~ @SomeExtension1 ~ @SomeExtension2 ... {
        ... codeblock with extended syntax ...
    }
`)

Emphasis yet will be not on custom scripting languages that can be defined in CogLog, but on cognitive capabilities that can be simulated with CogLog (i like this name). Like a language that would be ideal for programming deduction, abduction and induction applications, whatever they could be (read AGI for some users, or i.e. math solving systems for others).

Stay tuned, I'm still under the hub and things are getting better and better, as with every month. If I programmed it a year ago I wouldn't be this rich with ideas, so please be patient, I'm sure it will pay off at the end.


 :stirthepot:
Title: Re: AGI methods
Post by: Freddy on April 08, 2015, 10:05:04 pm
It's hard to come up with new names. I'm working on a new scripting language that was inspired by my work making my AIML interpreter. It's very simple. But yep names, I went through a whole list of Mythical creatures and characters before I found something.

CogLog sounds catchy and easy to remember.

I don't know if this is useful to you. I'm going to try to use it to check my script is valid. I'm using it to help create my language. It can be made to return results too, but in that respect it seems to have it's limitations. The main work of the intepreter still has to be done separately. But I think it will be useful.

http://www.codeproject.com/Articles/28294/a-Tiny-Parser-Generator-v (http://www.codeproject.com/Articles/28294/a-Tiny-Parser-Generator-v)
Title: Re: AGI methods
Post by: ivan.moony on April 08, 2015, 10:21:45 pm
@Freddy: Thanks for the link, I like it. Interesting compiler generator for .Net. A lot of users too :)
Title: Re: AGI methods
Post by: ivan.moony on May 30, 2015, 02:12:26 pm
I ported Moony Parser from Earley algorithm to recursive descent algorithm. I gained some speed up, but still have to reimplement left recursion support to follow natural priority of parsing rules. More intelligent tag support is done.

I'm looking forward for natural language processing (among other uses) tool kit one day. I'm thinking about renaming project to "Metafigure".
Title: Re: AGI methods
Post by: ivan.moony on June 10, 2015, 06:56:01 pm
Intuitive natural order of left recursion is done with the parser. Algorithm was taking the least deep left recursion it can, but now this is reimplemented to follow plain logical behavior (what is noted first, gets parsed first). Wasn't such a trivial task, but I've made it. Wasn't so important either, but I wanted to do it.

I'm still waiting for Javascript 6 multiline strings.

What's next? To fix bugs and to allow to mix parsing rules and parsing texts in the same file or string. After that things might get interesting with deduction...
Title: Re: AGI methods
Post by: ivan.moony on July 13, 2015, 05:53:28 pm
How about a natural language search engine?

A web crawler would visit sites, extract data and store it to a central server database. The server would provide a search engine that answers natural language questions like: gimme sites where I can buy an airplane ticket to North Pole for less than $500. If an answer is not found, the server could offer to mail the user when the answer becomes available.
Title: Re: AGI methods
Post by: Freddy on July 13, 2015, 06:26:59 pm
I guess this is where we are at...

https://www.google.co.uk/search?q=gimme+sites+where+I+can+buy+an+airplane+ticket+to+North+Pole+for+less+than+%24500&rlz=1C1ASUC_enGB647GB647&oq=gimme+sites+where+I+can+buy+an+airplane+ticket+to+North+Pole+for+less+than+%24500&aqs=chrome..69i57&sourceid=chrome&es_sm=93&ie=UTF-8 (https://www.google.co.uk/search?q=gimme+sites+where+I+can+buy+an+airplane+ticket+to+North+Pole+for+less+than+%24500&rlz=1C1ASUC_enGB647GB647&oq=gimme+sites+where+I+can+buy+an+airplane+ticket+to+North+Pole+for+less+than+%24500&aqs=chrome..69i57&sourceid=chrome&es_sm=93&ie=UTF-8)
Title: Re: AGI methods
Post by: ivan.moony on July 13, 2015, 06:58:59 pm
Not bad for today (in fact very good), but people are talking about web 3.0 (semantic web) that is aware of specific tabular or otherwise structured data. There are two possible paths:

1. to introduce new standards for storing web pages and data that would be accepted by majority of independent www sites
2. to analyze existing web sites through natural language processing.

I'm impressed by possibility of having a big knowledge base (or an index) of everything that is available on web. That way a new knowledge could be concluded or extracted by analyzing existing one. A good start could be importing Yago-Sumo or dbpedia knowledge base, extending it later by custom web-crawler data. This web crawling even could be done from client side (when searching something, crawl one other or several other uncrawled sites). Result indexes (structured knowledge) would be then submitted to central server, graduately growing out global its index. It would be real distributed computing, this client side index composing and there is a lot of idle time on users' machines.

Be patient, I'm building universal knowledge base file format that could serve as index for any knowledge item, including data and code.
Title: Re: AGI methods
Post by: infurl on July 20, 2015, 12:14:46 am
Have you considered using the Tomita parsing algorithm? It was invented in 1985 (i.e. quite recently in computer science terms) and is many orders of magnitude faster than the Earley parsing algorithm for "interesting" input. It can handle unrestricted context free grammars and ambiguity very easily making it suitable for parsing natural language efficiently. There are numerous references and examples on the web.

By the way, if you are finding that recursive descent parsing is faster than the Earley algorithm you are probably doing something wrong. However you can get a substantial speed boost by using function memoization which will turn a recursive descent parser into a pseudo chart parser like Earley or Tomita and it's fairly simple to do.
Title: Re: AGI methods
Post by: ivan.moony on July 20, 2015, 10:29:25 am
Infurl, thank you for your insight. Tomita is too complicated for me to understand it and I'm chasing some alternatives. If I didn't have other options, I'd probably use Tomita, but I've found out something simpler.

I'm experimenting with recursive descent algorithm with memoization. So far it turns to be 10x faster than Earley version. I also added support for direct and indirect left recursion (with some adjusted memoization technique (http://www.vpri.org/pdf/tr2007002_packrat.pdf)) and it works cool. I can easily switch between CFG mode and PEG mode (PEG is 4x faster than CFG), I'll probably add some keyword for user to choose by which mode she/he will want to parse which fragments of grammar. I'm also adding predicates to parsing algorithm, so you can parse e.g. a word (just letters, ended by a space) and then check immediately a database if the word is there (modified, or not by some grammar rules; I need this for natural language parsing). I also have an option for handling ambiguity in CFG mode, but I'm still not sure what to do with it.
Title: Re: AGI methods
Post by: ivan.moony on July 22, 2015, 01:04:55 pm
I just thought of something. A starting knowledge base would be a few megabytes large, to be a fast solution when a smart bot is booting. When a user wants to talk about something that is not in knowledge base, a smart bot could search Wikipedia for relevant theme, parse it by NLP and upload the new knowledge to talk to user.
Title: Re: AGI methods
Post by: infurl on July 22, 2015, 10:00:45 pm
When a user wants to talk about something that is not in knowledge base, a smart bot could search Wikipedia for relevant theme, parse it by NLP and upload the new knowledge to talk to user.

Yesterday I came across this library which is designed to assist with tasks like that.

http://blog.dlib.net/2014/07/mitie-v02-released-now-includes-python.html (http://blog.dlib.net/2014/07/mitie-v02-released-now-includes-python.html)
Title: Re: AGI methods
Post by: ivan.moony on August 03, 2015, 01:26:07 pm
Drifting a plan a little bit further:

So a knowledge base (KB) of Web and Wikipedia (as a very good information source) would be maintained on central server. Users could browse KB in a tree-like self expanding texts, where sources of informations would be offered to navigate to. KB would be presented in readable way, summing up all knowledge previously collected and when a user wants to visit source site, she/he can navigate to it. Like a Google search, but more intelligent.

So, how to obtain KB? When users are browsing the web, KB is updated with new informations from sites they visit. This could be done by iframe inside HTML where sites would be shown up. Around iframe would be navigation buttons, bookmarks tabs and KB extracts for navigating web. Primary source would be Wikipedia with its outer links. If user can't find what she/he searches for, she/he can open any standard search engine inside iframe and there goes again NLP parsing and indexing of visited sites.

And now comes the interesting part: Users would choose where to invest their processor time through webworkers (multitasking implementation of HTML scripting). For example, user says: I want to dedicate one thread from my processor to discovery of new drugs for curing cancer. And the machine induces, abduces and deduces related unknown knowledge from facts already stored in KB. When it finds out interesting discovery, it alerts user and new knowledge extension becomes a part of shared KB. I know where I want to invest my processor time: for finding artificial food (I guess it is a kind of chemistry) :)

Yeah, that could be a life, while you are playing around the web, your computer thinks and improves the science world. If this works out, I wouldn't need a behavior algorithm for human like AI, because all I need is a subset of AI for improving science world. Anyway, I'm kind of afraid of autonomous machines, it would be a great responsibility to build one.

A lot of work to do in the future and I like the current plan.