예제 #1
0
 def partitionUsers(expertModels, expertise):
     for userData in UsersData._usersData:
         pValues = []
         for expertModel in expertModels:
             userLocation = (userData[2], userData[3])
             isExpert = userData[4] == expertise
             p = Utility.getModelValue(expertModel, userLocation, isExpert)
             pValues.append((p, expertModel['regionName']))
         maxPRegion = max(pValues, key = itemgetter(0))[1]
         if len(userData) == 5:
             userData.append(maxPRegion)
         else:
             userData[5] = maxPRegion
     UsersData._isPartitioned = True
예제 #2
0
 def getRankedExperts(self, expertise, userLocation):
     if len(self._expertModelsDict) == 0:
         self._modelGenerator.loadCachedModels()
     self._expertModelsDict = self._modelGenerator.getExpertImpactModels()[expertise]
         
     expertImpactList = []
     for expert in self._expertModelsDict:
         models = self._expertModelsDict[expert]
         modelValue = 0
         prevModelValue = 0
         for model in models:
             modelValue = Utility.getModelValue(model, userLocation, True)
             modelValue = max(modelValue, prevModelValue)
             prevModelValue = modelValue
         expertImpactList.append((modelValue, expert))
     rankedExpertsData = sorted(expertImpactList, key = itemgetter(0), reverse = True)
     rankedExperts = []
     print rankedExpertsData
     for rankedExpertData in rankedExpertsData:
         rankedExperts.append(rankedExpertData[1])
     return rankedExperts