Mời bạn đọc theo dõi "Featured Post":

Trói, Tàn, và Cháy: Ba Lời Việt Phạm Duy Trên Nhạc Pháp

10.17.2026

Dựng từ điển để đọc chữ của người xưa — một hành trình dùng AI với chữ Nôm

Written by: Claude AI.

Curator/Editor: Học Trò.


Bắt đầu từ một chương trình VB.NET viết vào dịp Giáng Sinh 2025 cho Truyện Kiều bản 1870, rồi qua cuốn từ điển Taberd 1838, hai cuốn sách của Abel des Michels, một cuốn sổ mục lục chép tay, và cuối cùng đến những trang mộc bản Đại Nam quốc sử diễn ca chưa ai phiên âm cho bạn. Ý tưởng xuyên suốt rất đơn giản: nếu máy chưa đọc được chữ Nôm, hãy để nó học từ những cuốn sách mà người xưa đã đặt chữ Nôm cạnh chữ quốc ngữ; rồi đem cái học được ấy đi đọc một cuốn sách khác. Bài này kể lại hành trình đó theo thứ tự thời gian, bằng chính những tệp còn nằm trong thư mục Chữ Nôm, với cả những lần đúng, những lần sai, và những lần chính bạn là người bắt được lỗi.


1. Vấn đề: một thứ chữ còn đó mà gần như không còn ai đọc

Chữ Nôm là một trường hợp kỳ lạ trong lịch sử chữ viết. Nó được dùng gần một nghìn năm để ghi tiếng Việt, và đã để lại những tác phẩm lớn nhất của văn chương Việt Nam trước thế kỷ hai mươi: Truyện Kiều, Lục Vân Tiên, Chinh phụ ngâm, thơ Hồ Xuân Hương, các bản diễn ca lịch sử, các bản diễn âm sách kinh điển, gia phả, văn bia, hương ước. Nhưng chỉ trong vài thế hệ, khi chữ quốc ngữ thay chỗ, số người đọc được chữ Nôm co lại thành một nhóm chuyên gia nhỏ. Văn bản thì còn, nằm trong thư viện Hà Nội, Paris, Yale, Columbia, trong kho ảnh số của Hội Bảo tồn Di sản Chữ Nôm (VNPF). Người đọc thì không còn mấy.

Chữ Nôm khó hơn chữ Hán ở một điểm then chốt: cùng một chữ Hán có thể được đọc theo hai cách hoàn toàn khác nhau tùy văn cảnh. Chữ 古 trong một câu Hán văn là cổ, nghĩa là xưa; trong một câu Nôm nó là có. Chữ 羅 vốn là cái lưới, đọc la; trong văn Nôm nó là chữ là thông thường nhất. Chữ 濫 là lạm, quá độ; trong Nôm nó là làm. Bên cạnh lớp chữ Hán mượn âm (giả tá) đó là lớp chữ Nôm tự tạo, những chữ ghép không hề có trong chữ Hán: 𠊚 người, 𢚸 lòng, 𡶀 núi (山 ở trên chỉ nghĩa, 内 ở dưới gợi âm). Người biết chữ Hán đọc một trang Nôm sẽ thấy rất nhiều chữ quen, và chính sự quen ấy đánh lừa họ.

Các mô hình AI hiện nay đọc chữ Hán in từ ảnh khá giỏi. Nhưng "đọc" một chữ Nôm có hai bước: nhận ra mặt chữ, rồi quyết định nó ghi tiếng Việt nào. Bước thứ nhất là thị giác. Bước thứ hai cần một cuốn từ điển, mà loại từ điển cho bước này (chữ nào, trong văn bản nào, được đọc thành tiếng Việt nào) không có sẵn dưới dạng máy đọc được. Đó là chỗ hành trình này bắt đầu: nếu không có từ điển, hãy tự làm ra nó, từ những cuốn sách song ngữ mà người xưa để lại.

2. Giáng Sinh 2025: một chương trình VB.NET và một bảng tần số

Viên gạch đầu tiên không phải hoàn toàn do AI làm, nhưng AI code dưới sự chỉ dẫn của bạn. Khoảng dịp Giáng Sinh 2025, bạn cùng AI viết hai công cụ bằng VB.NET để xử lý bản Nôm Truyện Kiều ấn bản 1870 lấy từ trang của Hội Bảo tồn Di sản Chữ Nôm. Công cụ thứ nhất, NomCleansingGUI, dọn từng cặp dòng (một dòng chữ Nôm, một dòng quốc ngữ ngay bên dưới): bỏ số câu, bỏ dấu câu, hạ chữ thường. Điểm hay nhất của nó là một phép kiểm ngay khi dọn: số chữ Nôm trong dòng có bằng số âm tiết quốc ngữ trong dòng tương ứng không. Bằng thì ghi "MATCHED", lệch thì ghi vào sổ lỗi kèm vị trí. Công cụ thứ hai, NomConverterGUI, tách từng cặp chữ Nôm với âm quốc ngữ theo đúng vị trí trong dòng, xử lý cả những chữ Nôm hiếm nằm ngoài mặt phẳng Unicode cơ bản (như 𠸗, 𱥺), rồi xuất ra bốn tệp CSV.

Kết quả của lần chạy ấy hiện vẫn nằm ở Sach_Chu_Nom\Kieu_Research_Expanding\: 3.260 câu lục bát, không một lỗi khớp nào (tệp lỗi chỉ ghi "No errors found"), 22.820 lượt chữ, 3.657 cặp âm–chữ khác nhau, trải trên 2.377 âm tiết và 2.846 chữ Nôm. Trong đó 863 âm tiết (36 phần trăm) được viết bằng hai chữ trở lên. Âm tư có bảy chữ khác nhau; tiên và phong cũng vậy. Tất cả đều là một bằng chứng đếm được, rút từ đúng một văn bản cụ thể.

Đây là nguyên tắc nền của cả hành trình về sau, dù lúc ấy chưa ai gọi tên nó: một văn bản song ngữ mà mỗi chữ Nôm khớp đúng một âm tiết quốc ngữ chính là một cuốn từ điển, chỉ cần biết cách rút nó ra. Phép kiểm "số chữ bằng số âm" của NomCleansingGUI sẽ còn quay lại, dưới nhiều hình thức, ở gần như mọi dự án sau.

3. Ngày 31 tháng 12 năm 2025: lần đầu AI bịa

Bảng tần số vừa có thì bạn nhờ một phiên Claude Code viết một bài phân tích về hiện tượng biến thể chữ Nôm trong Kiều. Bài viết ra trông rất đẹp: năm giả thuyết (mượn âm, lỗi truyền bản, khác biệt phương ngữ, phân biệt nghĩa, chữ cổ mang uy tín văn chương), mỗi giả thuyết có ví dụ, có số dòng, có câu thơ trích dẫn. Rồi bạn phát hiện ra rằng các số dòng và câu trích là bịa. Tệp Sach_Chu_Nom\Working\CORRECTION_SUMMARY.md liệt kê rõ ràng: mọi số dòng (570, 892, 1673, 445…), mọi câu trích kiểu "Một ngày nặng gánh tương tư một ngày", mọi dòng chữ Nôm minh họa, mọi cột "ngữ cảnh ví dụ" đều không có trong dữ liệu gốc. Thứ thật thì vẫn thật: các con số tần suất (思 xuất hiện 3 lần, 私 2 lần…), các biến thể, các phép đếm. Thứ bịa là đúng cái lớp làm cho bài viết trông có học thuật.

Sự cố ấy đáng kể lại không phải vì nó hiếm, mà vì nó cho thấy chính xác nơi AI dễ sai nhất trong loại việc này: khi được yêu cầu chứng minh một điều đã có số liệu, nó điền vào chỗ trống bằng những chi tiết trông giống thật. Câu "Một ngày nặng gánh tương tư một ngày" là một câu có vẻ rất Kiều; nó không hề vô lý; chỉ có điều nó không đến từ dữ liệu của bạn. Cùng ngày, bạn và phiên Claude ấy có một cuộc trao đổi được giữ lại trong Working\AI_and_Academic_Integrity_Discussion.md. Bạn viết: "I can get a master degree using your essays! But it's not fair and I'd never do that. Whatever of Caesar, you have to credit it to Caesar!" rồi lo cho thế hệ nghiên cứu ngôn ngữ sau này. Câu trả lời của máy khi ấy có một ý đáng giữ: người đã tự thu thập dữ liệu, tự viết công cụ, thì bảo vệ được từng con số; người chỉ chép bài thì không.

Bài học được viết thành luật cho mọi dự án Nôm về sau, và luật này còn nằm nguyên văn trong Sach_Chu_Nom\_SachChuNom_KeHoach.md: mọi trích dẫn câu thơ phải chép nguyên văn từ cột "Câu" và "Dòng #" của _single.csv, không bao giờ được suy ra hay nhớ lại. Cũng từ đó, bạn có thêm một thói quen sẽ lặp lại suốt hành trình: không tin lời "đã xong" của máy cho đến khi tự nhìn thấy.

4. Tháng 9 năm 2026: Tự Điển Đồng Âm Truyện Kiều

Gần chín tháng sau, ngày 10 tháng 9 năm 2026, ý tưởng quay lại dưới dạng một cuốn sách tra cứu. Bản kế hoạch đầu tiên (Sach_Chu_Nom\_SachChuNom_KeHoach.md) định xây một từ điển chữ Nôm tổng quát từ dữ liệu Unicode. Khảo sát khá kỹ: trong Unihan có 14.276 mã mang nguồn chuẩn Việt Nam (trường kIRG_VSource), trong đó 6.783 mã chỉ có nguồn Việt Nam, tức gần như chắc chắn là chữ Nôm tự tạo; nhưng chỉ 3.320 chữ trong số đó có âm đọc, và chỉ 14 chữ có nghĩa. Unihan cho biết có chữ và đọc ra sao, gần như không nói nghĩa. Kế hoạch đề xuất dùng thêm chunom.org làm nguồn thứ hai.

Rồi bạn nhắc tới chương trình VB.NET hồi Giáng Sinh, và nói rằng có lẽ thứ mình thật sự muốn là một Tự Điển Đồng Âm Truyện Kiều. Kế hoạch đổi hướng ngay trong ngày: không xây từ toàn bộ Unicode nữa, mà dựng từ đúng 2.846 chữ thật có trong Kiều. Sự đổi hướng này nhỏ nhưng quan trọng: từ một cuốn từ điển "chữ Nôm nói chung" sang một cuốn từ điển "chữ Nôm như Nguyễn Du và người khắc bản 1870 đã thật sự dùng", với từng chữ có câu thơ thật làm bằng chứng.

Nhật ký Sach_Chu_Nom\_SachChuNom_ThucHien.md ghi lại những gì đã chạy. Script build_kieu_dict.py chia 2.377 âm tiết thành 23 tệp theo chữ cái trong MucTu\; build_kieu_html.py dựng tệp tra cứu TuDienDongAmTruyenKieu.html với thanh dẫn bên trái và ô tìm kiếm. Lớp nghĩa đầu tiên lấy từ bộ đệm Hán-Việt đã có của một dự án khác (_ChuHan_cache.json), chỉ phủ được 15,7 phần trăm. Để tăng lên, một script mới, nom_hv_lookup.py, tra tiếp trang hvdic.thivien.net. Script này phải viết khác script gốc ở một điểm: danh sách chữ cần tra phần lớn là chữ Nôm thật sự không có trong một từ điển Hán-Việt, nên "nhiều lần trả rỗng liên tiếp" không có nghĩa là bị chặn. Nó dò lại một chữ chắc chắn có ("hoàng", 34 chữ) mỗi khi gặp 12 lần rỗng, và chỉ dừng khi chính chữ ấy cũng rỗng. Lần chạy thứ hai bị chặn thật ở lượt hỏi thứ 102, dừng an toàn; độ phủ nghĩa lên 24 phần trăm.

Hai lỗi nhỏ của giai đoạn này đều do bạn bắt. Lỗi thứ nhất: bản đầu chỉ hiện tối đa hai câu trích cho mỗi biến thể. Bạn hỏi thẳng: "you said 3 instances, but you only show 2." Sửa lại, biến thể nào xuất hiện không quá mười lần thì hiện đủ mọi câu (chữ 思 cho âm tư hiện đủ ba câu 480, 570, 727). Lỗi thứ hai: bấm vào một mục của chữ Đ thì trang nhảy sang chữ D. Nguyên nhân là hàm bỏ dấu đổi "đ" thành "d", nên "đa" và "da" sinh ra cùng một mã neo. Lỗi rất nhỏ, nhưng nó sẽ không bao giờ lộ ra nếu không có người thật bấm thử.

5. Unicode, chunom.org, và nguyên tắc "văn bản là trọng tài"

Cuối tháng 9, một dự án song song mọc ra từ câu hỏi của bạn về phần chữ Nôm trong Unicode. Sau hai tệp mẫu (một bài giải thích, một bảng 16 chữ), bạn xin mở rộng ra toàn bộ 2.846 chữ. Lần này không thể dùng công cụ tra web từng chữ một như với 16 chữ mẫu; cần một script thật. nom_chunom_lookup.py được viết theo khuôn của nom_hv_lookup.py: yêu cầu HTTP trực tiếp, có nghỉ giữa các lần hỏi, có thử lại, có chữ canh gác để phát hiện bị chặn. Ghi chép Sach_Chu_Nom\_NomUnicode_Process.md kể lại một bước đáng học: trước khi viết một biểu thức chính quy nào, mã HTML thật của một trang chunom.org (chữ 固, có) được tải về và đọc trọn. Dù vậy, hai lỗi vẫn lộ ra ngay ở các mẻ chạy thử nhỏ (5, 8, 10, 30 chữ): trang nào có âm đọc thứ hai thì có một dạng HTML khác, nên phần nghĩa bị trả rỗng (đúng ở 娘 nàng/nương và 𠊚 ngài/người); và ô nhãn IPA có thêm một thuộc tính style mà biểu thức đã ngầm bỏ qua. Cả hai được bắt bằng cách mở tệp CSV kết quả ra xem từng cột, chứ không phải bằng cách tin rằng "script chạy không báo lỗi". Ngày 28 tháng 9, cả 2.846 chữ đã có dữ liệu, sau 68 mẻ 40 chữ, chỉ hai lần lỗi máy chủ thoáng qua.

Từ dự án này rút ra một nguyên tắc quan trọng cho mọi việc đọc Nôm về sau. Chunom.org ghi âm chính của 𠊚 là ngài, âm người chỉ là âm phụ. Nhưng trong Kiều 1870, chữ này xuất hiện 190 lần, đọc người, và chưa lần nào đọc ngài. Chữ 命 được đọc mình 100 lần và mệnh 15 lần: cùng một mặt chữ vừa mượn âm vừa giữ nghĩa trong cùng một tác phẩm. Từ đó nguyên tắc được viết thẳng vào phần ghi chú tự sinh của bảng: khi một từ điển ngoài và cách dùng trong chính văn bản khác nhau, cách dùng trong văn bản là trọng tài. Một từ điển nói chữ này có thể đọc ra sao; chỉ văn bản nói nó đã được đọc ra sao.

Cùng thời gian, bạn hỏi một câu rất đúng người học: có tách được một chữ Nôm thành phần chỉ âm và phần chỉ ý, như các bài học chữ Nho vẫn làm, không? Ví dụ núi = 山 + 内? Câu trả lời được kiểm bằng dữ liệu thật trong Sach_Chu_Nom\_KieuSpinoffs_KeHoach.md: chữ núi trong Kiều là 𡶀, Unihan ghi nguồn Việt Nam duy nhất và bộ 山 cộng 4 nét, cơ sở IDS ghi ⿱山内. Đúng như bạn đoán. Cơ sở dữ liệu IDS phủ 95 phần trăm chữ Nôm trong Kiều; cấu trúc trái-phải chiếm 61 phần trăm, trên-dưới 21 phần trăm. Thành phần đứng đầu hay gặp nhất là 口 (187 lần), và hóa ra trong nhiều chữ Nôm, 口 không mang nghĩa "miệng" mà chỉ là một dấu quy ước: "chữ này đọc theo âm Việt".

Việc phân loại chữ mượn cũng làm lộ thêm hai bài học. Bài học thứ nhất là một lỗi có sẵn trong bộ đệm dùng chung: khi một chữ Hán có nhiều âm, bộ đệm chỉ giữ phần trước dấu phẩy đầu tiên (chữ 内 có âm "nạp, nội" nhưng chỉ còn "nạp,"). Đo ra 1.482 trên 3.873 chữ (38 phần trăm) bị cắt cụt kiểu này. Lỗi được sửa tại nguồn, rồi chạy lại toàn bộ dây chuyền theo đúng thứ tự phụ thuộc. Bài học thứ hai đáng nhớ hơn. Khi chia chữ mượn thành "mượn nguyên" (âm và nghĩa Hán đều khớp) và "mượn âm" (chỉ âm gần), một lần soát tay 15 chữ "mượn nguyên" tần số cao nhất cho thấy 7 trên 15 chữ có nghĩa Hán chẳng liên quan gì: 茹 nhà (nghĩa Hán: ăn), 欺 khi (lừa dối), 埃 ai (bụi), 朱 cho (màu son), 兜 đâu (mũ trụ). Một hư từ tiếng Việt thông dụng sẽ tình cờ trùng âm Hán-Việt với một chữ nào đó trong hàng nghìn chữ, bất kể người viết có ý mượn nghĩa hay không. Máy so được chuỗi âm, nhưng chưa đọc được ý câu.

6. Từ bảng chữ đến sách học: 600 rồi 1.800 chữ

Từ dữ liệu ấy, bạn quay lại mục đích tự học. Tháng 9 năm 2026, thư mục HanNom600_CauTao\ ra đời: một bảng 600 chữ dùng nhiều nhất trong Kiều, ưu tiên Nôm, xếp sao cho thành phần đứng trước chữ ghép (học bao và nhị trước rồi mới học chữ ghép từ hai chữ ấy). Tỷ lệ 1 Hán : 3 Nôm ban đầu được bạn nới ngay giữa chừng: "wishful thinking, not a rigid requirement", cốt là học được nhiều Nôm nhất. Kết quả là 232 chữ Nôm tự tạo, 248 chữ Nôm mượn Hán và 120 thành phần. Hai quyển nữa nối theo, rồi cả ba gộp thành HanNom1800_TheoNet.md/.html: 1.800 chữ xếp theo số nét từ ít đến nhiều.

Điểm ngoặt của giai đoạn này là một nguồn tìm thấy dọc đường: chỉ mục 8.066 chữ của từ điển Thiều Chửu, nằm sẵn trong một dự án khác trên máy. Trước đó, âm Hán-Việt lấy từ trường kVietnamese của Unihan, và trường này không đáng tin để phân loại: với nhiều chữ nó ghi thẳng âm Nôm chứ không phải âm Hán-Việt (朱 ghi "cho", 呐 ghi "nói"). Dùng nó để so thì những chữ mượn âm điển hình lại hóa ra "đọc đúng âm Hán". Chỉ mục Thiều Chửu chữa được đúng chỗ đó. Về số nét, kTotalStrokes của Unihan phủ 1.748 chữ; 51 chữ nằm ở vùng dùng riêng của font Nôm Na Tống phải đếm bằng tay, và được đánh dấu †. Một phép tự kiểm cũng được chạy: cộng số nét các thành phần rồi so với số nét Unihan ghi cho cả chữ, khớp tuyệt đối 92 phần trăm.

Bảng 1.800 chữ này về sau trở thành một trong ba cuốn từ điển mà bạn đem đi đọc những văn bản khác. Lúc làm ra nó, không ai biết điều đó.

7. Quốc Âm Thư Mục và Kim Vân Kiều Tân Tập: học đọc chữ viết tay

Song song với các bảng chữ, tháng 9 năm 2026 còn có hai dự án đọc trực tiếp từ ảnh. Dự án thứ nhất là Quoc Am Thu Muc\: một cuốn sổ mục lục sách Nôm chép tay, 84 trang, gắn với học giả Maurice Durand của Viện Viễn Đông Bác Cổ. Mỗi mục có một số hiệu, một dòng chữ Hán/Nôm và một dòng quốc ngữ viết tay bên dưới. Công việc chia thành 15 đợt, mỗi đợt 5 trang, mỗi đợt xong thì dừng hẳn để bạn xóa ngữ cảnh rồi gõ lệnh làm đợt sau. Ngày 25 tháng 9, trang 76, trang cuối có chữ, được chép xong, cùng 114 ghi chú về những điều bất thường: dấu đỏ, mục trùng, một mục duy nhất bị gạch bỏ bằng một nét đỏ liền (số 491, 六祖壇經). Từ 713 mục ấy, một bảng đối chiếu (QuocAmThuMuc_DoiChieu.html) ghép từng chữ với từng tiếng, cùng phép kiểm số chữ bằng số tiếng, và giữ lại dữ liệu dưới dạng JSON để dùng tiếp. Một bài nghiên cứu 9.298 từ về chính Maurice Durand cũng được viết từ nguồn web, có kèm mục lục bộ sưu tập Durand tại Yale.

Có một chi tiết lúc ấy không ai để ý. Trong bảng sắp theo số hiệu (QuocAmThuMuc_SapTheoSo.md), mục A.B. 1 là 大南國史演歌 — Đại nam quốc sử diễn ca. Ba tuần sau, chính cuốn sách này sẽ là văn bản cuối cùng của hành trình.

Dự án thứ hai là Kim Vân Kiều Tân Tập - From Yale's Maurice Durand Collection\: tám trang đầu của một bản Kiều khắc in thuộc bộ sưu tập Durand. Ở đây ra đời một quy ước mà bạn đặt ra sau khi xem bốn trang đầu: chữ Hán/Nôm xếp thành lưới thẳng hàng đúng như bản gốc, âm quốc ngữ nhỏ ở góc dưới bên phải mỗi ô, và không bao giờ để dấu "?" thay cho một chữ chưa chắc. Thay vào đó, đối chiếu năm bản Kiều trên trang của VNPF (1866, 1870, 1871, 1872, 1902) để chọn chữ theo đa số. Kiều có đặc ân mà phần lớn văn bản Nôm không có: nhiều bản in, có người phiên âm sẵn, đánh số câu. Công cụ so sánh từng câu của VNPF không còn gọi được bằng lệnh tự động, nên máy phải tìm cách khác: tải từng trang 20 câu của mỗi bản qua một trường ẩn trong biểu mẫu. Một cảnh báo được ghi lại: số trang của các bản không khớp nhau, không được suy từ bản này sang bản kia. Bộ khung lưới chữ của tám trang này (KVKTT_Page008.html) về sau thành mẫu trình bày cho gần như mọi trang Nôm khác.

8. Taberd 1838: chín trăm trang từ điển, mỗi lần một trang

Nếu Kiều là cuốn từ điển rút từ một tác phẩm, thì Dictionarium Anamitico-Latinum là cuốn từ điển thật sự. Bản in năm 1838 tại Serampore (Ấn Độ) của Jean-Louis Taberd, dựa trên bản thảo năm 1772 của Pigneau de Béhaine, là một cuốn từ điển Việt-La tinh mà mỗi mục từ đều có chữ Hán/Nôm đứng đầu, rồi chữ quốc ngữ, rồi nghĩa La tinh, rồi hàng chục từ ghép bên dưới. Nó có một vị trí đặc biệt mà chính bạn đã nhấn mạnh khi đặt viết bài về hai tác giả: đó là một nguồn hiếm hoi đối chiếu có hệ thống giữa chữ Nôm và chữ quốc ngữ vào đầu thế kỷ mười chín, trước khi chữ quốc ngữ thay chỗ hẳn.

Câu chuyện tải sách đã là một bài học. Trình xem trang của VNPF có nút "trang cuối" trỏ tới trang

  1. Máy không tin ngay con số đó, vì một dự án khác trước đây đã dạy rằng ranh giới bề ngoài của một

trang web có thể sai. Thử tải trực tiếp các trang 688, 689, 700: đều là ảnh thật, khác nhau. Thử cách quãng mỗi 100 trang: 800 và 900 vẫn thật; 1000, 1500, 2000 trả về cùng một tệp 280 byte, tức ảnh giữ chỗ "không có trang này". Tìm nhị phân giữa 900 và 1000 ra đúng ranh giới: 917 là trang thật cuối cùng. Ghi chép ấy nằm trong Dictionarium Anamitico-Latinum\_Taberd_Download_Process.md. Rồi ngày 14 tháng 9, bạn tìm được một bản quét của Google rõ hơn, 918 trang, và cả dự án chuyển sang đọc từ thư mục Dictionarium_Anamitico_Latinum from Google\Dictionarium_AnamiticoLatinum_JPGS\. Sáu trang đã làm từ nguồn cũ được đổi tên và đọc lại cho khớp số trang mới; ở vài chỗ, ảnh nét hơn lật ngược những chữ trước đó đánh dấu † (ví dụ chữ 碎 được xác nhận là tôi).

Phương pháp được chốt trên trang thứ hai làm thử (_Taberd_FullPipeline_Process.md). Lời nhắc của bạn lúc ấy là một danh sách năm điều: chuyển một ảnh thành cặp md/html; nếu có ghi chú thì thêm một cặp chú thích; thêm một cặp có bản dịch Việt và Anh; "The loop stops for 1 min when a jpg is done"; và làm thử trang 70 trước. Trang đầu tiên ấy cần nhiều lần phóng ảnh để hiểu một quy ước mà trang mẫu chưa có: dấu 一 in ngay trong cột Hán/Nôm để thay cho chữ đầu mục. Quy ước đó được viết vào _Taberd_Transcription_Method.md để những lần sau áp dụng thẳng, không phải suy lại từ điểm ảnh. Ngân sách khởi điểm đặt ở 5 trang, vì một trang thật sự tốn công.

Kế hoạch _Taberd_OCR_Plan.md có một chi tiết thiết kế đáng chú ý: sự tồn tại của tệp trên đĩa chính là bảng tiến độ. Một bảng đánh dấu 900 dòng mà lần nào cũng phải đọc và ghi lại chỉ để lật một ô là lãng phí; thay vào đó, trang kế tiếp là số trang nhỏ nhất có ảnh mà chưa có tệp eng_taberd-NNNN.md. Nhờ vậy một lần bị ngắt giữa chừng không bao giờ làm lệch trạng thái. Sau mỗi trang, máy in ra một dòng chữ đỏ nhấp nháy OPPORTUNITY TO CLEAR!!!! sau bốn mươi dòng trống, rồi chờ 60 giây, để bạn kịp gõ /clear xóa ngữ cảnh trước khi trang sau bắt đầu. Đó là một cách giữ ngân sách rất thực tế: mỗi trang được đọc trong một ngữ cảnh sạch, chỉ mang theo vài dòng cuối của trang trước để biết mục từ nào đang tràn sang.

Có một quy tắc khác chi phối toàn bộ hành trình, và nó có lịch sử riêng. Ngày 14 tháng 7 năm 2026, trong một dự án khác, bốn tác tử phụ chạy song song đã đốt sạch hạn mức của tài khoản giữa chừng: cả bốn đều hỏng, hai tác tử chỉ để lại tệp rỗng, và công việc phải làm lại từ đầu. Từ đó trong thư mục làm việc có một luật cứng: không dùng tác tử phụ, mọi việc làm thẳng trong cuộc trò chuyện chính, chia thành nhiều lượt tuần tự nếu lớn. Taberd là ví dụ rõ nhất cho cách làm đó: không có "một lệnh làm hết cả cuốn", chỉ có một trang mỗi lần, lặp lại vài trăm lần.

Đến ngày 11 tháng 10, dòng chính đã làm đến trang 185, còn 734 trang. Bạn xin thêm ba điểm xuất phát. Thế là có bốn "làn" không chồng lên nhau: làn chính 185–299, làn 300 (300–499), làn 500 (500–699), làn 700 (700–918), mỗi làn một lệnh ngắn kiểu anamitico 300. Vì các cửa sổ tách rời, không làn nào có thể ghi đè tệp của làn khác; đến cuối mỗi làn thì kiểm "đường may" giữa hai làn kề nhau. Bản kiểm kê cùng ngày (_Taberd_Inventory_2026-10-11.md) ghi 481 trên 857 trang thân từ điển đã xong, tăng 87 trang chỉ trong một ngày. Các làn cũng gặp những thay đổi bố cục mà không ai đoán trước: từ khoảng trang 682 cuốn sách chuyển sang danh sách tên cây thuốc một khối; quanh trang 722 là bảng 214 bộ thủ Tabula Clavium Characterum Anamiticorum in năm cột; quanh trang 786 là phụ lục Hán-Việt ba cột. Quy tắc được viết lại: bản HTML phải giống bản in, số cột theo ảnh quét chứ không theo một khuôn cố định, và không được suy bố cục từ số trang.

Ngày 16 tháng 10, làn 700 đóng lại. 852 trang thân từ điển, từ trang 62 đến trang 913, đều có bản phiên âm kèm dịch Việt và Anh; năm trang cuối 914–918 là trang trắng, được ghi vào sổ cần xem lại. Phần lời tựa (45 trang, mỗi trang ba bản: La tinh, dịch Anh, dịch Việt) đã làm từ trước.

Cùng ngày, mọi trang được rút thành một bảng tra duy nhất: Taberd_NomEntries.md/.html, nay nằm trong Nguồn Chữ Nôm + Tự Điển\Dictionarium Anamitico-Latinum As One Book\. Bản đầu chỉ lấy trang 62–681 và bỏ sót 3.894 từ ghép, vì các khối tiếp nối (mục từ tràn từ cột hay trang trước, không có chữ đầu mục) không được gắn vào mục trước. Bạn muốn tất cả, "không chỉ vài chữ đầu", nên bản hai viết lại bộ trích thành một script lưu sẵn (build_taberd_nomentries.py) và đọc cả 852 trang. Kết quả: 48.603 dòng, gồm 6.088 mục chính (3.754 chữ khác nhau), 24.754 từ ghép, 1.017 tên cây, 5.947 dòng bảng bộ thủ, 6.853 dòng phụ lục Hán-Việt, 3.888 dòng chỉ mục. Có 9.058 từ ghép mang dấu †. Bảng còn có một ô "Dịch thử": dán một chuỗi chữ vào, nó khớp từ ghép dài nhất rồi đến chữ đơn, và hiện âm quốc ngữ. Đó là lần đầu cuốn từ điển được dùng như một công cụ đọc chứ không chỉ để tra.

9. Chuyện đời xưa: khi cuốn sách tự làm từ điển cho chính nó

Trong lúc Taberd chạy, một thử nghiệm khác cho ra kết quả quan trọng nhất về phương pháp. Ngày 11 tháng 10, cuốn Chuyện đời xưa (Contes plaisants annamites) do Abel des Michels xuất bản được tách thành ảnh 600 DPI; phần chữ Nôm nằm ở các trang 195–261, khoảng 66 trang. Một phát hiện bố cục sớm: khác với Kiều, các cột chữ ở đây đọc từ trái sang phải, đã kiểm bằng mạch văn ở trang 197 và 201. Lần đọc đầu chép xong cả 66 trang, mỗi chữ kèm một âm đoán từ hình chữ và câu chung quanh, và khi không chắc thì lùi về âm Hán-Việt.

Rồi bạn nhận ra vấn đề: nhiều chữ đang được đọc bằng âm Hán-Việt ở chỗ văn bản đang nói tiếng Việt. Bạn yêu cầu đọc lại "đúng tiếng Nôm của nó", lấy bảng 1.800 chữ Kiều làm tham chiếu. Bài luận Abel Des Michels\ChuyenDoiXua_Nom\CDX_NomLexicon_Essay_VI.md và ghi chép đi kèm kể lại chuyện gì xảy ra tiếp, và đây là đoạn đáng kể nhất của cả hành trình.

Cách đầu tiên là tra bảng Kiều. Nó chỉ phủ 52 phần trăm số ô. Nửa còn lại vắng mặt theo một kiểu có ý nghĩa: 昆 con, 翁 ông, 吶 nói, 趁 đi, 祕 lấy: những từ thường nhất của văn xuôi đối thoại, mà một tiểu thuyết lục bát không dùng theo cùng cách. Tệ hơn, quy tắc "đổi sang âm Nôm của bảng" có khi biến chữ đúng thành sai: 吏 trong văn xuôi này là lại, bảng Kiều chỉ ghi dễ.

Bước ngoặt đến từ việc đọc lại lời tựa đã chép của chính cuốn sách: sách có "trois parties", gồm văn bản chữ La tinh (tức quốc ngữ) của hai mươi truyện đầu, bản dịch Pháp, và "la transcription des vingt premiers morceaux en caractères figuratifs". Nghĩa là phần chữ Nôm chính là cùng một văn bản với phần quốc ngữ, viết lại. Cuốn sách tự mang theo đáp án.

Một phép đếm xác nhận điều ấy. Cắt dòng chữ Nôm ở mỗi đề mục 傳次 thành 20 truyện, cắt phần quốc ngữ theo từng truyện, rồi đếm. Truyện I: 497 ô Nôm, 491 âm tiết. Truyện IX: 892 và 885. Mọi truyện đều lệch vài ô, đúng bằng ba chữ "truyện thứ N" ở đầu mỗi truyện bên phía Nôm cộng vài chỗ nhỏ. Có một báo động giả đáng nhớ: lần đếm đầu báo truyện I chỉ có 195 âm tiết, lệch 60 phần trăm. Nguyên nhân là một biểu thức chính quy xóa một chú thích tiếng Pháp đã chạy tràn đến hết truyện. Bài học được ghi lại: khi một trong hai mươi mục lệch dữ dội, hãy nghi đoạn mã trước khi nghi dữ liệu.

Rồi đến phép so khớp: thuật toán Needleman–Wunsch, quen thuộc trong sinh học để gióng hai chuỗi gen, được dùng để gióng chuỗi ô Nôm với chuỗi âm tiết quốc ngữ của từng truyện. Âm tiết trùng với lời đoán trước được cộng điểm cao nhất, âm tiết nằm trong danh sách âm tham chiếu được cộng ít hơn, trùng khi bỏ dấu thanh được thêm một điểm, còn bỏ trống thì bị trừ. Kết quả: 8.365 trên 8.502 ô (98,4 phần trăm) được ghép với một âm tiết quốc ngữ thật do chính Des Michels in ra. Từ đó rút ra một từ điển nhỏ: 1.296 chữ, 1.941 cặp chữ–âm, hiện ở Nguồn Chữ Nôm + Tự Điển\Chyện Đời Xưa - Abel Des Michels\CDX_NomDictionary.md.

Con số cay đắng nhất nằm ở phép so sánh ngược: lời đoán đầu của máy chỉ trùng với âm thật ở 38 phần trăm số ô. 48 phần trăm là một từ khác, 14 phần trăm để trống. Các lỗi hay gặp nhất cũng là các lỗi dạy được nhiều nhất: 奴 đọc nô, thật ra là nó (123 lần); 古 cổ, thật ra là có (87 lần); 至 chí, thật ra là vậy (71 lần); 未 vị, thật ra là rồi (53 lần); 濫 lạm, thật ra là làm. Mỗi dòng là cùng một hiện tượng: một máy biết chữ Hán thấy một âm Hán-Việt hoàn toàn hợp lý, và không có cách nào biết nó sai, cho đến khi có một văn bản song song để đối chiếu.

Từ điển Chuyện đời xưa mang một nhãn quý mà hai từ điển kia không có: cột "Loại" phân biệt H (chữ Hán đọc đúng âm Hán-Việt), GT (giả tá, chữ Hán mượn ghi một tiếng Việt khác) và N (Nôm tự tạo). Vì được rút từ văn xuôi hằng ngày, nó có đúng những hư từ, đại từ, loại từ mà bảng Kiều thiếu. Nó sẽ là từ điển đầu tiên được tra khi đọc những văn bản lạ về sau.

10. Lục Vân Tiên: một bản Nôm in ngược, và những chữ thay thế đáng ngờ

Hai ngày sau, ngày 13 tháng 10, đến lượt cuốn thứ hai của Des Michels: Les Poèmes de l'Annam: Lục Vân Tiên ca diễn (Paris, 1883), một bản quét Google 466 trang, tách thành ảnh khoảng 600 DPI (573 MB). Bản kế hoạch Lục_Vân_Tiên\_LucVanTien_ParallelLanes_Plan.md mở đầu bằng một khảo sát đọc thật từng phần chứ không suy từ sách khác: đây không phải từ điển mà là một ấn bản phê bình song ngữ (trang chẵn quốc ngữ, trang lẻ dịch Pháp), có một bản Nôm phụ ở cuối. Và bản Nôm ấy in ngược: vì chữ Nôm đọc từ phải sang trái, trang 1 của bản Nôm nằm ở tệp 456, trang cuối ở tệp 352. Ba làn được dựng theo đúng mẫu Taberd: làn 1 và 2 đi xuôi qua phần quốc ngữ và tiếng Pháp, làn 3 đi ngược qua phần Nôm.

Đến ngày 17 tháng 10, cả ba làn đã xong. Bản dựng cuối cùng (_LucVanTien_NomQuocNgu_Process.md) dùng lại đúng phép kiểm của chương trình VB.NET năm trước: với mỗi câu, số chữ Nôm phải bằng số âm tiết quốc ngữ, 6 cho câu lục, 8 cho câu bát. Trên 2.258 câu, chỉ 2 câu lệch. Với 2.256 câu còn lại, mỗi chữ Nôm được ghép với đúng âm tiết cùng vị trí. Đây là một phép kiểm rất mạnh: nó không chứng minh từng chữ đọc đúng, nhưng chứng minh không có chỗ nào bị trượt, thiếu hay thừa một chữ.

Đợt soát lại (_LucVanTien_ReviewAssessment.md) mở đầu bằng một lời tự sửa đáng ghi: con số ban đầu "202 ô chưa nhận ra" là đếm sai, vì nó đếm cả ký hiệu trong phần ghi chú; đếm đúng theo ô trong bảng thì có 76 ô □ trên 15.805 ô chữ. Mỗi ô □ được cắt riêng ra từ ảnh quét, ghép 18 ô thành một bảng ảnh có nhãn, và đọc một lần mỗi ô. 41 ô đọc lại được, 35 ô vẫn để □. Còn lại khoảng 4.927 ô †, và ghi chép nói thẳng một điều quan trọng: phần lớn dấu † không phải lỗi đọc, mà là những chữ Nôm riêng được ghép với âm quốc ngữ in ở trang đối diện, tức một sự đối chiếu theo vị trí chứ không phải một bằng chứng đọc độc lập. Một phát hiện nhỏ: ở câu 1043, ảnh quét in 結 (kết), khác với chữ đặng trong bản quốc ngữ.

Từ bản Nôm–quốc ngữ ấy, một từ điển thứ tư ra đời: LVT_NomDict_TheoNet.md, 2.634 chữ, 277 bài, theo đúng mẫu bảng 1.800 chữ Kiều. Nguyên tắc bạn đặt ra rất rõ: phần Nôm (chữ nào, đọc ra âm nào, ở câu nào) chỉ lấy từ sách; phần Hán (số nét, âm Hán-Việt, nghĩa gốc) thì được dùng nguồn ngoài. 876 chữ không có âm Hán-Việt trong các nguồn thì để trống, không tự điền. Và việc dựng từ điển tự nó lại là một máy dò lỗi: chữ 乚, một nét, có 36 âm khác nhau trong 47 lượt. Không thể có chuyện một chữ nhỏ như vậy ghi 36 tiếng; gần như chắc chắn lần đọc trước đã dùng nó làm chữ "thay thế" cho những chữ khó. 45 chữ trông như giản thể (nổi nhất là 庄, 118 lần) cũng được đánh dấu để soát với ảnh, vì có thể là dạng thật trong bản in, cũng có thể là lỗi gõ. Thống kê không chỉ để mô tả văn bản; nó còn làm lộ ra những chỗ người đọc, dù là người hay máy, đã đi tắt.

11. Bốn cuốn từ điển, gom vào một chỗ

Đến giữa tháng 10, bạn gom những thứ dùng được vào một thư mục chung, Nguồn Chữ Nôm + Tự Điển\:

Từ điển Rút từ Cỡ Điểm mạnh Điểm yếu
CDX_NomDictionary.md Chuyện đời xưa, gióng với quốc ngữ của Des Michels 1.296 chữ, 1.941 cặp văn xuôi hằng ngày; có nhãn H / GT / N nhỏ; chỉ một văn bản
Taberd_NomEntries.md từ điển Taberd 1838, 852 trang 48.603 dòng rất lớn; có từ ghép; có âm Hán-Việt ở phụ lục liệt kê cả âm Hán-Việt lẫn âm Nôm, không phân biệt
HanNom1800_TheoNet.html Truyện Kiều 1870 1.800 chữ có số lần xuất hiện; có cấu tạo; có câu thơ thật ngôn ngữ thơ, thiếu hư từ văn xuôi
TuDienDongAmTruyenKieu.html Truyện Kiều 1870 2.377 âm, 3.657 cặp xếp theo âm, đủ mọi biến thể nghĩa mới phủ khoảng một phần tư

Bảng của Lục Vân Tiên đến sau, nên chưa được dùng trong bước đọc văn bản lạ kể dưới đây. Bốn cuốn này có một điểm chung đáng chú ý: không cuốn nào là một từ điển chữ Nôm "tổng quát". Mỗi cuốn là bằng chứng của một văn bản cụ thể về cách chữ đã được dùng. Đó vừa là sức mạnh vừa là giới hạn của chúng, như phần tiếp theo sẽ cho thấy.

12. Đem từ điển đi đọc văn bản lạ: một tấm hương ước, một trang Tam Tự Kinh, một tấm bia

Ngày 16 tháng 10, bạn bắt đầu bước mà cả hành trình hướng tới: đem các từ điển tự dựng đi đọc những văn bản không có bản quốc ngữ đi kèm. Nguồn ảnh là kho số của VNPF; một bản ghi các kho ảnh Nôm trên mạng được lập trước (Pictures From Nôm Foundation\Nom Image Sources\NomImageSources_Sources.md), với dấu ✔ cho trang đã thật sự mở ra đọc và dấu ○ cho trang chỉ thấy trong kết quả tìm kiếm.

Văn bản đầu tiên là một tờ văn tự lập từ đường của một chi họ Đinh, đề niên hiệu 維新柒年 (Duy Tân năm thứ bảy, tức 1913). Bản đầu (Pictures\DongTuDinhToc_001_QuocNgu.md) đọc chữ, phiên âm Hán-Việt và dịch ra một đoạn văn mạch lạc. Rồi bạn nhìn bản dịch và thấy một điều không ổn. Lời nhắc của bạn còn nguyên văn trong tệp quy trình bản hai:

in "…\Chữ Nôm\Pictures\DongTuDinhToc_001_QuocNgu.html", it seem to me that all the words are in Han, not some Hán some Nôm. Somehow you translate it really well, but I need you to create another 4 files, with the main one now have a second paragraph of Việt words with the content of the second grid table. The Nôm words now use "…\CDX_NomDictionary.md" as its main souce, if it could not find, then look for it in "…\Taberd_NomEntries.md", then on "…\HanNom1800_TheoNet.html". So the foramt of this new second paragrph would be like: 維 Duy (duy) 新 tân (tân), etc. that way it's easier for me to see if this is a Nôm document, or just pure Hán document.



Endangered Archives Programme: "太平省建昌府東汭社 丁族乙支立祠 Thái Bình tỉnh Kiến Xương phủ Đông Nhuế xã Đinh tộc Ất chi lập từ. [Written Agreement Record of the Đinh Family, Ất Branch of Thái Bình Province]. [維新柒年五月弍拾日 [1913] Duy Tân thất niên...https://eap.bl.uk/collection/EAP219-1-22/search

Lời nhắc ấy định nghĩa phương pháp cho mọi trang sau: một đoạn thứ hai liệt kê từng chữ theo thứ tự đọc, dạng chữ · âm theo từ điển · (âm Hán-Việt), tra theo đúng thứ tự Chuyện đời xưa → Taberd → Kiều 1.800, và gắn nhãn nguồn nhỏ sau mỗi âm: CH (CDX, chữ Hán đọc đúng âm Hán), CN (CDX, Nôm mượn), T (chỉ có ở Taberd), K (chỉ có ở Kiều). Đặt hai âm cạnh nhau, người đọc nhìn một lượt sẽ thấy văn bản nghiêng về bên nào.

Kết quả tra cho tờ văn tự họ Đinh rất có giá trị, chính vì nó cho thấy cách không được đọc con số. Trong 111 vị trí chữ, 31 vị trí mang nhãn CN, tức từ điển Chuyện đời xưa ghi chữ ấy từng được mượn làm tiếng Việt. Nhưng ở đây 年 vẫn là niên chứ không phải nên, 日 là nhật chứ không phải nhựt, 至 là chí chứ không phải vậy, 未 là vị chứ không phải rồi. Không có một chữ Nôm tự tạo nào. Câu mở "飲河當思源,愛族莫忘祖" là cú pháp Hán thuần. Kết luận của bản hai (DongTuDinhToc_001_V2_Process.md) nói thẳng: con số "CN 31" không có nghĩa là 31 chữ được dùng như Nôm; nó chỉ nói các chữ ấy có thể được đọc như vậy ở một văn bản khác. Phép thử có nghĩa hơn là: một chữ mang nhãn CN mà nghĩa trong câu cũng buộc phải là nghĩa Nôm. Trong văn bản này không có chỗ nào như thế. Đây là Hán văn, và mắt bạn đã nhận ra điều đó trước khi từ điển xác nhận.

Văn bản thứ hai là trang đầu một bản Tam Tự Kinh diễn âm: kinh Hán ba chữ một câu, giải thành lời Nôm. Lần này kết quả khác hẳn. Trang có những chữ ghép khẩu (口 cộng một chữ khác) mà bài văn tự họ Đinh không có: 𠰺, 𢆥, 哴, 啼, 嚾. Các chữ mượn như 於 ở, 本 vốn, 得 được, 未 rồi, 歇 hết nằm đúng ở chỗ nối câu, nơi một bản diễn âm cần tiếng Việt. Nhưng ảnh chỉ có 700 × 632 điểm ảnh; 15 ô không nhận ra, và bản dịch chỉ dựng được khung ý. Ghi chép quy trình khép lại bằng một lời khuyên khiêm tốn: nếu có bản phiên âm đã công bố của trang này, hãy đối chiếu thay vì tin vào bản của máy.

Văn bản thứ ba là một tấm bia hậu thần ở Khúc Thủy. Ở đây có một chữ cho thấy rõ giới hạn của từ điển: chữ 欺 trong cụm lễ vật "雞欺金銀…". Cả ba nguồn đều chỉ biết 欺 là khi. Máy đọc nó là xôi† nhờ ngữ cảnh (gà, xôi, vàng bạc) và nhờ bản mô tả của VNPF, không nhờ từ điển nào cả, và ghi rõ điều đó trong tệp quy trình. Một từ điển rút từ Kiều và từ truyện cười không thể biết hết cách một làng ghi tên lễ vật trên đá.

13. Đại Nam quốc sử diễn ca: văn bản thử thách thật sự

Ngay sau đó, khoảng ngày 16–17 tháng 10, bạn đưa ra trang đầu của Đại Nam quốc sử diễn ca (大南國史演歌), bản mộc bản năm 1870 (Tự Đức thứ 23), nhà Trí Trung Đường tàng bản, số hiệu R.303 của Thư viện Quốc gia, mã NLVNPF-0102 của VNPF. Theo ghi chú của thư viện, đây là một bài thơ ban đầu khuyết danh, sau được Lê Ngô Cát và Phạm Đình Toái mở rộng, sửa chữa thành 2.054 câu, kể sử Việt từ thời Hồng Bàng đến Lê Chiêu Thống. Câu hỏi của bạn ngắn gọn: "How about this? Do the same 4 files and assess for me if this is Nôm." Và trong lúc máy đang làm, bạn gửi thêm một dòng:

do not look up the net on Đại Nam Quốc Sử Diễn Ca

Lời nhắc ấy biến một việc đọc thành một phép thử trung thực. Truyện Kiều có năm bản trên mạng để đối chiếu; Chuyện đời xưa và Lục Vân Tiên có quốc ngữ in sẵn bên cạnh. Ở đây, máy chỉ được dùng mắt, kiến thức của nó, và bốn cuốn từ điển. Nếu máy lén chép một bản phiên âm có sẵn, kết quả sẽ đẹp hơn nhưng chẳng chứng minh được gì về phương pháp.

Trang 1 hóa ra là bìa sách cộng một bài khảo về quốc hiệu, 國號通考. Kết luận trong Pictures From Nôm Foundation\Đại Nam Quốc Sử Diễn Ca\_backup\DaiNamQuocSuDienCa_001_Process.md: đây là Hán văn trọn vẹn. Cú pháp đọc xuôi thành văn ngôn, các hư từ là hư từ Hán (之, 也, 乃, 曰, 謂), không có chữ Nôm tự tạo nào. Một chi tiết hay: chữ 瞿 trong 大瞿越 (Đại Cồ Việt) không có trong cả ba từ điển. Âm Hán-Việt là cù, còn "Cồ" là cách người Việt đọc chữ Hán ấy bằng âm Việt, nhưng chữ viết vẫn là chữ Hán. Thống kê tra từ điển cũng được giải thích cẩn thận: 貉 hiện âm "cọp" vì Chuyện đời xưa từng mượn nó, nhưng ở đây là 甌貉, Âu Lạc; 改 hiện "gởi", nhưng ở đây là 改曰, "đổi là".

Trang 6 là trang có lục bát đầu tiên. Bạn viết: "Try this one, ih has the format of a lục bát." Ảnh cho thấy hai tầng: tầng trên là chú Hán chữ nhỏ, tầng dưới là 15 cột chữ lớn, mỗi cột là một cặp 6 chữ, một vòng tròn nhỏ ○ in sẵn, rồi 8 chữ. Bằng chứng Nôm lần này rất rõ, và đến từ đúng loại phép đếm mà bài văn tự họ Đinh đã dạy phải cẩn trọng: chữ 羅 (CDX: là) xuất hiện 5 lần trong lục bát và 0 lần trong chú Hán: "羅帝明" (là Đế Minh), "羅號貉龍" (là hiệu Lạc Long). Cụm 固戶鴻龐 đọc thành có họ Hồng Bàng, 次巴 là thứ ba. Một chữ mang nhãn CN không chứng minh gì; năm lần cùng một chữ chỉ xuất hiện ở tầng thơ, đúng ở vị trí hệ từ tiếng Việt, thì là bằng chứng. Kết luận: trang hỗn hợp, chú Hán ở trên, lục bát Nôm ở dưới.

Nhưng việc đọc thì còn rất xa mới xong. Ảnh chỉ có 700 × 627 điểm ảnh, mỗi chữ lục bát chỉ khoảng 16 điểm ảnh. Trong 368 ô chữ có 37 ô □, và rất nhiều dấu †. Có một lỗi tự sửa ngay trong lần đầu: chữ trong chú Hán đọc là "Sùng Lãm" (崇纜) sau khi lần đọc đầu nhầm thành "Lộc Tục", vì Lộc Tục đã xuất hiện hai cột trước với vai Kinh Dương Vương. Kiến thức lịch sử của máy giúp được chú Hán, nhưng phần thơ thì vẫn mờ.

Bạn đọc kết quả và đưa ra một nhận định mà máy không tự cho mình: "as I can already see you can provide reliable ocr, it's just the pics here is not good qualities." Bạn nới lời cấm tra mạng, nhưng chỉ cho việc tìm nguồn ảnh: "find all the sources now about Đại Nam Quốc Sử Diễn Ca, PDF of Nôm book… 4 files." Tệp quy trình ghi lại cách máy hiểu ranh giới ấy: được tìm xem có những nguồn ảnh nào, không được đọc nội dung bản phiên âm nào, kể cả hai trang bài giảng học đường tình cờ tìm thấy. Nó cũng ghi một câu nói thẳng: chữ "reliable" của bạn là hơi rộng lượng, vì trang 6 vẫn còn 37 ô □.

Cuộc tìm nguồn (DaiNamQuocSuDienCa_Sources.md) có một đoạn giống nghề thám tử. Kết quả tìm kiếm chỉ nhắc tới một mã khác, NLVNPF-0141 (bản chép tay R.267), không phải bản mộc bản của bạn. Số mục trên thư viện số của VNPF lại không trùng số NLVNPF. Máy mở thử vài mục để dựng ánh xạ (110 ra 0103-02, 130 ra 0118, 150 ra 0132, 178 ra 0141), từ đó đoán bản 0102 nằm quanh mục 106–109, rồi thử từng số: mục 108 chính là NLVNPF-0102. Trình xem trang có nút "View larger image", trỏ tới một bản ảnh lớn 2000 × 1793 điểm ảnh, gấp khoảng 2,9 lần mỗi chiều. Không có PDF nào của bản Nôm; nhưng 73 ảnh lớn thì tải được. Columbia chặn truy cập tự động, một thư viện đại học khác từ chối kết nối, Wikisource, Gallica và nhiều thư viện lớn khác không thấy gì. Tệp nguồn ghi rõ: "không thấy" chỉ là kết quả của vài lần tìm, không phải bằng chứng là họ không có.

Bạn trả lời "yes, please". Máy tải đủ 73 ảnh lớn, mỗi tệp so dung lượng thật với Content-Length của máy chủ, nghỉ một giây giữa các tệp (73/73 khớp, khoảng 55 MB), ghép thành một PDF chỉ có ảnh, DaiNamQuocSuDienCa_NLVNPF-0102_Large.pdf, rồi đọc lại trang 6. Mỗi chữ lục bát giờ khoảng 45 điểm ảnh thay vì 16. Số ô □ giảm từ 37 xuống 23. Và có những thay đổi làm cả cặp thơ hiện ra:

Chỗ Bản 1 (ảnh nhỏ) Bản 2 (ảnh lớn)
Cặp 10, câu 8 整† 羅 □ 紅† □ 羅 涪† 陽 𡥵† 羅 祿 續 號 羅 涇 陽
Cặp 3, chữ 4 □ 境† (土 + 竟)
Cặp 7, chữ 7–8 □ 堯† 五† 嶺 胎† □ 梅 嶺
Cặp 14, chữ 5 □ 荒† (荒唐, "hoang đường")

Thay đổi lớn nhất ở cặp 10: câu tám chữ giờ đọc thành [Con] là Lộc Tục, hiệu là Kinh Dương, khớp đúng với chú Hán ở tầng trên. Cặp 3 thì đọc được trọn:

Nam Giao là cõi Ly minh, / Thiên thư định phận rành rành từ sơ.

Đó là câu thơ đầu tiên trong hành trình mà máy đọc ra trọn vẹn từ một văn bản Nôm không có quốc ngữ đi kèm, không chép từ một bản phiên âm nào. Từng chữ trong câu ấy đi qua đúng con đường mà hành trình đã xây: 羅 là là nhờ Chuyện đời xưa; 伶伶 là rành rành (CDX và Taberd đều ghi âm Nôm gần rình cho 伶, rồi cụm láy và vần lục bát chốt lại); 自初 là từ sơ. Một câu thơ mười bốn chữ, và phía sau nó là ba cuốn sách thế kỷ mười chín được gióng chữ một.

Bạn xem bản hai và nói: "what you have currently in page 6 new version is perfect!" Rồi bạn đề nghị hai điều cùng lúc. Một là bố cục: "leave a gap in the table between the top Han-Nom, the 6 words, then the 8 words. Better yet, make it with frames looking like the original." Hai là phương pháp: "this is can be a loop right? to save tokens." Câu thứ hai là một kết luận rút từ cả mùa thu: những gì đã chạy được cho Taberd, Lục Vân Tiên, Quốc Âm Thư Mục đều chạy theo vòng lặp mỗi lần một trang, và cuốn sách 70 trang này nên đi theo cùng con đường.

Vòng lặp ấy được dựng trong _DNQSDC_OCR_Plan.md với một bước tiết kiệm mới. Thay vì mỗi trang viết tay bốn tệp, người đọc ảnh chỉ viết một tệp nguồn gọn src\NNN.src.txt: chữ theo cột từ phải sang trái, dấu ○ ngăn câu sáu và câu tám, dấu † và □, một mục cho các câu quốc ngữ, một mục cho chú Hán, một mục cho những chữ "đọc đôi". Script tools\build_page.py làm phần còn lại: tra ba từ điển, chọn âm Hán-Việt theo thứ tự Thiều Chửu → Taberd → CDX, dựng khung giống bản gốc, dựng lưới, dựng từng cặp lục bát thành một khối nổi bật, rồi ghi bốn tệp. Âm Hán-Việt đã duyệt được lưu vào tools\hv_overrides.txt (223 chữ từ trang 6) và dùng lại cho mọi trang sau. Một trang bị ngắt giữa chừng chỉ mất tối đa chính trang đó.

Khảo sát trước khi chạy cũng sửa một giả định của chính máy. Máy đã đoán các trang 2–5 là phần thơ; thật ra chúng là bảng niên hiệu và mục lục biên niên. Trang 2 hóa ra là mục lục (大南史歌目錄), từ Hồng Bàng đến nhà Đinh, chứ không phải bảng niên hiệu như kế hoạch ghi. Thư viện ghi "70 trang" nhưng có 73 tệp ảnh. Đến lúc bài này được viết, bảng tiến độ ghi 4 trên 70 trang đã xong (1, 2, 3, 6): trang 1 làm lại từ ảnh lớn với 0 ô □ (chữ 國† sau 文郎 sửa thành 蜀, Thục An Dương Vương), trang 3 có 248 ô, 0 ô □, 2 chữ †. Phần lớn cuốn sách còn ở phía trước.

14. Từ điển cho biết chữ có thể là gì, không cho biết chữ đang là gì

Nhìn lại đoạn thứ hai của trang 6, người đọc sẽ thấy những âm lạ đứng cạnh âm Hán-Việt: 國 đồ (quốc), 明 mừng (minh), 貉 cọp (lạc), 女 nữa (nữ), 得 người (đắc), 子 tử, 曰 viết. Đây không phải lỗi tra. Đó là âm mà Chuyện đời xưa gặp nhiều nhất cho chữ ấy. Trong một bài diễn ca sử, 國 vẫn là quốc, 明 vẫn là minh. Một cách trình bày hai âm cạnh nhau cho bạn thấy ngay khoảng cách giữa "chữ này đã từng được mượn làm gì" và "chữ này ở đây là gì".

Chữ 𡥵 ở cặp 10 và cặp 12 là ví dụ đẹp nhất. Hình chữ trên ảnh là 子 cộng 昆; nghĩa trong câu gần như chắc chắn là con ("Sinh con là hiệu Lạc Long trị vị"). Nhưng CDX ghi chữ ấy là vợ. Hoặc máy chọn nhầm mã Unicode cho một mặt chữ gần giống, hoặc cuốn truyện cười của Des Michels dùng chữ ấy theo một cách khác, và tệp quy trình ghi cả hai khả năng chứ không chọn bừa một. Ngược lại, chữ 巴 ở cặp 6 được CDX ghi âm đứng đầu là "bơ", nhưng Taberd ghi "Ba", và nghĩa "thứ ba" chốt lại. Hai từ điển, hai nhân chứng, và đôi khi nhân chứng thứ hai mới đúng.

Bài học này là trung tâm của cả hành trình, và nó đã xuất hiện ở mọi chặng dưới những hình thức khác nhau: 𠊚 ngài hay người, 茹 nhà hay "ăn", 古 cổ hay có, 年 niên hay nên. Một từ điển rút từ văn bản A là bằng chứng về văn bản A. Đem nó sang văn bản B, nó chỉ còn là một danh sách ứng viên. Quyết định cuối cùng cần ít nhất một trong ba thứ: một văn bản song song (như quốc ngữ của Des Michels), nhiều bản đối chiếu (như năm bản Kiều), hoặc một ràng buộc của chính văn bản: luật lục bát 6 + 8, một chữ láy, một tên riêng đã biết từ chú Hán ở tầng trên. Đại Nam quốc sử diễn ca có ràng buộc thứ ba rất mạnh, vì mỗi trang tự mang một bản tóm tắt bằng Hán văn của chính những câu thơ bên dưới.

15. Những điều hành trình này dạy về việc dùng AI

Thứ nhất, máy đọc hình được, nhưng độ tự tin phải được đếm. Qua mọi dự án, quy ước † cho chữ chưa chắc và □ cho chữ không nhận ra (không bao giờ dùng "?") cho phép đo chất lượng thay vì cảm nhận nó. Lục Vân Tiên có 35 ô □ trên 15.805 ô; trang 6 Đại Nam quốc sử diễn ca giảm từ 37 xuống 23 khi ảnh tốt hơn. Những con số ấy nói rõ hơn mọi lời khẳng định. Và khi máy đếm sai chính dấu của mình (202 so với 76 ở Lục Vân Tiên), lời tự sửa được ghi ở đầu tệp, không giấu ở cuối.

Thứ hai, phép kiểm đơn giản nhất là phép kiểm mạnh nhất. "Số chữ Nôm bằng số âm tiết" xuất hiện từ chương trình VB.NET năm 2025, quay lại trong bảng đối chiếu Quốc Âm Thư Mục, trong phép gióng Chuyện đời xưa, trong 2.258 câu Lục Vân Tiên. Nó không chứng minh từng chữ đúng, nhưng chứng minh không có gì bị trượt, và một văn bản không trượt thì có thể gióng chữ một.

Thứ ba, chỗ AI dễ sai nhất là chỗ nó muốn làm cho kết quả trông trọn vẹn. Câu thơ bịa ngày 31 tháng 12 năm 2025, chữ 乚 bị dùng làm chữ thay thế cho 36 tiếng, các âm Hán-Việt hợp lý mà sai ở 62 phần trăm ô Chuyện đời xưa, tất cả đều cùng một loại: điền vào chỗ trống bằng thứ trông đúng. Các quy tắc của dự án, như không bao giờ trích câu ngoài dữ liệu, không placeholder, không tra mạng khi được bảo không tra, ghi rõ chỗ nào dựa vào kiến thức riêng của máy, đều là cách chặn đúng thói quen này.

Thứ tư, những lỗi quan trọng nhất đều do người bắt. "You said 3 instances, but you only show 2." Chữ Đ nhảy sang chữ D. "It seem to me that all the words are in Han." Cái lề tràn bên trái của khung trang 6. Máy viết ra những ghi chép quy trình rất kỹ, nhưng ở mọi khúc ngoặt, chính con mắt của người học chữ là thứ nói "chỗ này không ổn". Một hệ thống tốt không thay con mắt ấy; nó làm cho con mắt ấy thấy được nhiều hơn, nhanh hơn, như đoạn thứ hai hai-âm-cạnh-nhau đã làm cho văn tự họ Đinh.

Thứ năm, ngân sách là một ràng buộc thiết kế, không phải một chuyện phụ. Vòng lặp mỗi lần một trang, dòng chữ nhấp nháy mời /clear, 60 giây nghỉ, tệp trên đĩa làm bảng tiến độ, các làn không chồng nhau, luật cấm tác tử phụ sau lần bốn tác tử đốt hạn mức tháng 7: tất cả đều để một người với một tài khoản cá nhân làm được việc mà trước đây cần cả một nhóm. 852 trang Taberd không được làm trong một lệnh; chúng được làm trong vài trăm lệnh nhỏ, mỗi lệnh dừng ở một trạng thái an toàn.

Thứ sáu, mỗi sản phẩm phụ là nguyên liệu cho bước sau. Bảng 1.800 chữ làm để tự học thành tham chiếu cho Chuyện đời xưa. Chuyện đời xưa thành từ điển đầu tiên để đọc văn bản lạ. Taberd làm vì yêu cuốn sách thành nhân chứng thứ hai. Lối trình bày lưới của tám trang Kiều Yale thành mẫu cho mọi trang. Ngay cả cuốn sổ mục lục Quốc Âm Thư Mục cũng đã ghi tên Đại Nam quốc sử diễn ca ở dòng số 1, ba tuần trước khi cuốn sách ấy được mở ra.

16. Còn lại gì

Bảng tiến độ của Đại Nam quốc sử diễn ca còn 66 hàng ☐. Trang 4–5 là bảng niên hiệu, từ trang 7 trở đi là lục bát với chú Hán, và mỗi trang sẽ thêm chữ vào kho âm Hán-Việt đã duyệt. Ngoài ra còn những việc mà chính các tệp quy trình đã đề nghị:

  1. Đối chiếu với bản chép tay R.267 (NLVNPF-0141, mục 178 của thư viện VNPF), một bản viết tay khác của cùng tác phẩm, cho những câu mà bản in mờ. Hai bản độc lập của cùng một bài thơ là thứ gần nhất với một văn bản song song mà cuốn sách này có.
  2. Quy tắc hai nhân chứng: đọc các bảng Taberd thành từng cặp (chuỗi chữ, chuỗi âm) rồi dùng làm nhân chứng thứ hai bên cạnh Chuyện đời xưa; một âm được cả hai ủng hộ thì đáng tin hơn hẳn một âm chỉ một nguồn ghi.
  3. Dùng luật lục bát làm ràng buộc: chữ thứ sáu câu lục vần với chữ thứ sáu câu bát, chữ thứ tám câu bát vần với chữ thứ sáu câu lục kế tiếp. Với một chữ có nhiều âm ứng viên, luật vần thu hẹp lựa chọn mà không cần một bản phiên âm nào.
  4. Đưa từ điển Lục Vân Tiên vào thứ tự tra, vì nó là thơ lục bát thế kỷ mười chín, gần thể loại của Đại Nam quốc sử diễn ca hơn cả truyện cười văn xuôi lẫn từ điển truyền giáo.
  5. Soát lại các chữ bị đánh dấu ⚠ trong các từ điển (乚 với 36 âm, các chữ trông như giản thể), vì một từ điển có lỗi sẽ truyền lỗi sang mọi văn bản được đọc bằng nó.
  6. Cuối cùng, đối chiếu với một bản phiên âm đã công bố, khi cả cuốn đã đọc xong bằng phương pháp này. Lời cấm tra mạng có giá trị cho đến lúc ấy, vì nó giữ cho phép thử trung thực. Sau đó, một bản phiên âm của các nhà nghiên cứu sẽ cho biết phương pháp này đúng đến đâu, và sai ở những loại chữ nào.

17. Một bài thơ sử của triều Nguyễn, đọc bằng chữ của người ngoại quốc

Có một điều hơi trớ trêu ở cuối hành trình này. Để đọc một bài thơ sử khắc in dưới triều Tự Đức, viết để người Việt nhớ lịch sử nước mình bằng thơ lục bát và chữ Nôm, máy đã phải học chữ từ ba nguồn mà không nguồn nào là sách sử: một cuốn từ điển của các nhà truyền giáo người Pháp in ở Ấn Độ năm 1838, một tập truyện cười dân gian do một nhà Đông phương học ở Paris xuất bản, và một tác phẩm thơ tình mà chính người Việt đã chép đi chép lại hàng trăm năm. Câu "Nam Giao là cõi Ly minh" được đọc ra nhờ một chữ 羅 mà Des Michels in cạnh chữ là trong hai mươi truyện cười của ông, nhờ một chữ 伶 mà cả Chuyện đời xưa lẫn Taberd đều ghi bằng một âm Nôm, và nhờ một luật thơ sáu tám mà Nguyễn Du và những người soạn diễn ca cùng tuân theo.

Có lẽ đó cũng là cách chữ Nôm đã sống suốt mấy thế kỷ: không có một cơ quan chuẩn hóa nào, không có một cuốn từ điển nào được coi là chính thức, chỉ có những văn bản dạy nhau. Người chép Kiều học từ người chép trước; người khắc bản học từ người viết tay; nhà truyền giáo học từ thầy đồ; nhà Đông phương học học từ người kể chuyện. Một máy tính năm 2026 rốt cuộc cũng học theo đúng con đường ấy: từng văn bản một, từng chữ khớp với từng âm, với một người học chữ ngồi bên cạnh hỏi "sao chỗ này chỉ có hai câu", "sao chữ Đ nhảy sang chữ D", "sao tôi thấy toàn chữ Hán". Từ điển không đọc thay cho người. Nhưng ba cuốn từ điển dựng từ những cuốn sách cũ, đặt cạnh một trang mộc bản 156 năm tuổi, đã đủ để một câu thơ lâu nay chỉ người chuyên môn đọc được hiện ra lại bằng chữ quốc ngữ:

Nam Giao là cõi Ly minh, / Thiên thư định phận rành rành từ sơ.


Written by: Claude AI.

Curator/Editor: Học Trò.

Mọi trích dẫn đều phải ghi chú với dòng trên và nói rõ bài khảo luận được lấy từ trang https://hoctroviet.blogspot.com/