I installed a locally running instance of the ConceptNet5 knowledgebase in an elasticsearch server. I used this data to implement the so-called "Analogietechnik" (a creativity technique to solve a problem from the perspective of another system) as an algorithm.

The technique works as follows:

  1. Choose a feature of a system
  2. Find systems that have this feature also
  3. Solve the problem from the perspective of these other systems
  4. Apply the found solutions to the issue

As an example, here is the problem of marketing a shopping mall: A Shopping mall has many rooms and floors (1). A museum has also many rooms and floors (2). How are museums marketed? They present many pictures or sculptures (3). We could use our rooms and floors to decorate them with pictures and sculptures (4).

Of course, the idea to implement that as an artificially intelligent algorithm was not far. However, I feel a little bit overwhelmed by the number of methods that exist out there. Neural networks, Bayesian inference, and so on. My current experience doesn't go further than simple machine learning, like k-means clustering.

Do you think it would be very hard to find a solution to this problem?

I'm thinking of a console application, where you can enter a conceptualized problem like "methods for creative writing", for example, and it uses the above method to find possible solutions of the issue. Of course, no solution with extensive depth, more something like basic ideas derived from the knowledge database I have.

Let's take as an example a console application where someone asks "how to write a novel":

  1. It should find out first that the system all is about is in the term "novel". To find a feature of that system, it just searches concepts containing that term: it finds out "Novel is a story" So that's a feature.

  2. Which systems are also stories? A good concept it should find is e.g. "Plot is a story". (Of course only when I am selecting the search results manually)--> How to find the best concepts of a list when not knowing which fits best?

  3. It should then find out that a plot is written using a storyline: "storyline is a plot"

  4. One possible answer of the AI would in this case be: "By writing a storyline"

Do you know some helpful libraries, algorithms or other resources that might help me? I know this is not an easy thing to program, but you might agree that it's highly interesting.


Hierarchical Temporal Memory should help with this. You would have to encode the text data into SDRs. You would then have a coincidence detector. Could you get the right information back out in the way you're trying to? I think so. I'm not fully learned in HTMs yet but check out Nupic (Open source).

  • $\begingroup$ Wouldn't I need annotated test Data for this method first? Could you specify more clearly how you would use Nupic? $\endgroup$
    – hardking
    Nov 27 '16 at 18:18

Not the answer you're looking for? Browse other questions tagged or ask your own question.