(relevances: boolean[], k: number)
| 37 | } |
| 38 | |
| 39 | function dcg(relevances: boolean[], k: number): number { |
| 40 | let sum = 0; |
| 41 | for (let i = 0; i < Math.min(k, relevances.length); i++) { |
| 42 | sum += (relevances[i] ? 1 : 0) / Math.log2(i + 2); |
| 43 | } |
| 44 | return sum; |
| 45 | } |
| 46 | |
| 47 | function ndcg(retrieved: string[], relevant: Set<string>, k: number): number { |
| 48 | const actualRelevances = retrieved.slice(0, k).map(id => relevant.has(id)); |