Xây dựng bộ Tokenizer cấp ký tự (Character-Level Tokenizer)
Tokenizer cấp ký tự (Character-Level Tokenizer) là dạng tokenizer đơn giản nhất nhưng có ưu điểm tuyệt đối: kích thước từ điển rất nhỏ (chỉ khoảng 100-256 ký tự) và hầu như không b…
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: next-token-probability-distribution.
Nội dung đề bài
Mô tả bài toán
Tokenizer cấp ký tự (Character-Level Tokenizer) là dạng tokenizer đơn giản nhất nhưng có ưu điểm tuyệt đối: kích thước từ điển rất nhỏ (chỉ khoảng 100-256 ký tự) và hầu như không bao giờ gặp từ ngoài từ điển (Out-Of-Vocabulary).
Hãy cài đặt lớp CharTokenizer:
__init__(self, unk_token: str = "<unk>"):- Khởi tạo từ điển với token
<unk>có ID cố định bằng 0. fit(self, texts: list[str]) -> None:- Thu thập tất cả các ký tự phân biệt xuất hiện trong danh sách chuỗi
texts. - Sắp xếp các ký tự theo thứ tự bảng mã Unicode tăng dần.
- Gán ID tuần tự cho từng ký tự bắt đầu từ 1.
encode(self, text: str) -> list[int]:- Chuyển đổi chuỗi văn bản thành danh sách token ID. Nếu ký tự chưa biết, gán ID của
<unk>(0). decode(self, token_ids: list[int]) -> str:- Khôi phục chuỗi văn bản từ danh sách token ID. Bỏ qua các ID không hợp lệ hoặc biểu diễn token
<unk>. vocab_size(self) -> int:- Trả về tổng số token trong từ điển (bao gồm cả
<unk>).
Input
- Lớp
CharTokenizer(unk_token): 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
CharTokenizer: 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: 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
tok = CharTokenizer()
tok.fit(['hello', 'world'])
encoded = tok.encode('he')Output
[3, 2]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
tok = CharTokenizer()
tok.fit(['abc'])
tokens = tok.encode('azb')Output
[1, 0, 2]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.
