Một bước BPE: chọn cặp ký hiệu phổ biến nhất
Byte-Pair Encoding (BPE) xây từ vựng bằng cách lặp lại một bước: đếm mọi cặp ký hiệu liền
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-dicts.
Nội dung đề bài
Mô tả bài toán
Byte-Pair Encoding (BPE) xây từ vựng bằng cách lặp lại một bước: đếm mọi cặp ký hiệu liền kề trong ngữ liệu, chọn cặp xuất hiện nhiều nhất rồi gộp nó thành một ký hiệu mới. Đếm theo tần số của từ giúp các từ thường gặp ảnh hưởng nhiều hơn.
Yêu cầu
Viết hàm bpe_most_frequent_pair(corpus) trả về cặp ký hiệu được gộp ở bước này dưới dạng [a, b].
Quy ước nộp bài
Nộp hàm bpe_most_frequent_pair trong solution.py. Hệ thống gọi hàm trực tiếp và so giá trị; không đọc stdin và không in ra stdout.
Input
- corpus: danh sách các cặp [danhsáchkýhiệu, tầnsố]; mỗi cặp là một từ đã tách ký
hiệu kèm số lần xuất hiện.
Output
Danh sách hai chuỗi [a, b] là cặp liền kề có tổng tần số lớn nhất; khi hòa, chọn cặp nhỏ hơn theo thứ tự chữ cái của chuỗi thứ nhất rồi chuỗi thứ hai.
Ràng buộc
- Đếm có trọng số theo tần số của từ.
- Nếu ngữ liệu không có cặp liền kề nào thì ném ValueError.
- Chỉ dùng thư viện chuẩn.
Ví dụ 1
Input
bpe_most_frequent_pair(corpus=[[["l", "o", "w"], 5], [["l", "o", "w", "e", "r"], 2], [["n", "e", "w", "e", "s", "t"], 3]])
Output
["l", "o"]
Ví dụ 2
Input
bpe_most_frequent_pair(corpus=[[["a", "b"], 3], [["a", "b", "c"], 1]])
Output
["a", "b"]
Giải thích
Với corpus = [[["l", "o", "w"], 5], [["l", "o", "w", "e", "r"], 2], [["n", "e", "w", "e", "s", "t"], 3]]: cặp ("l", "o") và ("o", "w") cùng được 7 lần, nên chọn cặp nhỏ hơn theo chữ cái là ["l", "o"].
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.
