def initsuggest(source): import suggest userids = [] repoids = [] for user, repo in getdata(): userids.append(int(user)) repoids.append(int(repo)) nusers = max(userids) nitems = max(repoids) ntrans = len(userids) users = suggest.intArray(ntrans) items = suggest.intArray(ntrans) for n, k in enumerate(userids): users[n] = k for n, k in enumerate(repoids): items[n] = k rhandle = suggest.SUGGEST_Init(nusers, nitems, ntrans, users, items, 2, 1, .4) baskets = {} for user, repo in getdata(): baskets.setdefault(int(user), set()).add(int(repo)) return (rhandle, baskets)
def test_suggest(): trans = 3 groups = suggest.intArray(3) photos = suggest.intArray(3) photos[0] = 0 groups[0] = 0 photos[1] = 1 groups[1] = 1 photos[2] = 1 groups[2] = 0 nphotos = 2 ngroups = 2 print 'trans',trans print 'ngroups',ngroups print 'nphotos',nphotos print 'initing' rhandle = suggest.SUGGEST_Init(nphotos,ngroups,trans,photos,groups,2,1,0.4) print 'inited' results = suggest.intArray(1) pgroups = suggest.intArray(1) pgroups[0] = 0 print suggest.SUGGEST_TopN(rhandle, 1, pgroups, 1, results) suggest.SUGGEST_Clean(rhandle) print 'done'
items[n] = k rhandle = suggest.SUGGEST_Init(nusers, nitems, ntrans, users, items, 2, 1, .4) baskets = {} for user, repo in getdata(): baskets.setdefault(int(user), set()).add(int(repo)) return (rhandle, baskets) def recsuggest((rhandle, baskets), userid): userid = int(userid) pgroups = userbasket(baskets, userid) if not pgroups: return [] npgroups = len(baskets[userid]) results = suggest.intArray(10) n = suggest.SUGGEST_TopN(rhandle, npgroups, pgroups, 10, results) out = [] for i in range(n): out.append(results[i]) return [str(x) for x in out] def harness(init, recommend): data = getdata() handle = init(data) fh = file('results2.txt', 'w') for line in file('download/test.txt'): try: recs = recommend(handle, line.strip()) except KeyError: recs = []