Пример #1
0
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)
Пример #2
0
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'    
Пример #3
0
        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 = []