(retrieved: string[], relevant: Set<string>, k: number)
| 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)); |
| 49 | const idealRelevances = Array.from({ length: Math.min(k, relevant.size) }, () => true); |
| 50 | const idealDCG = dcg(idealRelevances, k); |
| 51 | if (idealDCG === 0) return 0; |
| 52 | return dcg(actualRelevances, k) / idealDCG; |
| 53 | } |
| 54 | |
| 55 | function recall(retrieved: string[], relevant: Set<string>, k: number): number { |
| 56 | if (relevant.size === 0) return 1; |
no test coverage detected