GSoC/GCI Archive
Google Summer of Code 2015

The OpenCog Foundation

License: Affero GNU Public License

Web Page:

Mailing List:!forum/opencog

We're creating an open source framework for Artificial General Intelligence, intended to one day express general intelligence at the human level and beyond. That is, we're undertaking a serious effort to build a thinking machine. We've developed a detailed plan, possess the ability to execute it, and we're proceeding with the hard work step-by-step.

As compared to most academic and industry AI research, the OpenCog project has a very different focus. We are not centrally concerned with building more accurate classification algorithms, or more efficient computer vision systems, or better language processing or information retrieval algorithms, etc. Neither are we centrally concerned with building a program that performs only one specific task like play chess, diagnose diseases, answer trivia questions, or drive a car. We are concerned with generic intelligence and the inter-related cognitive processes it entails.

OpenCog is a moderate-sized and active project with: a team in Hong Kong working on NLP and robotics; an OpenCog lab in Addis Ababa, Ethiopia, with a staff of 10 developers; a distributed group of developers in the Americas, Europe, Asia, Africa, the Middle East, and Australasia, working for various employers and applying OpenCog on commercial and government projects; and many fantastic volunteer developers.   Our vision is a huge one and we are eagerly recruiting new developers! 

The core functionality is in a mostly C++ codebase hosted on Github. Some portions are coded in python and Scheme.

The OpenCog Foundation is a nonprofit organization, incorporated in the US state of Delaware. OCF is a democratically run organization, with a Board elected by its membership, where the latter is defined as individuals who have substantially contributed to the OpenCog project, and have asked to become formal members and been approved by the Board.


  • Conceptual Blending Implement of 'Conceptual Blending' algorithm in OpenCog Framework. A Conceptual Blending is an algorithm that makes new concept by composing information, which were extracted from different knowledge, or experience.
  • Distributed version of the Hypergraph Pattern Miner The current Pattern Miner I developed last year in Opencog is not distributed. In a lot of practical cases, the data amount for processing is huge, which requires the Pattern Miner can work in a distributed way. I am willing to implement this. There are two options upon implementation: 1. Distribution via network; 2. Distribution via sub-result files merging. Both options have different difficulties that I will discuss in the detailed content of this proposal.
  • Embodiment in the Minecraft Virtual World I propose to build a robust, feature-rich interface between OpenCog and Minecraft, using ROS. The major components will be a Minecraft controller, a sensorimotor translator node in ROS, and a model of the world. Functionality will include pathfinding, the ability to construct and deconstruct the game world, and interaction with objects and entities. To test the interface, I will develop an AI in the AtomSpace that can process perceptual inputs and make decisions based on them.
  • Extending PLN to Modal Reasoning and Indefinite Probabilities The goal of this project is to extend the Probabilistic Logic Network framework within OpenCog to modal reasoning. This would allow autoepistemic reasoning within PLN, which would be a significant addition to the existing temporal and causal reasoning implementation. A second related part of the project involves extension of modal reasoning to indefinite probabilities within PLN framework.
  • GSoC-Building the Minecraft Interface Make the interface between Minecraft and Opencog to embody Opencog in Minecraft, And enable Opencog to do some tasks intellectually in Minecraft.
  • Haskell Bindings for OpenCog The aim of this project it to develop Haskell bindings for the main interface of the OpenCog software. Existing bindings for Python an Scheme are in use. It is possible to write Cognitive processes in these languages, and interact with the efficient C++ OpenCog core. So, we aim to have comparable Haskell bindings.
  • Implement Simplified Word Grammar in the AtomSpace A Word Grammar parser, when complete, will take each word of a sentence and draw syntactic connections between the previous ones based not only on syntactic rules, but also on other semantic, morphological, phonological and graphological information. The parser will use information from the AtomSpace, OpenCog's artificial general intelligence knowledge base. Word Grammar parsing will much more closely resemble how humans cognize language than Link Grammar parsing, which OpenCog currently uses.
  • Improving image classification performance of Python-DeSTIN Firstly I would work towards implementing a Uniform DeSTIN i.e. achieving scale, rotation and shear in-variance. Next: using variants of Conceptor Networks and implementing Convolutional DeSTIN. Finally, I will be building a image pre-processing pipeline to extract high quality features for observations. Several other ambitious experiments would be carried out as well. Overall, the performance - in terms of speed and accuracy - of Python-DeSTIN would be improved.
  • Improving MOSES Population Modeling With Particle Swarm Optimization Test another optimization algorithm in the population modeling part of MOSES, more specifically, use the Particle Swarm Optimization (PSO) for it, and then conduct tests with MOSES standard problems, compared with the current best algorithm for some problems (Hill Climbing + Crossover), documenting these resulting in the process. Inside Content there's an explanation why I chose PSO and some personal information.
  • Improving PLN inferencing on extracted semantic relationships The project constitutes developing the PLN system for the Rule Engine of opencog for the NLP-PLN-NLGen pipeline. This includes porting rules from the old implementation into the new PLN and also creating and adding new rules.The task also entails creating proper examples to verify correct implementation of the rules and creating proper documentation of all work done.
  • OpenCog Neo4j Backing Store Create a graph backing store for OpenCog using Neo4j graph database. The GraphBackingStore API will extend the current BackingStore C++ API. It can take special queries that map naturally into Cypher queries and simple manipulations of Neo4j graph traversals. The Neo4j node-relationship structures and custom indices will be optimized for AtomSpace usage and performance. neo4c C/C++ library will be improved to allow OpenCog C/C++ code to execute Neo4j Cypher queries over REST.
  • Prototype versions of the Atomspace and MOSES deme implemented in Haskell. Prototype versions of the Atomspace and MOSES deme implemented in Haskell. The aim is to create a working GenProg prototype. The prototype should be able evolve arbitrary programs involving fold.
  • Unsupervised Language Learning This project is an implementation of an approach to the unsupervised extraction of dependency grammars and syntax-to-semantic-relationship mappings from a large text of corpora. This project, if successful would enable the mining of all the information needed for a natural language comprehension system from a large, unannotated corpus. It is based on a paper written by Linas Vepstas and Benjamin Goertzel.
  • Using DeSTIN To Correctly Classify Images I am proposing a learning architecture that can perform spatio-temporal inference over sequences of images. The proposed algorithm combines heirarchical unsupervised feature learing and the DeSTIN spatio-temporal inference architecture. The proposed approach uses AutoEncoders learn spatial features and an LSTM RNN for capturing the temporal aspect of the basic belief update of DeSTIN.