VietASI.comVietASI
Tiếng Việt khó với máy ở đâu

Phục hồi dấu tiếng Việt: vì sao “ban dang o dau” có hàng chục cách hiểu

Phục hồi dấu là cho máy thêm dấu vào văn bản gõ không dấu. Vì sao khó, các cách máy làm, chỗ hay sai như tên riêng, và quy trình dùng an toàn trong công việc.

Young man sitting on a plastic stool at a Hanoi street tea stall typing on a phone with both thumbs, screen turned away and blurred, motorbikes passing behind

Phục hồi dấu tiếng Việt là bài toán cho máy nhận một văn bản gõ không dấu như “ban dang o dau” rồi trả lại bản có dấu đúng: “bạn đang ở đâu”. Người Việt làm việc này gần như vô thức, nhưng với máy thì khó, vì mỗi âm tiết không dấu ứng với nhiều âm tiết có dấu. Chữ “ban” có thể là ban, bàn, bán, bản, bạn, bận, bẩn, bần, bấn và vài chữ nữa. Nhân lên cho cả câu, số tổ hợp có thể lên tới hàng nghìn, và máy phải chọn đúng một.

Các công cụ hiện nay, từ mô hình thống kê đến mô hình ngôn ngữ lớn, làm khá tốt với câu thông dụng có đủ ngữ cảnh, nhưng vẫn sai ở tên riêng, câu ngắn, từ hiếm và văn bản chuyên ngành. Điều quan trọng với người dùng: bản phục hồi dấu là bản đoán, không phải bản gốc. Trong hồ sơ có tên người, số liệu, địa chỉ, mọi chữ đã phục hồi đều cần người soát.

Văn bản không dấu đến từ đâu và vì sao vẫn còn nhiều

Thói quen gõ không dấu có lịch sử dài. Thời điện thoại bàn phím số và tin nhắn tính tiền theo ký tự, gõ không dấu vừa nhanh vừa rẻ vì tin nhắn có dấu bị tính theo bảng mã tốn chỗ hơn. Thời đầu mạng, nhiều máy và phần mềm thư không hiển thị được chữ Việt, nên người ta quen viết không dấu. Thói quen ấy còn kéo dài tới nay ở một bộ phận người dùng, nhất là khi nhắn nhanh.

Ngoài thói quen cá nhân, văn bản không dấu còn sinh ra từ hệ thống. Nhiều phần mềm cũ, máy in hoá đơn, tổng đài tin nhắn, cơ sở dữ liệu dựng từ lâu chỉ nhận ký tự ASCII nên bỏ dấu khi lưu. Tên miền, tên tệp, địa chỉ thư điện tử, tên in trên một số loại thẻ hay giấy tờ quốc tế cũng là chữ không dấu. Khi gom dữ liệu từ các nguồn này, ta có cả kho tên người, địa chỉ, nội dung giao dịch không dấu.

Với AI, văn bản không dấu xuất hiện ở hai đầu. Ở đầu vào, người dùng gõ câu hỏi không dấu cho chatbot, hệ thống tổng đài nhận tin nhắn không dấu, kho bình luận cần phân tích có một phần không dấu. Ở đầu ra, đôi khi cần chuyển dữ liệu cũ không dấu thành có dấu để hiển thị cho đẹp, để tìm kiếm chính xác hơn, hoặc để đưa vào huấn luyện một mô hình mới.

Vì vậy phục hồi dấu không phải bài toán đồ chơi. Nó nằm trong chuỗi xử lý của nhiều sản phẩm thật: bộ gõ trên điện thoại gợi ý chữ có dấu khi người dùng gõ thiếu, hệ thống chăm sóc khách hàng đọc tin nhắn, công cụ làm sạch danh sách khách hàng, và các dự án số hoá dữ liệu cũ.

Một âm tiết không dấu có thể là bao nhiêu chữ

Tiếng Việt có sáu thanh (ngang, huyền, sắc, hỏi, ngã, nặng) và các nguyên âm biến thể (a, ă, â; e, ê; o, ô, ơ; u, ư) cùng chữ đ. Bỏ hết dấu, những khác biệt này dồn về một chuỗi. Bảng dưới là vài ví dụ thường gặp, không liệt kê hết.

Không dấuMột số chữ có dấu ứng với nóVí dụ câu nhập nhằng
mama, mà, má, mả, mã, mạ“ma ma” có thể là “mà má”, “má mà”, “mã mạ”…
banban, bàn, bán, bản, bạn, bận, bẩn, bần, bấn, bắn“ban ban” có thể là “bạn bận”, “bàn bẩn”, “bán bản”
daudau, dâu, dầu, dấu, đau, đâu, đầu, đậu, dẫu“dau dau” có thể là “đau đầu”, “dầu đậu”, “đâu đâu”
muamua, múa, mùa, mưa, mửa“mua mua” có thể là “múa mưa”, “mùa mưa”, “mua múa”
tientiên, tiến, tiền, tiện“tien tien” có thể là “tiền tiện”, “tiên tiến”

Nhìn bảng sẽ thấy vì sao ngữ cảnh quyết định tất cả. “Mua mua” đứng một mình thì vô phương; đặt vào câu “mua mua nay den som” thì gần như chắc là “mùa mưa năm nay đến sớm”. Máy phục hồi dấu tốt là máy biết tận dụng ngữ cảnh xa, không chỉ hai chữ liền kề.

Chữ “d” không dấu còn mang hai khả năng “d” và “đ”, một phân biệt mà nhiều người Việt cũng hay nhầm khi gõ vội. Đây là nguồn lỗi riêng: “dang” có thể là “đang”, “dáng”, “dàng”, “đàng”, “đáng”, mỗi chữ lại thuộc một nhóm từ khác nhau.

Máy phục hồi dấu bằng những cách nào

Tra từ điển và đếm tần suất. Cách đơn giản nhất: với mỗi âm tiết không dấu, chọn chữ có dấu xuất hiện nhiều nhất trong kho văn bản. “dang” gần như luôn thành “đang”. Cách này đúng ở phần lớn chữ thông dụng nhưng sai ngay khi gặp câu ít gặp, vì nó không nhìn ngữ cảnh.

Mô hình n-gram. Đếm xác suất các cụm hai, ba âm tiết đi với nhau, rồi tìm chuỗi có dấu có tổng xác suất cao nhất cho cả câu. Cách này dùng được ngữ cảnh gần và từng là nền của nhiều bộ gõ có tính năng tự thêm dấu.

Gán nhãn chuỗi bằng mạng nơ-ron. Coi mỗi ký tự hoặc âm tiết là một vị trí, mô hình đoán nhãn “thêm dấu gì” cho từng vị trí, dựa trên cả câu. Dữ liệu huấn luyện dễ kiếm: lấy văn bản có dấu, tự bỏ dấu đi, rồi dạy máy đoán ngược lại. Đây là lý do bài toán này có nhiều công trình trong cộng đồng xử lý tiếng Việt.

Coi như một bài dịch. Xem “tiếng Việt không dấu” là một ngôn ngữ nguồn và “tiếng Việt có dấu” là ngôn ngữ đích, dùng kiến trúc dịch máy để chuyển. Cách này tận dụng được ngữ cảnh xa trong cả đoạn văn.

Nhờ mô hình ngôn ngữ lớn. Đưa đoạn không dấu vào chatbot và yêu cầu thêm dấu. Mô hình lớn có kiến thức về thế giới nên đoán tốt hơn trong câu có tên địa danh nổi tiếng hay chủ đề phổ biến. Nhưng nó cũng có thói quen “sửa” câu cho hay hơn: đổi từ, thêm từ, bỏ từ. Với bài toán chỉ cần thêm dấu, đó là lỗi chứ không phải tính năng.

Chỗ máy hay sai nhất

Dù công cụ nào, có vài nhóm lỗi lặp đi lặp lại. Biết trước những chỗ này giúp người soát tập trung đúng nơi thay vì đọc lại từng chữ.

  • Tên người. “Hung” có thể là Hùng, Hưng, Hứng; “Thuy” có thể là Thuỷ, Thuý, Thùy; “Lan” và “Lân”. Không có ngữ cảnh nào giúp đoán tên một người cụ thể. Đây là lỗi nguy hiểm nhất vì sai tên trên hồ sơ, hợp đồng, thư mời là sai thật.
  • Địa danh nhỏ. Tên thôn, xóm, đường, tên các phường xã mới sau sắp xếp năm 2025 ít xuất hiện trong dữ liệu, máy hay “sửa” về tên phổ biến hơn trông na ná.
  • Câu rất ngắn. Tin nhắn ba bốn chữ như “mai ban ko” không đủ ngữ cảnh: “mai bận không” hay “mai bán không” đều hợp lý.
  • Thuật ngữ chuyên ngành. Văn bản y khoa, luật, kỹ thuật có từ hiếm; máy chọn từ thông dụng hơn, làm câu sai nghĩa mà vẫn đọc trôi.
  • Từ địa phương và tiếng lóng. Từ như “mô”, “răng”, “rứa” hay cách viết mạng xã hội dễ bị máy đổi thành từ phổ thông gần giống.
  • Số và mã. Mã đơn hàng, biển số, mã sản phẩm có chữ cái đôi khi bị máy “thêm dấu” thành chữ thường, nhất là khi dùng chatbot không được dặn kỹ.

Điểm chung của các lỗi trên: câu sau khi phục hồi vẫn đọc trôi chảy, không có dấu hiệu nào báo sai. Người đọc lướt dễ chấp nhận. Đó là lý do bản phục hồi dấu luôn cần được đánh dấu rõ là bản do máy tạo, ít nhất trong hệ thống nội bộ.

Quy trình dùng AI phục hồi dấu an toàn trong công việc

Ví dụ giả định: một cửa hàng có danh sách 3.000 khách hàng cũ lưu không dấu, muốn chuyển sang có dấu để in thiệp và nhắn tin chúc mừng. Quy trình hợp lý gồm các bước sau.

  1. Tách cột: phần tên người, địa chỉ, ghi chú để riêng. Tên người KHÔNG giao cho máy tự quyết; chỉ cho máy gợi ý kèm mức độ chắc chắn.
  2. Che hoặc bỏ thông tin nhạy cảm (số điện thoại, số giấy tờ) trước khi đưa dữ liệu vào bất kỳ công cụ trực tuyến nào; ưu tiên công cụ chạy nội bộ với dữ liệu khách hàng.
  3. Với phần ghi chú, địa chỉ: dùng công cụ phục hồi dấu hoặc chatbot với câu lệnh chặt, ví dụ: “Thêm dấu tiếng Việt cho các dòng dưới đây. Chỉ thêm dấu, không đổi, không thêm, không bỏ bất kỳ chữ nào. Giữ nguyên chữ số, mã và chữ viết hoa. Dòng nào có chữ không chắc, đánh dấu [?] ngay sau chữ đó.”
  4. So độ dài và số chữ của mỗi dòng trước và sau: nếu số âm tiết thay đổi, máy đã sửa câu chứ không chỉ thêm dấu, cần xem lại.
  5. Soát tay toàn bộ tên người và địa danh, ưu tiên các dòng có dấu [?]. Với tên không chắc, giữ bản không dấu hoặc hỏi lại khách khi có dịp, không đoán.
  6. Lưu cả bản gốc không dấu và bản phục hồi, ghi chú cột nào do máy tạo, để sau này có thể truy lại.

Với văn bản chỉ để đọc nội bộ như bình luận khách hàng cần phân tích, có thể nới lỏng: chạy phục hồi dấu hàng loạt rồi kiểm ngẫu nhiên một mẫu. Ví dụ giả định: soát 50 dòng ngẫu nhiên, nếu sai quá vài dòng ở chỗ ảnh hưởng nghĩa thì cần đổi công cụ hoặc thêm bước soát.

Chiều ngược lại: khi nào nên gõ có dấu, khi nào bỏ dấu là đúng

Với chatbot, gõ có dấu luôn cho kết quả đáng tin hơn. Mô hình đọc được câu không dấu, nhưng phải đoán thêm một lớp, và mỗi lần đoán là một lần có thể sai. Câu hỏi không dấu cũng thường bị cắt thành token khác với câu có dấu, khiến mô hình liên hệ kém hơn với kiến thức nó đã học từ văn bản có dấu. Nếu bắt buộc gõ không dấu, hãy viết câu đầy đủ, tránh viết tắt, để mô hình có ngữ cảnh.

Có những chỗ bỏ dấu là đúng chuẩn: tên miền, tên tệp dùng chung giữa nhiều hệ thống, đường dẫn trang web, mã định danh. Ở đây bỏ dấu giúp tránh lỗi mã ký tự. Quy tắc tốt là bỏ dấu một cách nhất quán, ví dụ “đ” thành “d”, và giữ bản có dấu ở chỗ hiển thị cho người đọc.

Với tìm kiếm, cách làm phổ biến là “gấp dấu”: hệ thống lưu song song bản không dấu của mỗi văn bản để người gõ không dấu vẫn tìm được, nhưng xếp hạng ưu tiên kết quả khớp đúng dấu. Nhờ vậy người gõ “ha noi” vẫn ra “Hà Nội”, còn người gõ đúng “Hà Nội” không bị lẫn kết quả “hà nơi” hay “hạ nội”.

Khi chuẩn bị dữ liệu để huấn luyện hoặc đánh giá AI tiếng Việt, đừng trộn văn bản không dấu vào kho có dấu mà không đánh dấu. Một mô hình học từ kho lẫn lộn có thể sinh ra câu nửa có dấu nửa không, lỗi trông rất kém chuyên nghiệp với người đọc Việt.

Câu hỏi thường gặp

Bộ gõ trên điện thoại tự thêm dấu có phải là phục hồi dấu không?

Có, đó là một dạng phục hồi dấu kết hợp gợi ý từ: bộ gõ đoán chữ có dấu từ những gì người dùng gõ và ngữ cảnh trước đó, rồi đưa ra lựa chọn. Khác biệt là người dùng thấy và chọn ngay, nên lỗi được sửa tại chỗ, còn phục hồi dấu hàng loạt thì không có người chọn từng chữ.

Chatbot thêm dấu có chính xác hơn công cụ chuyên dụng không?

Không phải lúc nào cũng vậy. Chatbot đoán tốt nhờ hiểu ngữ cảnh rộng, nhưng hay tự sửa câu, đổi từ, bỏ từ. Công cụ chuyên dụng chỉ thêm dấu nên dễ kiểm hơn. Với dữ liệu quan trọng, nên thử cả hai trên cùng một mẫu nhỏ và đếm lỗi trước khi chọn.

Có thể phục hồi đúng tên người từ bản không dấu không?

Chỉ có thể đoán, không thể chắc. Một tên không dấu như “Thuy” ứng với nhiều tên có dấu đều phổ biến, và không có ngữ cảnh nào cho biết đúng tên của người đó. Với hồ sơ chính thức, tên phải lấy từ nguồn gốc như giấy tờ hoặc hỏi lại chính người đó, không dựa vào máy.

Văn bản không dấu có ảnh hưởng tới bộ dữ liệu huấn luyện AI không?

Có. Nếu kho dữ liệu trộn văn bản có dấu và không dấu mà không đánh dấu, mô hình có thể học cả hai kiểu và đôi khi sinh ra câu lẫn lộn. Thường người làm dữ liệu sẽ lọc riêng văn bản không dấu, hoặc phục hồi dấu rồi đánh dấu là dữ liệu đã qua xử lý.

Làm sao đo một công cụ phục hồi dấu tốt hay dở?

Cách phổ biến: lấy một đoạn văn bản có dấu chuẩn, tự bỏ dấu, đưa cho công cụ phục hồi rồi so với bản gốc, tính tỷ lệ âm tiết đúng. Nên thử trên đúng loại văn bản sẽ dùng, như tin nhắn, địa chỉ hay văn bản chuyên ngành, vì kết quả trên báo chí thường cao hơn thực tế.

Gõ không dấu khi hỏi chatbot có làm câu trả lời kém đi không?

Thường có, nhất là với câu ngắn, câu có tên riêng hoặc thuật ngữ. Mô hình phải đoán dấu trước khi hiểu câu, và có thể hiểu sai ngay từ bước đó. Nếu chỉ gõ được không dấu, hãy viết câu đầy đủ ý, tránh viết tắt và đọc kỹ câu trả lời xem máy có hiểu đúng câu hỏi không.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
Gọi ngay 0926 138 138