Exemplo n.º 1
0
def processAll(request):
    start_time = time.clock()
    similarityValue = {}
    
    response = ""
    for user1 in User.objects.select_related().all():
        similarityValue[user1.userId] = {}
        for user2 in User.objects.select_related().exclude(userId=user1.userId):
             
            #if Similarity.objects.extra(where=["similarityUser1_id IN (%s, %s) AND similarityUser2_id IN (%s, %s)"], params=[user1.userId,user2.userId,user1.userId,user2.userId]).exists():
            if user1.userId in similarityValue:
                if user2.userId in similarityValue[user1.userId]:
                    continue
            
            if user2.userId in similarityValue:
                if user1.userId in similarityValue[user2.userId]:
                    continue
            
            sp = SimilarityProcess()
            simValue = sp.process(user1, user2, 1)
            
            response += user1.userName + " & " + user2.userName + " simValue : " + str(simValue) + "<br />" 
            similarityValue[user1.userId][user2.userId] = simValue
            
            ''' insert similarity value to db
            sim = Similarity()
            sim.similarityUser1 = user1
            sim.similarityUser2 = user2
            sim.similarityValue = simValue
            sim.save()
            #'''

    response += str(time.clock() - start_time) + " seconds<br />"
    return HttpResponse(response)
Exemplo n.º 2
0
def processUser(request):
    if request.method == "POST" :
        userId = str(request.POST["userId"])
        sp = SimilarityProcess()
        sp.processUser(userId)
        return HttpResponse("")
    else :
        return HttpResponse("what?")
Exemplo n.º 3
0
def listReviews(request):
    if request.method == "POST" :
        user = User()
        user.userId = int(request.POST["userId"])
        
        place = Place()
        place.placeId = int(request.POST["placeId"])
        
        typeId = int(request.POST["typeId"])
        
        data = []       
        for r in Review.objects.filter(reviewPlace_id=place).exclude(reviewUser_id=user) :
            dict = {}
            dict['userId'] = r.reviewUser.userId
            dict['userAlias'] = r.reviewUser.userAlias
            dict['reviewPointPrice'] = r.reviewPointPrice
            dict['reviewPointService'] = r.reviewPointService
            dict['reviewPointLocation'] = r.reviewPointLocation
            dict['reviewPointCondition'] = r.reviewPointCondition
            dict['reviewPointComfort'] = r.reviewPointComfort
            dict['reviewText'] = r.reviewText
            average = float(r.reviewPointPrice+r.reviewPointService+r.reviewPointLocation+r.reviewPointCondition+r.reviewPointComfort) / 5
            dict['averagePoint'] = average
            sp = SimilarityProcess()
            dict['similarityValue'] = sp.process(User.objects.get(userId=user.userId), r.reviewUser, typeId)
            dict['newSimilarityValue'] = float(dict['similarityValue']) * average
            data.append(dict)
        
        #''' normalizing similarity on same place
        minV = min(data, key=lambda x:x['similarityValue'])
        maxV = max(data, key=lambda x:x['similarityValue'])
        minValue = minV['similarityValue']
        maxValue = maxV['similarityValue']    
        for dict in data:
            dict["similarityValue"] = float((dict["similarityValue"] - minValue)/(maxValue - minValue))
            dict['newSimilarityValue'] = dict['similarityValue'] * dict['averagePoint']
            dict['averagePoint'] = str(dict['averagePoint'])
            fuzzy = Fuzzy()
            dict['similarityFlag'] = str(fuzzy.process(dict['similarityValue']))
        #'''
            
        data = sorted(data, key=lambda rev: rev['newSimilarityValue'], reverse=True)
        return HttpResponse(json.dumps(data))
    else :
        return HttpResponse("what?")