One of the tools OpenCog has needed for a long time, is something that can relatively quickly scan an Atomspace and find the interesting patterns in it. “Interesting” may be defined in a variety of ways, such as “frequent”, or “surprising” (as measured by information theory), etc. This capability has often been referred to in OpenCog documents as “pattern mining.”
Jade O’Neill (fka Jared Wigmore) implemented python software doing this for the Atomspace some time ago — Fishgram, the Frequent Interesting SubHyperGRaph Miner. Fishgram has been used to recognize patterns in Atomspaces resultant from OpenCog’s “perception” of a Unity3D based virtual world.
Now, a wiki page has been created, covering some details of Fishgram — including pseudocode, an explanation of the algorithm, and some indication of which software classes carry out which parts of the algorithm…
Plenty more work needs to be done with Fishgram, yet, it does
currently work and can extract some interesting patterns from
Some simple examples have also been done, feeding patterns output via Fishgram into PLN…
I think this is a very valuable tool that could be used for a lot of different OpenCog applications, and it would be great to see others jump onto it and help with development.
The current version of Fishgram looks for frequent subhypergraphs (i.e. frequent subhypergraph patterns, which may contain multiple variables). One thing that Jade and I have talked about a lot is extending Fishgram to search for “surprising” subhypergraphs, where surprisingness may be measured using interaction information or synergy, as described in these papers:
Those who like logic may also enjoy this paper, which connects interaction information with the logic of questions:
It seems that a good implementation of a good measure of surprisingness will be a valuable thing to have in OpenCog generally, not just in Fishgram. If we want “novelty seeking” to be one of the top-level goals of a young AGI or proto-AGI system (which I think we do), then having a nice way to measure novelty seems like a good things — and the interaction information and the informational synergy, as described in these papers, seem a good approach.
Onward and upward 😉