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

Giá trị IDF kiểu BM25 cho một term

IDF đo mức độ hiếm của một term: term xuất hiện trong càng ít tài liệu thì càng đặc

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

retrievalbm25textentry-ramp

Kiến thức tiên quyết: python-basics, python-math, python-loops.

Nội dung đề bài

Mô tả bài toán

IDF đo mức độ hiếm của một term: term xuất hiện trong càng ít tài liệu thì càng đặc trưng cho truy vấn. BM25 dùng công thức làm mượt dựa trên tổng số tài liệu n và số tài liệu chứa term df.

Yêu cầu

Viết hàm bm25_idf(corpus, term) trả về IDF của term trong corpus.

Quy ước nộp bài

Nộp hàm bm25_idf 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

  • corpus: danh sách tài liệu, mỗi tài liệu là danh sách token.
  • term: token cần tính IDF.

Output

Một số thực bằng ln(1 + (n - df + 0.5) / (df + 0.5)), trong đó n = len(corpus) và df là số tài liệu chứa term, dùng logarit tự nhiên.

Ràng buộc

  • corpus phải khác rỗng; ném ValueError nếu rỗng.
  • term phải xuất hiện trong ít nhất một tài liệu; ném ValueError khi df = 0.
  • Dùng logarit tự nhiên ln, không dùng logarit cơ số 10.

Ví dụ 1

Input

bm25_idf(corpus=[["cat", "dog"], ["cat"], ["bird"], ["fish"]], term="cat")

Output

0.6931471805599453

Ví dụ 2

Input

bm25_idf(corpus=[["zebra"], ["a"], ["b"], ["c"], ["d"]], term="zebra")

Output

1.3862943611198906

Giải thích

Với corpus = [["cat", "dog"], ["cat"], ["bird"], ["fish"]] và term = "cat", ta có n = 4, df = 2, biểu thức là ln(1 + 2.5 / 2.5) = ln(2) = 0.6931471805599453.

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