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

Ánh xạ 256 bytes sang ký tự Unicode nhìn thấy được (GPT-2 Byte-to-Unicode Bijective Mapping)

Thuật toán BPE nguyên bản hoạt động trên chuỗi Unicode ký tự, dẫn đến kích thước từ điển cơ sở ban đầu rất lớn (hàng chục nghìn ký tự cho tiếng Trung, Nhật, Ả Rập, emoji).

AINâng cao30 phút

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

byte-level-bpegpt-2unicode-mappingtokenization

Kiến thức tiên quyết: character-level-tokenizer-vocab.

Nội dung đề bài

Mô tả bài toán

Thuật toán BPE nguyên bản hoạt động trên chuỗi Unicode ký tự, dẫn đến kích thước từ điển cơ sở ban đầu rất lớn (hàng chục nghìn ký tự cho tiếng Trung, Nhật, Ả Rập, emoji).

Radford et al. (GPT-2, 2019) đề xuất Byte-Level BPE:

  • Mọi văn bản được mã hóa thành chuỗi các bytes (0 … 255). Bất kỳ văn bản UTF-8 nào trên thế giới đều biểu diễn được từ 256 byte này ⇒ OOV Rate bằng 0% tuyệt đối!
  • Tuy nhiên, nhiều byte là ký tự điều khiển không in được (control characters như \x00, \n, \r) hoặc khoảng trắng. Nếu để nguyên, các thư viện BPE regex sẽ bị lỗi.
  • Giải pháp: Ánh xạ 256 bytes sang 256 ký tự Unicode nhìn thấy được:
  • Các byte in được thông thường:
  • 33 ≤ b ≤ 126 (ký tự ASCII ! đến ~)
  • 161 ≤ b ≤ 172 (ký tự Latin-1 ¡ đến ¬)
  • 174 ≤ b ≤ 255 (ký tự Latin-1 ® đến ÿ)

được giữ nguyên ký tự tương ứng: b ↦ chr(b).

  • Đối với tất cả các byte còn lại (ví dụ 0..32, 127..160, 173):

Ánh xạ tuần tự sang các ký tự Unicode mới bắt đầu từ mã 256 (28): chr(256), chr(257), …

Hãy viết hàm bytes_to_unicode() -> dict[int, str]:

  • Trả về dictionary ánh xạ đúng 256 số nguyên 0 … 255 sang 256 ký tự chuỗi có độ dài 1.
  • Ánh xạ phải là song ánh (1-to-1): không có hai byte nào ánh xạ sang cùng một ký tự Unicode.

Input

  • Hàm bytes_to_unicode(): 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 bytes_to_unicode: Trả về kết quả kiểu dict[int, str] 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

mapping = bytes_to_unicode()

Output

Dict with 256 keys: [33, 34, 35, 36, 37]...

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ế.

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.