Spaces:
Sleeping
Sleeping
| def min_max_norm(scores): | |
| if not scores: return [] | |
| mn, mx = min(scores), max(scores) | |
| return [(s - mn) / (mx - mn) if mx > mn else 0.0 for s in scores] | |
| def fuse_results(sparse_res, dense_res, alpha): | |
| s_dict = dict(zip([r[0] for r in sparse_res], min_max_norm([r[1] for r in sparse_res]))) | |
| d_dict = dict(zip([r[0] for r in dense_res], min_max_norm([r[1] for r in dense_res]))) | |
| fused = {doc_i: alpha * s_dict.get(doc_i, 0.0) + (1 - alpha) * d_dict.get(doc_i, 0.0) | |
| for doc_i in set(s_dict.keys()) | set(d_dict.keys())} | |
| return sorted(fused.items(), key=lambda x: x[1], reverse=True) |