OpenCog
OpenCogPrime tutorial sessions official page on the wiki
What do I expect from this first tutorial?
- knowing if OpenCog is usable for my own project
- by providing this functionalities
- NLP for chatbot interaction
- text analysis for keywords extraction
- concept comparison for idea proximity proposition
- inferences based on my idea model (data and mechanisms)
- by being compatible with my licenses
- by being usable with a personal server (or free reliable call to the API)
- pretty general architecture and performance
- actually working today (or before or specific deadline)
- Knowing what I currently lack to use it myself
- fundamental concept
- skills
- finance
- hardware
- contact
- Knowing what are the alternatives and what are their differences
What did I learn so far?
- Sep 10, Chapters 1 & 2, Introduction & Overview of the OpenCog Prime System [ log ]
- to add log of discussion with xfred (basically that it's advance but not usuable enough for me yet ? still what is the 2nd best option, if none then I should go for this one)
- Sep 17, Chapters 3 & 4, Knowledge Representation [ log (missed!]
- seems very close to what I wanted to build before (reference to work done in Brazil and after it, provide timestamps too)
- semantic / ANN base structure
- hypergraph > graph in order to match the natural NN structure
- statistic based nature
- detection of emerging sub-network and automatic creation of "condensed node"
- (add syntax+example of such actions)
- some crawling of Wikipedia could provide evidence for the choice of Hypergraph usefulness
- could be fun to try to map a wiki (pmWiki ? ;) over it
- Sep 24, Chapters 5 & 6, The Combo Language & The OpenCog Framework
- Moshe Looks' thesis and how MOSES could help to create knowledge by forming new cognitive procedures based on a mutation in a pool of existing one and evaluation of their results. "do not discuss evolutionary epistemology - the closest I get is the distinction between learning across different representations and learning within a representation - evolutionary algorithms can do both, but I show that the former is very costly without prior knowledge." (cf email)
- Lisp was a good choice for a language but the lack of lazy evaluation a la Haskell seems to be problematic (Qi, Lisp for the 21st Century could be an option)
Possibility of using OpenCog as part of a online Mashup
- plan for an homogeneous API with eventually an online server to query (probably fee-based)? an end-user way to interface it with Yahoo!Pipes or anybody else personal website basically (having OpenCog as part of a more general mashup)
- no such project yet http://groups.google.com/group/open-semantic-map/about but shouldn't be hard to do
- a stable web API is part of an overall plan. a JSON interface to the AtomSpace has been discussed (QuantumG hacked one together a few months ago, might not be on a public branch)
- ggama's recent work provides installable binaries, boilerplate mindagents, etc.
- 1. install the pre-reqs (from BuildingOpenCog and ggama's ppa)
- 2. bzr branch lp:~gama/opencog/dynmod
- 3. bzr branch lp:~gama/opencog/samplemodules
- 4. follow the READMEs to build and install
Converting from a wiki
Objective = converting my existing wiki to an OpenCog net and *still* be able to use it as a wiki ( to be able to use a wiki page as a node and thus make actions on edit a bit more interesting that ?action=edit with a web client)
My wiki being data as text but also pseudo code or real code, pages being just nodes.
- Specify a bunch of atoms and links in JSON
- write things like {ReferenceLink {ConceptNode "asdf"} {BlahNode "qwerty"}} and have that *input into* opencog, you can do that now (Its easy ot get the data in, its a lot harder to get the data out, because you can pump a bunch of stuff in, no problem ... but figuring out what you want to get out is ... tricky)
- A single node, once created, is immutable. You can't change its contents, and you can't remove it until everything that is pointing at it has been removed.
- A single-node-per-word, but that has problems of various sorts
- A single-node-per-page would be better first I guess, I would refine after if needed I guess
- a pointing node that would more from one version to another (neary like cvs which actually does not stores the entire text of past revisions, it only stores the changes)
- tht would be a reasonable strategy
- Clean stable documented API for that?
- if I would like to transition my wiki content+struct to an OpenCog underlying structure for potential future use, which API/Doc would you recommend me to dive into?
- opencog source tree
- src/guile/README for the core syntax (by linas to provide a better introduction, trivial wrapper functions that simplify this syntax a lot)