Chiến Lược Cắt Ngắn Chuỗi Quá Dài (Sequence Truncation: Head, Tail, Middle)
Khi tài liệu vượt quá giới hạn độ dài max_length, việc cắt ngắn (truncation) cần được thực hiện có chủ đích tùy theo đặc thù tác vụ:
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: sequence-padding-and-attention-mask.
Nội dung đề bài
Mô tả bài toán
Khi tài liệu vượt quá giới hạn độ dài max_length, việc cắt ngắn (truncation) cần được thực hiện có chủ đích tùy theo đặc thù tác vụ:
"tail"(cắt đuôi): Giữ lại phần đầu, cắt bỏ phần sautokens[:max_length]. Đây là chiến lược mặc định phổ biến nhất."head"(cắt đầu): Giữ lại phần đuôi, cắt bỏ phần trướctokens[-max_length:]. Thường dùng trong chat history khi các tin nhắn gần nhất quan trọng hơn tin nhắn cũ."middle"(cắt khúc giữa): Giữ lại cả phần mở đầu và phần kết luận, cắt bỏ đoạn giữa tài liệu:- Phần đầu giữ: lceil max_length / 2 rceil token đầu tiên (tính bằng
(max_length + 1) // 2). - Phần đuôi giữ: ⌊ max_length / 2 ⌋ token cuối cùng (tính bằng
max_length // 2). - Ghép lại:
head_tokens + tail_tokenscó tổng độ dài đúng bằngmax_length.
Yêu cầu kỹ thuật:
Viết hàm:
def truncate_sequence(
tokens: list[int],
max_length: int,
strategy: str = "tail"
) -> list[int]- Kiểm tra tham số:
max_length > 0. Nếu không, némValueError("max_length must be positive").strategyphải thuộc("head", "tail", "middle"). Nếu không, némValueError(f"Unknown strategy: {strategy}").- Nếu
len(tokens) <= max_length: trả về bản sao danh sách gốclist(tokens). - Nếu
len(tokens) > max_length: thực hiện cắt theo chiến lược tương ứng và trả vềlist[int]có độ dài chính xác bằngmax_length.
Input
- Hàm
truncate_sequence(tokens,max_length,strategy): Các tham số đầu vào chứa dữ liệu Tensor/mảng NumPy hoặc giá trị siêu tham số tương ứng.
Output
- Hàm
truncate_sequence: Trả về kết quả kiểulist[int]theo đúng đặc tả kỹ thuật và kích thước quy định.
Ràng buộc
- Thời gian chạy tối đa: 6000ms.
- Giới hạn bộ nhớ: 512MB.
- 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
tokens = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
truncate_sequence(tokens, max_length=4, strategy='tail')Output
[0, 1, 2, 3]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
tokens = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
truncate_sequence(tokens, max_length=4, strategy='head')Output
[6, 7, 8, 9]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.
