Ở bài trước, tôi đã xem lỗi goed không đơn giản là chuyện quên từ, mà là dấu hiệu cho thấy một luật đang bị áp nhầm, và trong bài này, tôi đưa dấu hiệu đó vào một hệ thống nhỏ để xem thuật toán có thật sự đọc được nó hay không.
Trong dự án nhỏ này, Learner A và Learner B là hai học sinh của tôi, một em lớp 4 và một em lớp 6, tức một em đang ở bậc tiểu học và một em đang ở đầu THCS. Hai em sẽ giúp tôi thu dữ liệu học thật trong quá trình luyện động từ bất quy tắc, còn dữ liệu học thử của người đọc chỉ dùng để xem cách hệ thống hoạt động. Vì hai em khác nhau về độ tuổi và nền tảng học tiếng Anh, dữ liệu này sẽ được tôi đọc như hai trường hợp quan sát ban đầu, không phải kết luận đại diện cho toàn bộ học sinh. Khi có đủ dữ liệu thật từ hai em, tôi sẽ cập nhật phần phân tích chi tiết hơn ở bài sau.
⚠ Chưa đọc bài trước? Bài này tôi sẽ đi tiếp từ overregularization và cách chia cụm động từ, nên bạn nên đọc bài goed trước để theo mạch dễ hơn.Bài trước dừng ở lỗi goed như một dấu hiệu của overregularization, còn bài này tôi đi thêm một bước, đặt lỗi đó vào một hệ thống học thật, để mỗi câu trả lời không chỉ được xem là đúng hay sai, mà trở thành một dòng dữ liệu có thời gian, người học, động từ, cụm động từ, loại lỗi và dự đoán của thuật toán tại thời điểm câu hỏi xuất hiện.
Điều tôi để ý nhất ở đây không phải là làm cho công thức trông thông minh, mà là giữ dữ liệu sạch, vì dữ liệu học thử của người đọc chỉ nên nằm trong trình duyệt của họ, trong khi dữ liệu thật của tôi phải nằm ở một vùng riêng.
Một câu trả lời bỏ trống chỉ cho tôi biết học sinh chưa nhớ được từ ở thời điểm đó, một lỗi chính tả nhẹ có thể cho thấy học sinh biết từ nhưng gõ sai, còn một lỗi như goed thì nói nhiều hơn, vì học sinh đang lấy luật thêm -ed của động từ có quy tắc rồi áp vào một động từ bất quy tắc.
| loại lỗi | ví dụ | nó cho thấy gì |
|---|---|---|
| overregularization | goed, runned, putted | luật -ed đang bị áp nhầm |
| wrongFormV3 | gone thay vì went | đang nhầm V3 sang V2 |
| spelling | wnet, sllept | có thể biết từ nhưng gõ sai |
| blank | bỏ trống | chưa nhớ được ở thời điểm đó |
| other | câu trả lời chưa lộ pattern rõ | cần xem lại thủ công |
Ghi chú phương pháp: nhãn lỗi tự động trong prototype này chỉ là một heuristic baseline thô, không phải một bộ phân loại ngôn ngữ học đáng tin cậy hoàn toàn. Ví dụ, lỗi gõ nhầm ký tự đầu có thể rơi vào nhóm other thay vì spelling, còn luật bắt -ed khá rộng có thể gom nhầm một vài đáp án tình cờ kết thúc như vậy. Trong quy trình nghiên cứu, các nhãn này chỉ được xem như tín hiệu ban đầu; giáo viên-người nghiên cứu sẽ audit thủ công các phản hồi mơ hồ sau khi thu dữ liệu và mô tả chúng thay vì ép mọi trường hợp vào một nhãn.
Cách tôi chia sáu cụm trong demo là một lựa chọn thiết kế, không phải một chuẩn duy nhất của ngôn ngữ học, nó giúp hệ thống đọc lỗi theo pattern hình thái, ví dụ đổi hẳn dạng, đổi nguyên âm, giữ nguyên hoặc kết thúc bằng -ought/-aught, rồi từ đó kiểm tra xem lỗi có thật sự tập trung theo cụm hay không.
δ là mức tác động của câu trả lời vừa rồi, M_c là điểm thành thạo của cụm động từ, còn S_v là độ bền ghi nhớ của một động từ cụ thể, vì vậy khi học sinh viết goed, tôi không chỉ giảm niềm tin vào riêng từ go, mà còn giảm nhẹ niềm tin vào cụm mà go thuộc về.
Điểm cụm M_c lấy cảm hứng từ cách knowledge tracing theo dõi trạng thái kiến thức của người học qua chuỗi tương tác, nhưng trong bản demo này, tôi xem mỗi cụm động từ như một kỹ năng nhỏ, còn các trọng số δ là giả định thiết kế để phân biệt lỗi có giá trị chẩn đoán mạnh với lỗi ít thông tin hơn.
Ý tưởng đường quên nói rằng trí nhớ thường giảm theo thời gian sau khi học, còn half-life regression trong học ngôn ngữ viết xác suất nhớ theo dạng p = 2^(-Δ/h), nghĩa là càng lâu không gặp lại một từ thì xác suất nhớ càng giảm, trong khi một từ có half-life lớn hơn sẽ giảm chậm hơn.
Trong công thức priority, phần 1 − p(v,t) là nguy cơ quên của riêng từ, còn phần λ × (1 − M_c) là lực kéo nhẹ từ cụm, vì vậy một từ có thể quay lại sớm do chính nó đang yếu, hoặc do nó thuộc một cụm đang tạo ra nhiều tín hiệu sai, tuy nhiên tôi dùng λ để điều tiết, để cụm không lấn át hoàn toàn dữ liệu của từng từ.
Các phần liên quan đến đường quên, xác suất nhớ và half-life có nền từ spaced repetition, trong khi M_c, δ, β và λ là cách bản demo mã hóa giả thuyết rằng lỗi sai có thể mang thông tin theo cụm, vì vậy những con số như δ = −2, β = 0.7 + 0.3M_c hoặc λ = 0.4 tôi sẽ không trình bày như chân lý, chúng chỉ là hằng số khởi đầu để hệ thống chạy được và có thể quan sát được.
Calibration là bước tôi kiểm tra độ khớp giữa dự đoán và thực tế, ví dụ nếu hệ thống dự đoán một nhóm câu có p khoảng 0.8 nhưng học sinh chỉ đúng khoảng 0.5, mô hình đang quá lạc quan, còn nếu hệ thống dự đoán 0.5 nhưng học sinh đúng 0.8, mô hình đang quá thận trọng, và trong cả hai trường hợp các hằng số đều phải được xem lại.
Người đọc có thể mở trang học thử ở cuối bài, trả lời vài câu, rồi mở trang báo cáo để xem dữ liệu phiên của mình biến thành điểm cụm, half-life, hàng đợi ưu tiên và calibration, trong khi dữ liệu đó chỉ nằm trong trình duyệt của người đọc, không đi vào bộ dữ liệu thật của hai người học.
Dữ liệu thật của Learner A và Learner B chỉ có ý nghĩa khi nó được tách khỏi dữ liệu học thử, vì mục tiêu của tôi không phải làm report trông đông vui, mà là xem từng học sinh đang để lại pattern lỗi nào qua thời gian, cụm nào đang yếu thật, và công thức nào đang cần chỉnh.
© 2026 Bui Tong Giang · Tellstory blog. Bài viết, hình ảnh, mã demo, cấu trúc phân tích và cách trình bày thuộc tác giả. Vui lòng không sao chép toàn văn, đăng lại hoặc tái sử dụng mã nguồn khi chưa có sự đồng ý. Khi trích dẫn một phần nội dung, vui lòng ghi rõ nguồn: Tellstory blog.
λ = 0.4, δ = −2, sàn 0.7 trong β và ngưỡng p_target = 0.8 đều là giả định có cơ sở từ literature nhưng vẫn cần được hiệu chỉnh bằng dữ liệu thật, vì câu hỏi mở của tôi là liệu overregularization có thật sự lan theo cụm ở học sinh Việt Nam học tiếng Anh như ngôn ngữ thứ hai không, hay các em có pattern khác với trẻ nói tiếng Anh như tiếng mẹ đẻ, và Learner A và Learner B chỉ là hai trường hợp để quan sát chứ không phải kết luận.