ai-406Đọc toàn bộ đề miễn phí

Top-k tài liệu theo tích vô hướng

Bước xếp hạng đầu tiên của một hệ truy hồi dense là tính điểm giữa vector câu hỏi và

AICơ bản12 phút

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ủ đề

numpyretrievalrankingentry-ramp

Kiến thức tiên quyết: python-basics, numpy-vector-operations.

Nội dung đề bài

Mô tả bài toán

Bước xếp hạng đầu tiên của một hệ truy hồi dense là tính điểm giữa vector câu hỏi và từng vector tài liệu, rồi lấy ra k tài liệu điểm cao nhất. Chỉ số tài liệu được giữ lại chính là đầu vào cho bước đọc lại (reranking) về sau.

Yêu cầu

Viết hàm top_k_indices(query, docs, k) trả về danh sách chỉ số của k tài liệu có tích vô hướng với query lớn nhất.

Quy ước nộp bài

Nộp hàm top_k_indices trong solution.py. Hệ thống gọi hàm trực tiếp, so danh sách chỉ số với kỳ vọng; không đọc stdin và không in ra stdout.

Input

  • query: vector câu hỏi, dãy số độ dài d.
  • docs: danh sách tài liệu, mỗi tài liệu là dãy số độ dài d.
  • k: số tài liệu cần lấy, số nguyên dương.

Output

Danh sách chỉ số tài liệu được sắp xếp tăng dần theo chỉ số. Nếu k lớn hơn số tài liệu thì trả về tất cả chỉ số. Khi điểm bằng nhau, ưu tiên chỉ số nhỏ hơn.

Ràng buộc

  • Mọi tài liệu phải cùng số chiều với query; ném ValueError nếu khác.
  • k phải là số nguyên dương; ném ValueError khi k <= 0.
  • Chỉ dùng NumPy cho phép nhân ma trận, không viết vòng lặp Python cộng từng cặp.

Ví dụ 1

Input

top_k_indices(query=[1, 0], docs=[[1, 0], [0, 1], [2, 0], [0, 3]], k=2)

Output

[0, 2]

Ví dụ 2

Input

top_k_indices(query=[1, 0], docs=[[1, 0], [0, 1], [2, 0], [0, 3]], k=4)

Output

[0, 1, 2, 3]

Giải thích

Với query = [1, 0] và docs = [[1, 0], [0, 1], [2, 0], [0, 3]], điểm lần lượt là [1, 0, 2, 0]; với k = 2 hai chỉ số cao nhất là 2 và 0, nên kết quả là [0, 2].

3 cấp độ gợi ýMở dần khi bạn thật sự cần hỗ trợ.
Phân tích lời giảiGiải thích hướng tư duy và thuật toán.
Code tham khảoDùng để đối chiếu sau khi tự làm.

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.

Nhóm Zalo