#!/usr/bin/env python3 ####################################################################### # # # Author: Garry Morrison # email: garry@semantic-db.org # Date: 2015-05-10 # Update: # Copyright: closed for now # # Usage: # ####################################################################### import sys from the_semantic_db_code import * from the_semantic_db_functions import * from the_semantic_db_processor import * C = context_list("average categorize") C.learn("op","x","a") C.learn("op","y","b") C.learn("op","z","c") C.learn("op","u",ket("a",0.7)) def average_categorize(context,op,t,phi,ave): one = context.relevant_kets(op) print("one:",one) out_list = [] for x in one: print("x:",x) r = x.apply_op(context,op) print("r:",r) best_k = -1 best_simm = 0 for k,sp in enumerate(out_list): similarity = silent_simm(r,sp) if similarity > best_simm: best_k = k best_simm = similarity print("best k:",best_k) print("best simm:",best_simm) if best_k == -1 or best_simm < t: out_list.append(r) else: k = best_k # out_list[k] += r out_list[k] += r.multiply(best_simm) # reweight based on result of simm. for k,sp in enumerate(out_list): print("sp:",sp) context.learn(ave,phi + ": " + str(k+1),sp) return ket("average categorize") average_categorize(C,"op",0.6,"phi","ave") print(C.dump_universe()) #sys.exit(0) print("-----------------------------------------------------") # let's try for a bigger example! C = context_list("average categorize letters") load_sw(C,"sw-examples/H-I-pat-rec.sw") print(C.dump_universe()) def pixels_to_string(context,one): data = one.apply_op(context,"pixels") I = 5 J = 7 string = "" for j in range(1,J+1): for i in range(1,I+1): elt = ket("pixel: " + str(j) + ": " + str(i)) coeff = data.find_value(elt) c = str(int(coeff)) if coeff == 0: c = ' ' string += c + ' ' string += "\n" return string.rstrip('\n') #print(pixels_to_string(C,ket("letter: H"))) # create our averages: # average_categorize(C,"pixels",0.65,"phi","ave") average_categorize(C,"pixels",0.65,"phi","pixels") # save our pixels: save_sw(C,"sw-examples/saved-average-categorize-pixels.sw") # now try our averages: for x in C.relevant_kets("pixels"): print("x:",x) print(pixels_to_string(C,x)) print() sys.exit(0) print("-----------------------------------------------------") # let's try for a bigger example! C = context_list("average categorize webpages") #load_sw(C,"sw-examples/improved-fragment-webpages.sw") load_sw(C,"sw-examples/saved-label-training-data-for-website-fragments.sw") average_categorize(C,"training-hash-4B",0.7,"phi","average-cat") print(C.dump_universe()) save_sw(C,"sw-examples/saved-average-categorize.sw")