-
Notifications
You must be signed in to change notification settings - Fork 35
/
Copy pathrelevances.py
31 lines (24 loc) · 888 Bytes
/
relevances.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# return a list of relevances for supplied ids, given a dictionary of ratings
# unrated items get a score of zero
def get_relevances( ratings, ids ):
r = [ 0. ] * len( ids )
for i, x in enumerate( ids ):
try:
r[i] = ratings[x] - relevance_bias
except KeyError:
pass
return r
# returns unsorted best possible relevances from the test set
# if the list is shorter than ndcg_k, it gets padded with zeros
def get_best_relevances( ratings, ids, ndcg_k ):
r = [ ratings[x] - relevance_bias for x in ids if x in ratings and ratings[x] > relevance_bias ]
if len( r ) < ndcg_k:
return r + [ 0. ] * ( ndcg_k - len( r ))
else:
return r
def get_worst_relevances( ratings, ids, ndcg_k ):
r = [ ratings[x] - relevance_bias for x in ids if x in ratings and ratings[x] < relevance_bias ]
if len( r ) < ndcg_k:
return r + [ 0. ] * ( ndcg_k - len( r ))
else:
return r