MRR - nghịch đảo hạng trung bình
MRR đánh giá chất lượng xếp hạng bằng cách nhìn vào vị trí của tài liệu liên quan đầu
Tiến độ của tôi ở bài này
Điểm và code bạn nộp được lưu vào tài khoản sau khi chấm bài.
Đang tải điểm của bạn…
Kiến thức và chủ đề
Kiến thức tiên quyết: python-basics, python-lists.
Nội dung đề bài
Mô tả bài toán
MRR đánh giá chất lượng xếp hạng bằng cách nhìn vào vị trí của tài liệu liên quan đầu tiên trong mỗi danh sách. Tài liệu liên quan càng xuất hiện sớm thì điểm nghịch đảo hạng càng cao; nếu không có tài liệu liên quan nào thì đóng góp bằng 0.
Yêu cầu
Viết hàm mean_reciprocal_rank(rankings, relevant) trả về nghịch đảo hạng trung bình của một loạt câu hỏi.
Quy ước nộp bài
Nộp hàm mean_reciprocal_rank trong solution.py. Hệ thống gọi hàm trực tiếp, so giá trị với sai số 1e-6; không đọc stdin và không in ra stdout.
Input
- rankings: danh sách các bảng xếp hạng, mỗi bảng là danh sách mã tài liệu theo thứ tự.
- relevant: danh sách các tập tài liệu liên quan, phần tử thứ i ứng với câu hỏi i.
Output
Một số thực bằng trung bình của 1 / hạng với hạng là vị trí (tính từ 1) của tài liệu liên quan đầu tiên; nếu một bảng không có tài liệu liên quan thì đóng góp 0.
Ràng buộc
- rankings không được rỗng; ném ValueError.
- relevant phải cùng độ dài với rankings; ném ValueError nếu khác.
Ví dụ 1
Input
mean_reciprocal_rank(rankings=[["a", "b", "c"], ["b", "a", "c"]], relevant=[["b"], ["c"]])
Output
0.4166666666666667
Ví dụ 2
Input
mean_reciprocal_rank(rankings=[["x", "y"]], relevant=[["x"]])
Output
1.0
Giải thích
Với rankings = [["a", "b", "c"], ["b", "a", "c"]] và relevant = [["b"], ["c"]], câu hỏi đầu có b ở hạng 2 nên được 1/2, câu hỏi sau có c ở hạng 3 nên được 1/3, trung bình là 0.4166666666666667.
Gợi ý và lời giải chỉ mở sau khi bạn bấm Nộp bài. Giáo viên và quản trị viên mở được ngay.
Góp ý & báo lỗi bài tập
Đề bài chưa rõ, test có vấn đề hay bạn có ý tưởng giúp bài tốt hơn? Gửi cho đội ngũ AI Empire nhé — mỗi góp ý đều được đọc.
