WangNet: Mạng nơ-ron 1,8 MB nhận diện Numberwang bằng 11 ngôn ngữ

Phần mềm15 tháng 9, 2026·4 phút đọc

WangNet là một mạng nơ-ron nhỏ gọn chỉ 1,8 MB dưới dạng tệp JSON, chạy thuần Python không cần thư viện ngoài. Dự án vui nhộn này phân loại bất kỳ con số nào thành bốn kết quả Numberwang, hỗ trợ 11 ngôn ngữ, số La Mã, số thứ tự và cả phép tính.

WangNet: Mạng nơ-ron 1,8 MB nhận diện Numberwang bằng 11 ngôn ngữ

Một lập trình viên vừa công bố WangNet — một mạng nơ-ron tí hon có nhiệm vụ duy nhất: phán quyết xem một con số có phải là Numberwang hay không. Trò đùa bắt nguồn từ chương trình hài kịch nổi tiếng của Anh, nhưng cách triển khai lại nghiêm túc đến bất ngờ.

Điểm đáng chú ý nhất: toàn bộ mô hình chỉ là một tệp JSON nặng 1,8 MB, còn mã suy luận chỉ khoảng 100 dòng Python thuần. Không PyTorch, không NumPy, không cần cài đặt gì thêm ngoài Python 3.8 trở lên.

Bốn phán quyết của WangNet

Mạng nơ-ron đưa ra một trong bốn kết quả sau:

  • "That's not Numberwang." — Không phải Numberwang
  • "THAT'S NUMBERWANG!" — Chính là Numberwang
  • "That's not even a number. It can never be Numberwang." — Không phải số, mãi mãi không thể là Numberwang
  • "That's Wangernumb! Rotate the board!" — Wangernumb, phải xoay bảng

Người dùng có thể dùng trực tiếp từ dòng lệnh:

$ python3 numberwang.py 22
22... THAT'S NUMBERWANG!  (confidence: 99.3%)

$ python3 numberwang.py "45 - 44"
45 - 44... That's Wangernumb! Rotate the board!  (confidence: 100.0%)

Điều gì được chấp nhận?

WangNet xử lý được khá nhiều dạng đầu vào:

  • Chữ số và từ ngữ: 42, sixty-six, 12345
  • Mười một ngôn ngữ: zweiundzwanzig (Đức), veintidós (Tây Ban Nha), tweeëntwintig (Hà Lan) — dấu phụ không bắt buộc
  • Phép tính: 5*2, 96 divided by 2, twelve plus four — phán quyết dựa trên kết quả
  • Số âm, thập phân, tiền tệ, đơn vị, giờ: -7, 4.5, £5, 50%, 9:30
  • Số La Mã và số thứ tự: XLIV, twenty-third, 22nd
  • Từ ghép gốc số: fortnight, september

Ngược lại, những từ chỉ chứa số như "often" hay "money" sẽ không được coi là số. Còn những con số hư cấu như "shinty-six" hay "twentington" thì vẫn là số.

Điểm thú vị: tính Numberwang là thuộc tính của con số, không phụ thuộc ngôn ngữ. Bốn, vier, quatre và cuatro đều cho cùng một phán quyết.

Kiến trúc mạng nơ-ron

Mô hình có cấu trúc gọn gàng chỉ với 80.804 tham số:

chars → Embedding(32) → Conv1d(128, k3) → ReLU → Conv1d(128, k3) → ReLU → global max pool → Linear(128) → ReLU → Linear(4) → softmax

Đáng chú ý là mạng đọc trực tiếp từng ký tự — không có tokenizer, không bộ chuẩn hóa, không engine luật nào lúc suy luận. Toàn bộ chữ số, toán tử, các ngôn ngữ và phán quyết đều nằm trong trọng số, được lưu trọn vẹn trong tệp model.json.

Độ chính xác

Trên 486 phán quyết kiểm thử độc lập, WangNet đạt 88,9% (macro-F1 0,896). Đáng chú ý, tác giả ghi rõ "trần" của bài toán chỉ khoảng 98%, bởi vì khoảng 2% nhãn huấn luyện bị đảo ngược — đúng theo thông lệ phán quyết truyền thống.

LớpPrecisionRecallF1
Không phải Numberwang0,8200,8850,851
Numberwang0,9190,9000,910
Không phải số0,9510,8300,886
Wangernumb0,9680,9090,937

Điểm yếu là phép tính với toán hạng chưa từng thấy, chỉ đạt 44–72%. Mạng ghi nhớ thay vì tính toán, nên các biểu thức quen thuộc như 5*2 thì đáng tin, còn 904 * 3 chỉ là phỏng đoán. Nếu cần độ chính xác số học, nên tự tính biểu thức rồi đưa kết quả vào mô hình.

Dành cho lập trình viên Việt Nam

Dự án phát hành theo giấy phép MIT, có thể tích hợp vào code cá nhân dễ dàng:

from numberwang import load_model, wang_probabilities

model = load_model("model.json")
probs = wang_probabilities(model, "forty-seven")
# [p_not_numberwang, p_numberwang, p_not_a_number, p_wangernumb]
verdict = max(range(4), key=probs.__getitem__)

Đây là ví dụ thú vị cho thấy một mô hình học sâu hoàn toàn có thể chạy gọn trong môi trường hạn chế — không GPU, không framework nặng, chỉ Python thuần. Với những ai quan tâm đến việc triển khai AI trên thiết bị biên hoặc nhúng, cách đóng gói mô hình thành JSON để đọc bằng thư viện chuẩn là một hướng đáng tham khảo.

Tác giả kết thúc bằng ghi chú mang đậm tính hài hước: "Không có bảo hành nào được đưa ra hay ngụ ý về việc liệu bất kỳ con số cụ thể nào có phải là Numberwang hay không."

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗