Không chỉ ngữ pháp bão táp, mà từ vựng tiếng Việt cũng xứng tiếng phong ba.
Bởi vì từ vựng chúng ta không có ranh giới hình thái, khiến cho bất cứ ai muốn xóa đi một âm tiết cũng phải thấy chùn tay.
Trong quá trình số hóa thư viện cá nhân và hiệu đính chú giải các cổ thư yêu thích, tôi thường phải làm một công đoạn không tránh được gọi là sửa lỗi đánh máy, sửa lỗi chính tả…
Công đoạn này, qua nhiều năm tháng, đem lại một thu hoạch là nửa vạn macro và một danh sách 2700 từ tiếng Việt dễ sai nhất, mà đứng đầu là “chắc chắn” (hay gõ sai thành chắc chắc hoặc chắn chắn), hành lang (hàng lang) và khoảnh khắc (khoảng khắc).
Cứ mở một bản thảo mới, trước tiên tôi sẽ chạy VBA định dạng (sửa quy cách bỏ dấu tiếng Việt và dấu câu, sửa -y thành -i cho đúng luật), sau đó thả văn bản vào excel để nó chạy soát 2700 từ dễ sai kia.
Thời gian chạy trên excel khá dài, đôi khi làm treo máy, khó mà tự động hóa toàn phần, càng không thể đa luồng, vì excel không tự tải hết văn bản, phải ngồi đấy cầm tay chỉ việc, mở từng sheet một và kéo qua cho các hàm đọc hết thì mới nghiệm thu được. Dù thế vẫn tiết kiệm thời gian công sức hơn là lụi cụi sửa tay từng bản thảo một như truyền thống, thường phải mất vài ngày đến vài tuần.
Về sau quen python (do ảnh hưởng từ một cái FB status của La Thu về chuyện ẻm học ngôn ngữ lập trình) thì tôi bỏ excel để dùng python, vì regex bắt lỗi khá chuẩn, chương trình chạy thần tốc, tiện sửa sang bổ sung, và gần như tự động. Với python, nếu không quá khó tính thì một văn bản tầm 2-3M kí tự chỉ 10 giây là morasse xong xuôi tinh tươm và có thể cho vào thư viện truyền đời luôn được.
Nhưng thời gian trôi đi, tôi trở nên khó ưa, khiến cho sự đúng chính tả hay đánh máy hoàn hảo của văn bản không còn đủ thỏa mãn nữa. Mỗi lần đọc sách là mỗi lần tôi ghét bỏ một số từ nào đấy, bởi tôi nhận ra mỗi người viết/dịch hay dùng với tần suất quá cao một vài từ hoặc một vài cách diễn đạt nhất định, khiến cho chúng nó vốn không lỗi gì mà vì xuất hiện nhiều lại thành chướng mắt. Có văn bản tầm 70K chữ nhưng chứa đến 7K từ “hình như”, văn bản khác tầm 100K chữ nhưng dùng đến 15K từ “khẽ”. Như thế không xóa bớt thì để làm gì.
Tuy nhiên ở đây, python đã gặp ranh giới của nó.
Khi tôi bảo xóa từ “khẽ”, nó hăm hở làm tốt ở các câu.
Hắn khẽ đưa tay ra. → Hắn đưa tay ra.
Bà ta khẽ mở hộp. → Bà ta mở hộp.
Cô khẽ hớp ngụm bia. → Cô hớp ngụm bia.
Nhưng với các câu sau thì nó phạm lỗi tày trời.
Giai điệu khe ngân vang trong không gian tăm tối.
Âm thanh khàng từ hàng xóm vọng sang.
Ở đây regex chết trân trước một vấn đề thâm căn cố đế có tính lịch sử văn hóa dân tộc bản chất thói quen, đó là tiếng Việt không biến đổi hình thái từ như tiếng Anh. Regex sẽ không bao giờ xóa nhầm discreet với discreetly hay discreetness. Nhưng nó hoàn toàn lạc lõng vô vọng thất thần lẻ loi hoang mang trầm cảm giữa rừng “khẽ” vì không xác định được đây là phó từ hay tính từ hay danh từ, đi solo hay có đôi có cặp.
Tính chất không biến hình, không có ranh giới từ rõ rệt, lại còn nhiều từ đồng âm của tiếng Việt khiến cho việc xử lý chính tả, thay cụm từ, nhận dạng ý nghĩa bằng regex nan giải hơn nhiều so với tiếng Anh, dù cùng là văn tự Latin.
Chính tôi đã từng vỡ mồm khi sửa hàng loạt “hồi thần’ thành “hoàn hồn”.
Nghe hỏi, hắn hồi thần đáp. → Nghe hỏi, hắn hoàn hồn đáp. ✓
Họ quyết định triệu hồi thần rắn. → Họ quyết định triệu hoàn hồn rắn. ✗
hay “thực ra” thành “thật ra”
Nói mới nhớ thực ra tôi có một cái. → Nói mới nhớ thật ra tôi có một cái. ✓
Họ vận chuyển lương thực ra Bắc. → Họ vận chuyển lương thật ra Bắc. ✗
Cho nên các phần mềm soát lỗi tiếng Việt tới giờ vẫn không đi đến đâu, cơ bản là bởi chúng nó không xác định nổi điểm đầu và điểm cuối của một từ.
Cơ chế sửa chính tả của máy (phần mềm) có thể chia làm mấy loại.
Level A. Phụ thuộc hoàn toàn vào từ điển (trước thế kỉ 21): gặp từ, máy lập tức tra từ điển, có là đúng, không có là sai. Đây cũng là cơ chế đọc của một số người Việt bây giờ, rất chi là tự giới hạn.
Level B. Phán đoán ngữ cảnh (từ giữa thập niên 2000 trở đi): máy tích hợp xác suất thống kê, không chỉ nhìn riêng từ cần kiểm tra mà nhìn rộng ra 1-5 từ quanh nó. Ví dụ
Thế thì sẽ đi xuống mồ hôi.
“mồ hôi” có trong từ điển, nên bước đầu, máy không báo lỗi.
Nhưng cụm “đi xuống mồ hôi” hầu như không bao giờ xuất hiện trong muôn vàn câu đời sống mà Google/Yahoo/Bing linh tinh có thể thu thập được, còn “đi xuống mồ thôi” lại tồn tại. Phần mềm tính toán xác suất và so sánh, đánh dấu “hôi” là đáng ngờ, đồng thời đưa gợi í “thôi”. Trực quan ở MS Word và Google Docs.
Level C. Ngôn ngữ lớn, với sự xuất hiện của trí tuệ nhân tạo. Trong lĩnh vực biên tập, nó kết hợp từ điển, thống kê, rà quét cả câu, thậm chí cả đoạn rồi còn dự đoán trước từ tiếp theo phải là gì, nên phát hiện lỗi sai hiệu quả hơn nhiều.
Giai đoạn trước tôi đã thử xoay xở với việc xây dựng khung ngữ cảnh để chạy file kiểu như ConditionalRules.json, đại khái giống hàm if trong excel, chỉ ra từ nào gặp ngữ cảnh nào thì mới được xóa hoặc được thay, để tránh regex bắt nhầm từ. Nhưng soạn được gần gần chục file thi thấy con đường xa ngái, vì ngữ cảnh tiếng Việt với vô vàn hư từ dùng một cách vô tội vạ nào phải là cái mà một hai nghìn file này bao quát hết được.
Đang thở bằng cả mũi miệng thì AI giáng thế và tôi nghĩ đây chính là thời điểm chào đời cho một Grammarly Vietnam. Với từ vựng quyết định sinh tử bằng ngữ cảnh như từ vựng tiếng Việt, ta có thể nạp AI API vào python để nhận dạng ngữ nghĩa nâng cao khi biên tập. Ngoài ra với tinh thần bá đạo, à tự cường, tôi định ếm các bản thảo mình đã sửa vào AI để nó xem và sinh luật, khi nào workflow hoàn chỉnh thì nó có thể sửa văn bản tiếng Việt theo kiểu hành văn tôi thích, tức là giọng văn của tôi.