BM25 – Thuật Toán Truy Vấn Tài Liệu Chuyên Nghiệp
BM25 (Best Match 25) là hàm xếp hạng tiêu chuẩn trong Information Retrieval, cải tiến TF-IDF bằng cách chuẩn hóa độ dài tài liệu.
Tiến độ của tôi ở bài này
Điểm đượ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: tf-idf-vectorizer.
Nội dung đề bài
Mục tiêu kiến thức
BM25 (Best Match 25) là hàm xếp hạng tiêu chuẩn trong Information Retrieval, cải tiến TF-IDF bằng cách chuẩn hóa độ dài tài liệu.
Công thức điểm BM25 cho truy vấn q và tài liệu d: BM25(q, d) = ∑t ∈ q IDF(t) · f(t,d) · (k1 + 1)f(t,d) + k1 · (1 - b + b · |d|avgdl)
Trong đó:
- f(t, d): tần suất của từ t trong tài liệu d
- |d|: độ dài tài liệu (số từ)
- avgdl: độ dài trung bình của tài liệu trong corpus
- k1 ∈ [1.2, 2.0]: tham số bão hòa tần số
- b ∈ [0, 1]: tham số chuẩn hóa độ dài (thường b = 0.75)
- IDF(t) = logN - n(t) + 0.5n(t) + 0.5 + 1
Yêu cầu
class BM25:
def __init__(self, k1=1.5, b=0.75): pass
def fit(self, corpus: list[list[str]]): pass
def get_scores(self, query: list[str]) -> list[float]: pass
def get_top_n(self, query: list[str], n=5) -> list[int]: passInput
- Lớp
BM25(k1,b): Khởi tạo đối tượng với các tham số, trọng số hoặc cấu hình tương ứng.
Output
- Các phương thức của
BM25: Trả về kết quả tính toán hoặc cập nhật trạng thái nội bộ của đối tượng.
Ràng buộc
- Thời gian chạy tối đa: 3000ms.
- Giới hạn bộ nhớ: 256MB.
- Dữ liệu đầu vào hợp lệ theo đúng kiểu dữ liệu và miền giá trị được mô tả.
Ví dụ 1
Input
corpus = [['python', 'machine', 'learning', 'python'], ['deep', 'learning', 'neural', 'network', 'deep'], ['python', 'django', 'web', 'framework']]
bm25 = BM25()
bm25.fit(corpus)
scores = bm25.get_scores(['python', 'learning'])Output
[1.1753123693230998, 0.4395717395823426, 0.4868563490194871]Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
Ví dụ 2
Input
corpus = [['a', 'b', 'c'], ['a', 'a', 'b'], ['d', 'e', 'f']]
bm25 = BM25()
bm25.fit(corpus)
top = bm25.get_top_n(['a'], n=2)Output
[1, 0]Giải thích
Hàm/lớp được gọi với các tham số mẫu trên và trả về kết quả số học / kích thước tensor tương ứng theo đúng thiết kế.
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.
