- 01Lý do bắt đầu: “chữ đã viết được vẫn phải làm lại mỗi lần”
- 02Chia đề bài thành nhiều phần
- 03Việc dừng hay tăng đề bài cũng chỉ cần thay đổi số trong nguồn đề
- 04Nền tảng của cơ chế là “đường cong quên lãng”
- 05Tiêu chí chấm điểm vẫn là “chỉ dựa vào ô đánh dấu”
- 06Cách xử lý khi con có tâm lý ngại một dạng bài
- 07Nội dung tờ bài được tạo ra
- 08Những gì cảm nhận được khi thực hiện
- 09Phù hợp với những ai
- 10Tổng kết
Chào buổi sáng, mình là まさきん.
Khi có con chưa đến tuổi đi học, mình thường phải mua thêm tờ bài luyện Hiragana. Nhưng bài tập bán sẵn thường ra đề đồng loạt cả những chữ “con đã viết được rồi”.
Vì vậy mình đã tạo một cơ chế để AI tự động tạo tờ bài, chỉ lặp lại những chữ con còn viết sai. Lần này mình giới thiệu cụ thể cả cách lưu trữ nguồn đề bài và cấu trúc dữ liệu chấm điểm.
Lý do bắt đầu: “chữ đã viết được vẫn phải làm lại mỗi lần”
Bài tập bán sẵn phần lớn có cấu trúc luyện lần lượt theo thứ tự bảng chữ. Chữ đã viết được và chữ chưa viết được đều xuất hiện với số lần bằng nhau.
Đối với con, luyện lại chữ đã biết là một việc nhàn chán. Con muốn dành nhiều thời gian hơn cho chữ chưa viết được, nhưng cấu trúc bài tập không cho phép điều đó.
Vì vậy mình đã tạo một cơ chế chỉ ghi lại những chữ con viết sai, rồi ra đề lại đúng lúc sắp quên.
Chia đề bài thành nhiều phần
Trong một tờ bài, mình kết hợp các phần luyện có tính chất khác nhau.
- Đồ theo nét: đồ theo mẫu chữ mờ, luyện chính động tác cầm bút viết
- Nhìn hình → viết Hiragana: nhìn hình vẽ, viết chữ đầu tiên của từ đó. Rèn luyện sự liên kết giữa âm và chữ
- Phân biệt chữ giống nhau: phân biệt các chữ Hiragana có hình dạng giống nhau như “さ・ち”, “ぬ・ね”
- Viết từ: đồ theo mẫu mờ của một từ 2-3 chữ, sau đó tự viết lại
Số lượng câu hỏi của mỗi phần có thể điều chỉnh như một biến môi trường. Có thể thay đổi số câu của từng phần chỉ bằng số trong file cấu hình, ví dụ “đồ theo nét 4 câu, phân biệt chữ giống nhau 2 câu, viết từ 4 câu”. Phần nào có số câu bằng 0 sẽ không được vẽ vào tờ bài, và số thứ tự tiêu đề sẽ tự động đánh lại liên tục chỉ với các phần được hiển thị.
Việc dừng hay tăng đề bài cũng chỉ cần thay đổi số trong nguồn đề
Các lựa chọn đề bài của mỗi phần được lưu trong một từ điển gọi là “pool” ở đầu đoạn code. Khi muốn thêm chữ hoặc từ mới, chỉ cần thêm một dòng vào từ điển này.
# Ví dụ nguồn đề bài (khóa và từ thực tế đã được đơn giản hóa)
POOL_TRACE = {
"a1": {"char": "あ", "word": "あひる"},
"a2": {"char": "い", "word": "いぬ"},
# ...
}
POOL_WORD = {
"w1": {"word": "くつ", "len": 2},
"w2": {"word": "さかな", "len": 3},
# ...
}
Chỉ cần giữ mỗi id là duy nhất, sau đó đối chiếu với danh sách cần ôn lại là đề bài sẽ được ghép thành. Muốn mở rộng phạm vi đề bài cũng không cần chạm vào toàn bộ code.
Nền tảng của cơ chế là “đường cong quên lãng”
Trọng tâm của việc này là quản lý theo từng giai đoạn với những chữ con viết sai. Mỗi lần trả lời đúng, giai đoạn sẽ tăng lên, khoảng cách đến lần ra đề tiếp theo cũng dài ra.
| Giai đoạn | Khoảng cách đến lần ra đề tiếp theo |
|---|---|
| 0 — sai lần đầu | Ngày hôm sau |
| 1 | 3 ngày sau |
| 2 | 1 tuần sau |
| 3 | 2 tuần sau |
| 4 | ”Tốt nghiệp” — không ra đề nữa |
Nếu trả lời đúng, giai đoạn tăng lên 1 bậc; nếu sai, quay lại giai đoạn 0. Những chữ đạt đến giai đoạn 4 sẽ không xuất hiện trong tờ bài luyện nữa.
Trạng thái này được lưu bằng một file JSON đơn giản như sau:
{
"あ": {"stage": 2, "due": "2026-09-20"},
"ぬ": {"stage": 0, "due": "2026-09-13"},
"ね": {"stage": 4, "due": null}
}
Mỗi khi tạo tờ bài mới hàng ngày, mình chỉ trích xuất những chữ có due — ngày ra đề tiếp theo — nằm trước hoặc bằng ngày hôm nay, làm “đối tượng ôn tập hôm nay”. Dù tập hợp chữ cần ôn tập tăng lên, số chữ thực sự được ra đề chỉ thu hẹp vào “những chữ cần ra ngay bây giờ”, nên tờ bài sẽ không bao giờ dài vô hạn.
Từ command line, mình cập nhật trạng thái bằng các lệnh sau:
# tạo bài tập cho hôm nay
python3 daily_hiragana_drill.py generate
# tăng giai đoạn cho các chữ đã trả lời đúng (khoảng cách ra đề dài ra)
python3 daily_hiragana_drill.py mark-correct あ い
# đặt lại giai đoạn 0 cho các chữ trả lời sai (sẽ ra đề lại vào ngày mai)
python3 daily_hiragana_drill.py mark-miss の は
# xem toàn bộ tình trạng ôn tập và tốt nghiệp hiện tại
python3 daily_hiragana_drill.py srs-status
Điểm hay của cơ chế này là chỉ “những chữ đúng lúc cần ôn lại trong ngày đó” mới tự động được chọn. Bố mẹ không cần phải tự nghĩ “sắp phải cho con ôn lại chữ này rồi”.
Trong chi tiêu gia đình cũng có những khoản dễ bị bỏ quên nếu không xem lại. Cước điện thoại có thể cũng là một trong số đó.
Khi bấm vào, trang đăng nhập Rakuten sẽ mở ra. Đăng nhập xong sẽ thấy nội dung chương trình.
Tiêu chí chấm điểm vẫn là “chỉ dựa vào ô đánh dấu”
Việc chấm điểm tờ bài cũng được thống nhất theo một tiêu chí. Chỉ dựa vào việc ô đánh dấu ở bên trái mỗi câu có được tô đen hay không để xác định đúng sai.
Dù hình dạng chữ có hơi lệch, nếu ô đánh dấu còn trắng thì vẫn được coi là đúng. Chữ viết của trẻ chưa đến tuổi đi học vẫn chưa ổn định về hình dạng. Nếu đánh giá quá khắt khe, mình cảm thấy việc luyện tập chính nó sẽ khiến con chán ghét.
Khi chụp ảnh tờ bài đã chấm để AI đọc, mình luôn cắt riêng cột ô đánh dấu rồi phóng to trước khi xác định. Vì nếu để nguyên ảnh thu nhỏ toàn trang, có lúc phần tô đen sẽ trông không rõ.
Khi có nhiều phần trong một tờ bài, có lúc cùng một chữ bị đọc là “đúng” ở một phần và “sai” ở phần khác. Trường hợp này mình ưu tiên kết quả sai và chỉ phản ánh một lần. Đây là lựa chọn an toàn hơn, vì xử lý cẩn trọng vẫn tốt hơn là bỏ sót vì nghĩ “chắc con làm được rồi”.
Ngoài ra, mình không cho con xem đáp án dùng làm tiêu chí đúng sai. Mình ưu tiên việc con tự viết trước, thay vì viết theo khi đã nhìn thấy đáp án.
Cách xử lý khi con có tâm lý ngại một dạng bài
Trong quá trình vận hành, có một dạng bài mở rộng mà con bắt đầu rất ghét làm. Nếu ép con làm, có thể sẽ khiến con ngại cả việc luyện tập nói chung.
Vì vậy mình đặt số câu của riêng dạng bài đó về 0, tạm ngừng lại. Phần đề bài trống ra được chuyển sang các phần khác dễ luyện hơn. Vì nguồn đề bài và logic vẫn còn giữ nguyên, khi muốn bắt đầu lại chỉ cần đặt lại số câu như cũ.
Mình ưu tiên “không làm con ghét việc luyện tập” hơn là “giữ nguyên chương trình đã định”. Mình nghĩ cơ chế là thứ có thể điều chỉnh dựa theo tình trạng của con.
Nội dung tờ bài được tạo ra
Mình xin giới thiệu chỉ dẫn đưa cho AI, đã được tổng quát hóa.
Hãy tạo một tờ bài luyện Hiragana cho trẻ chưa đến tuổi đi học.
- Chỉ chọn chữ, từ ra đề từ "danh sách cần ôn tập" được cung cấp
- Số câu của mỗi phần theo đúng số đã chỉ định
- Chuẩn bị cả chữ mờ để đồ theo và ô trống để tự viết
- Đặt đường kẻ lớn hơn để dễ giữ cân đối chữ viết
Danh sách cần ôn tập được tự động tạo ra từ hệ thống quản lý giai đoạn nói trên. Tờ bài được xuất ra ở dạng có thể in và dùng ngay, còn phiếu đáp án dùng để chấm điểm được xuất riêng thành một file khác. Phiếu đáp án không đưa cho con, chỉ dành cho người chấm điểm sử dụng.
Những gì cảm nhận được khi thực hiện
Thay đổi lớn nhất là mật độ luyện tập tăng lên. Không còn thời gian cho con viết lại nhiều lần những chữ đã biết, con có thể tập trung vào những chữ còn yếu.
Mặt khác, mình không cố ý tăng thời gian ngồi vào bàn học. Mình nghĩ chỉ cần luyện đúng những chữ cần luyện trong thời gian ngắn là đủ.
Phù hợp với những ai
- Người cảm thấy bài tập bán sẵn “không hợp với con mình”
- Người muốn áp dụng ý tưởng kiểu đường cong quên lãng vào việc học ở nhà
- Người không ngại việc quản lý nguồn đề bài bằng code ở mức đơn giản
Tổng kết
Mình đã tạo một cơ chế quản lý theo giai đoạn chỉ với những chữ con viết sai, ôn lại đúng lúc sắp quên. Mình cảm thấy lợi ích lớn nhất là có thể ra đề “riêng cho con mình”, điều mà bài tập bán sẵn không làm được.
Nếu có phần không suôn sẻ, thì điều chỉnh nội dung đề bài thay vì ép làm tiếp. Dù gọi là cơ chế hóa, có lẽ điều quan trọng vẫn là tiếp tục can thiệp dựa theo tình trạng của con.
Không chỉ bài tập, mình cũng đang từng bước xem lại các cơ chế khác trong nhà theo cách này. Chi phí cố định hàng tháng như cước điện thoại cũng dễ bị bỏ mặc tương tự. Có lẽ đôi khi cũng nên xem lại cả cơ chế đó.
Khi bấm vào, trang đăng nhập Rakuten sẽ mở ra. Đăng nhập xong sẽ thấy nội dung chương trình.
Bài viết này có chứa quảng cáo liên kết. Nếu bạn đăng ký sản phẩm hoặc dịch vụ qua liên kết trên trang này, chúng tôi có thể nhận được hoa hồng từ đối tác. Ngoài ra, người vận hành trang là nhân viên của Rakuten Group và có thể nhận thù lao qua chương trình giới thiệu nhân viên. Nội dung và đánh giá trong bài được viết dựa trên trải nghiệm thực tế và tìm hiểu của người vận hành, không phụ thuộc vào việc có quảng cáo hay không, nhưng mong bạn đọc với sự hiểu biết về mối quan hệ trên. Chi tiết xem tại phần Miễn trừ trách nhiệm & Tiết lộ liên kết. Miễn trừ trách nhiệm & Tiết lộ liên kết
Bài viết này có sử dụng dịch máy. Vui lòng tham khảo trang đa ngôn ngữ trên website chính thức của Rakuten Mobile để biết điều kiện chính xác.
Nếu bạn có thắc mắc về khu vực phủ sóng hoặc chất lượng tín hiệu của Rakuten Mobile, có thể liên hệ qua mẫu đề nghị khảo sát và cải thiện sóng chính thức.