VietASI.comVietASI
Mô hình ngôn ngữ tiếng Việt

PhoBERT là gì: mô hình ngôn ngữ học riêng tiếng Việt và vì sao vẫn còn được dùng

PhoBERT là mô hình ngôn ngữ đơn ngữ tiếng Việt công bố năm 2020: học thế nào, vì sao phải tách từ trước, làm tốt việc gì và khác chatbot lớn ra sao.

Young Vietnamese engineer seen from behind at a desk in a quiet Hanoi office at dusk, laptop with blank screen, notebook and tea cup, warm lamp light, over-the-shoulder shot

PhoBERT là mô hình ngôn ngữ được huấn luyện trước chỉ bằng văn bản tiếng Việt, do VinAI Research công bố năm 2020 (bài báo của Nguyễn Quốc Đạt và Nguyễn Tuấn Anh tại Findings of EMNLP 2020). Nó thuộc họ mô hình mã hoá kiểu BERT, cụ thể là theo công thức huấn luyện RoBERTa, có hai cỡ base và large. PhoBERT không trò chuyện, không viết bài; nó biến một câu tiếng Việt thành các vectơ số mang nghĩa, rồi những vectơ ấy được dùng cho việc phân loại văn bản, nhận dạng tên riêng, gán nhãn từ loại, so khớp câu.

Điểm khiến PhoBERT khác phần lớn mô hình khác là nó học trên từ tiếng Việt đã được tách sẵn chứ không phải trên âm tiết thô, nên đầu vào phải đi qua bước tách từ trước. Bài này giải thích PhoBERT ra đời từ bài toán gì, nó học ra sao, cái bẫy tách từ, nó mạnh và yếu ở đâu, khác một chatbot lớn thế nào và khi nào một dự án hôm nay vẫn nên chọn nó. Cơ chế chung của mô hình ngôn ngữ đã có ở các trang phổ thông như AI Hiểu; ở đây chỉ bàn phần đặc thù tiếng Việt.

PhoBERT ra đời để giải bài toán gì

Trước năm 2020, người làm xử lý ngôn ngữ tiếng Việt muốn dùng sức mạnh của BERT thường phải mượn mô hình đa ngôn ngữ như mBERT của Google hoặc XLM-RoBERTa của Facebook AI. Những mô hình này học hàng chục đến hàng trăm thứ tiếng cùng lúc, và tiếng Việt chỉ là một phần nhỏ trong khối dữ liệu đó. Hệ quả là bộ từ vựng của chúng không được thiết kế quanh tiếng Việt, câu tiếng Việt bị cắt thành nhiều mảnh vụn hơn, và mô hình ít thấy các cách diễn đạt đặc thù Việt Nam.

Vấn đề thứ hai nằm ở bản chất chữ viết. Tiếng Việt viết cách nhau theo âm tiết, nhưng đơn vị mang nghĩa lại là từ, mà phần lớn mục từ trong từ điển tiếng Việt là từ nhiều âm tiết. "Sinh viên", "đại học", "nghiên cứu" đều là một từ nhưng ba lần cách. Mô hình đa ngôn ngữ coi khoảng trắng như ranh giới mạnh nên phải tự đoán lại chuyện âm tiết nào đi với âm tiết nào.

Nhóm tác giả PhoBERT đặt cược vào hai điều: chỉ học tiếng Việt để toàn bộ dung lượng mô hình dành cho một thứ tiếng, và tách từ trước khi học để mô hình nhìn thấy đơn vị có nghĩa ngay từ đầu. Theo bài báo, kết quả trên các nhiệm vụ chuẩn như gán nhãn từ loại, phân tích cú pháp phụ thuộc, nhận dạng thực thể và suy luận ngôn ngữ đều tốt hơn các mô hình đa ngôn ngữ cùng thời. Bài này không chép lại con số điểm, vì điểm trên bộ thử năm 2020 không nói nhiều về dự án của bạn hôm nay.

Cách PhoBERT học tiếng Việt

PhoBERT dùng mục tiêu che từ rồi đoán lại: lấy một câu, giấu ngẫu nhiên một phần các mảnh, bắt mô hình đoán mảnh bị giấu dựa vào cả bên trái lẫn bên phải. Làm việc này hàng trăm triệu lần trên văn bản thật, mô hình buộc phải nắm quan hệ giữa các từ: sau "uống" thường là đồ uống, "ông" và "bà" hay đi với "nội", "ngoại", một câu có "không" thì nghĩa đảo chiều. Vì nhìn cả hai phía của chỗ trống, kiểu mô hình này được gọi là mô hình mã hoá hai chiều, khác mô hình sinh chữ chỉ nhìn bên trái để viết tiếp.

Theo bài báo giới thiệu, dữ liệu huấn luyện khoảng 20GB văn bản, gồm Wikipedia tiếng Việt và một kho tin tức lớn đã lọc trùng. Toàn bộ được tách từ bằng RDRSegmenter, công cụ nằm trong bộ VnCoreNLP, sau đó mới cắt tiếp thành mảnh nhỏ bằng thuật toán BPE. Vì vậy một từ như "học_sinh" có thể là một mảnh nguyên, còn từ hiếm hơn bị cắt thành hai, ba mảnh.

Hai cỡ mô hình khác nhau ở số tầng và số tham số: bản base nhẹ, chạy được trên máy chủ thường, thậm chí trên CPU cho lưu lượng vừa phải; bản large chính xác hơn một chút nhưng nặng gấp mấy lần. Cả hai đều có giới hạn độ dài đầu vào ngắn, chỉ vài trăm mảnh, nên văn bản dài phải chia đoạn. Nếu cần con số chính xác về độ dài tối đa hay số tham số, hãy đọc thẻ mô hình trên kho chia sẻ chính thức thay vì tin trí nhớ của bài viết nào.

Cái bẫy tách từ: lỗi hay gặp nhất khi dùng PhoBERT

Vì PhoBERT học trên từ đã tách, đầu vào lúc dùng phải được tách bằng đúng kiểu đó. Quên bước này, mô hình vẫn chạy, không báo lỗi, nhưng chất lượng tụt mà nhiều người không hiểu vì sao. Bảng dưới là các tình huống hay gặp.

Tình huốngĐiều xảy raCách xử lý
Đưa thẳng câu "học sinh đi học" vàoMô hình thấy "học", "sinh" rời nhau, khác hẳn "học_sinh" lúc huấn luyệnChạy tách từ trước, giữ dấu gạch dưới nối âm tiết
Dùng công cụ tách từ khác lúc huấn luyệnRanh giới từ lệch, ví dụ "nhà_hàng_xóm" so với "nhà hàng_xóm"Dùng cùng RDRSegmenter như bài báo, hoặc thử và đo cả hai
Văn bản không dấu hoặc sai dấuCông cụ tách từ đoán sai, lỗi dồn sang mô hìnhKhôi phục dấu hoặc lọc trước, đo riêng phần văn bản này
Văn bản trộn mã Unicode dựng sẵn và tổ hợpCùng một chữ nhưng mã khác, thành mảnh lạChuẩn hoá về một dạng (thường là NFC) trước mọi bước
Câu mơ hồ kiểu "ông già đi nhanh quá"Có hai cách tách đều hợp lý, tách sai làm đổi nghĩaChấp nhận sai số nhỏ, kiểm các ca quan trọng bằng tay

Bài học thực tế: trong một dự án dùng PhoBERT, đường ống tiền xử lý quan trọng không kém mô hình. Nên viết một hàm duy nhất làm ba việc theo thứ tự cố định là chuẩn hoá Unicode, tách từ, cắt mảnh, rồi dùng đúng hàm ấy cho cả lúc tinh chỉnh lẫn lúc chạy thật. Hai đường ống lệch nhau là nguồn lỗi im lặng phổ biến nhất.

PhoBERT làm tốt việc gì

Phân loại văn bản ngắn và vừa. Gắn nhãn bình luận khen hay chê, xếp email vào phòng ban, nhận ra tin nhắn rác, phân loại phản ánh của khách hàng theo chủ đề. Với vài nghìn câu đã gán nhãn, bản base tinh chỉnh xong thường cho kết quả ổn định, rẻ và nhanh hơn nhiều so với gọi một mô hình lớn cho từng câu.

Nhận dạng thực thể có tên. Tìm tên người, tên tổ chức, địa danh, ngày tháng trong văn bản tiếng Việt. Đây là việc mà hiểu ranh giới từ giúp rất nhiều, vì "Hồ Chí Minh" có thể là tên người hoặc tên thành phố tuỳ ngữ cảnh, và "Bà Rịa" không phải là một người tên Rịa.

Gán nhãn từ loại và phân tích cú pháp. Những nhiệm vụ nền này ít người dùng cuối thấy, nhưng là bước trung gian của nhiều hệ thống trích xuất thông tin, kiểm tra chính tả, công cụ ngôn ngữ học.

So khớp và suy luận câu. Cho hai câu, quyết định câu sau có suy ra từ câu trước không, hay hai câu có cùng ý không. Dùng cho việc phát hiện câu hỏi trùng trong diễn đàn, ghép câu hỏi của khách với câu hỏi thường gặp có sẵn.

Làm nền cho mô hình nhúng. Một số mô hình nhúng câu tiếng Việt được xây bằng cách tinh chỉnh thêm từ PhoBERT để vectơ của hai câu cùng nghĩa nằm gần nhau. Nếu bạn gặp một mô hình như vậy, hãy đọc kỹ nó có yêu cầu tách từ đầu vào hay không.

Việc nó không làm. PhoBERT không sinh văn bản, không trả lời câu hỏi mở, không dịch, không tóm tắt theo kiểu viết lại. Muốn sinh chữ tiếng Việt cần mô hình giải mã hoặc mô hình mã hoá–giải mã; cùng nhóm tác giả về sau có công bố BARTpho cho các việc sinh chữ như tóm tắt.

PhoBERT và một chatbot lớn: khác nhau ở đâu

Câu hỏi hay gặp năm 2026: đã có chatbot lớn nói tiếng Việt khá trôi, còn cần PhoBERT không? Hai loại công cụ giải hai kiểu bài khác nhau, so theo tiêu chí sẽ rõ hơn.

Tiêu chíPhoBERT (tinh chỉnh)Mô hình ngôn ngữ lớn qua câu lệnh
Việc hợp nhấtMột nhiệm vụ hẹp, lặp lại hàng triệu lầnNhiều việc khác nhau, cần hiểu mở, sinh chữ
Dữ liệu cần cóVài nghìn mẫu gán nhãn cho nhiệm vụCó thể bắt đầu không cần mẫu, chỉ cần mô tả
Chạy ở đâuMáy chủ riêng, cả CPUThường gọi dịch vụ ngoài hoặc cần GPU mạnh
Chi phí mỗi lần gọiRất thấp sau khi đã huấn luyệnTính theo lượng chữ vào ra, cộng dồn nhanh
Độ ổn định đầu raLuôn trả về một nhãn trong danh sáchCó lúc trả lời lan man, sai định dạng
Dữ liệu rời khỏi tổ chứcKhông, nếu tự chạyCó, nếu dùng dịch vụ ngoài
Hiểu văn bản dài, lập luận nhiều bướcYếu, độ dài đầu vào ngắnMạnh hơn rõ

Cách làm thực dụng ở nhiều nhóm là kết hợp: dùng mô hình lớn để gán nhãn nháp cho dữ liệu, người kiểm và sửa, rồi tinh chỉnh PhoBERT trên bộ đã sửa để chạy hằng ngày. Mô hình lớn đóng vai người gán nhãn nhanh, PhoBERT đóng vai công nhân rẻ và đều tay.

Giới hạn cần biết trước khi chọn

Thứ nhất là văn phong. Phần lớn dữ liệu của PhoBERT là tin tức và Wikipedia, tức tiếng Việt viết chuẩn, có dấu, câu đầy đủ. Bình luận mạng xã hội với chữ không dấu, viết tắt kiểu "ko", "dc", "j", tiếng lóng thay đổi theo mùa thì mô hình ít gặp. Kết quả trên dữ liệu kiểu này thường kém hơn kỳ vọng; cách bù là tinh chỉnh trên dữ liệu đúng văn phong của bạn, hoặc chuẩn hoá trước khi đưa vào.

Thứ hai là thời gian. Mô hình học dữ liệu đến khoảng năm 2019–2020. Nó không biết các từ mới, sản phẩm mới, và cả những thay đổi hành chính như việc Việt Nam còn 34 tỉnh, thành và bỏ cấp huyện từ ngày 1/7/2025. Với nhiệm vụ phân loại, chuyện này ít ảnh hưởng; với nhận dạng địa danh thì cần dữ liệu tinh chỉnh mới có tên đơn vị hành chính sau sáp nhập.

Thứ ba là độ dài và giấy phép. Văn bản dài hơn giới hạn phải chia đoạn và gộp kết quả, nên với bài toán cần hiểu cả văn bản dài như hợp đồng nhiều trang, PhoBERT không phải lựa chọn tự nhiên. Về giấy phép, hãy đọc điều khoản trên kho phát hành của mô hình và của công cụ tách từ trước khi đưa vào sản phẩm thương mại, vì mỗi thành phần có thể có điều kiện riêng.

Dùng PhoBERT trong một dự án thật: các bước

Ví dụ giả định: một trung tâm chăm sóc khách hàng muốn tự động xếp tin nhắn đến vào tám nhóm (đổi trả, giao hàng, thanh toán, khiếu nại thái độ, hỏi sản phẩm, khen, rác, khác). Các bước dưới đây không đi vào mã lệnh, chỉ là trình tự quyết định.

  1. Viết định nghĩa từng nhãn bằng một hai câu, kèm ba ví dụ thuộc và ba ví dụ dễ nhầm. Không có định nghĩa rõ thì người gán nhãn mỗi người hiểu một kiểu, mô hình học theo sự lẫn lộn đó.
  2. Lấy mẫu vài nghìn tin nhắn thật, che số điện thoại, tên, địa chỉ, mã đơn hàng trước khi đưa cho người gán nhãn. Giữ riêng khoảng một phần mười làm tập thử, không bao giờ dùng để huấn luyện.
  3. Viết một hàm tiền xử lý duy nhất: chuẩn hoá Unicode, xử lý chữ không dấu nếu có, tách từ bằng RDRSegmenter. Ghi phiên bản của mọi công cụ.
  4. Tinh chỉnh bản base trước. Chỉ thử bản large khi bản base đã ổn mà vẫn thiếu vài điểm chính xác và chi phí chạy cho phép.
  5. Đo trên tập thử theo từng nhãn, không chỉ một con số trung bình. Nhãn hiếm như "khiếu nại thái độ" thường kém nhất mà lại quan trọng nhất.
  6. Đọc tay các câu bị phân loại sai, xếp chúng theo nguyên nhân: nhãn mơ hồ, dữ liệu thiếu, lỗi tách từ, chữ không dấu. Mỗi nguyên nhân có cách sửa khác nhau.
  7. Đưa vào chạy song song với cách làm cũ một thời gian, có ngưỡng tin cậy: câu nào mô hình không chắc thì chuyển người xem.

Toàn bộ quy trình này rẻ hơn nhiều so với tưởng tượng, và phần tốn công nhất luôn là dữ liệu với định nghĩa nhãn, không phải mô hình.

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

PhoBERT có dùng để làm chatbot tiếng Việt được không?

Không trực tiếp. PhoBERT là mô hình mã hoá, chỉ hiểu và biểu diễn câu, không sinh câu trả lời. Nó có thể làm một phần của chatbot, ví dụ nhận ra ý định của người dùng hoặc tìm câu hỏi thường gặp gần nhất, còn phần viết câu trả lời cần mô hình sinh chữ hoặc câu trả lời soạn sẵn.

Có bắt buộc dùng VnCoreNLP để tách từ không?

Bài báo và tài liệu đi kèm khuyến nghị dùng RDRSegmenter trong VnCoreNLP vì đó là công cụ đã dùng khi huấn luyện. Dùng công cụ khác vẫn chạy được nhưng ranh giới từ có thể lệch, làm giảm chất lượng. Nếu buộc phải đổi, hãy đo trên tập thử của mình xem chênh lệch bao nhiêu trước khi quyết.

PhoBERT base hay large thì nên chọn bản nào?

Bắt đầu bằng base. Bản này nhẹ, tinh chỉnh nhanh, chạy được trên máy chủ thường. Chỉ chuyển sang large khi đã làm sạch dữ liệu, sửa định nghĩa nhãn mà vẫn thiếu độ chính xác, và hạ tầng chịu được chi phí chạy cao hơn. Nhiều dự án dừng ở base là đủ.

PhoBERT có hiểu tiếng Việt không dấu không?

Hiểu kém hơn tiếng Việt có dấu, vì dữ liệu huấn luyện chủ yếu là văn bản chuẩn có dấu. Nếu dữ liệu của bạn nhiều chữ không dấu, có hai hướng: thêm bước khôi phục dấu trước khi đưa vào, hoặc đưa chính loại văn bản không dấu vào tập tinh chỉnh để mô hình quen dần.

Có cần GPU để chạy PhoBERT không?

Tinh chỉnh thì nên có GPU để đỡ mất thời gian, có thể thuê theo giờ. Chạy thật với lưu lượng vừa phải thì bản base thường đủ nhanh trên CPU. Hãy đo độ trễ trên máy của chính bạn với độ dài câu thực tế, vì câu càng dài càng chậm.

Sau PhoBERT, tiếng Việt còn mô hình mã hoá nào khác?

Có nhiều mô hình khác do các nhóm trong và ngoài nước công bố, kể cả các mô hình đa ngôn ngữ đời mới có phần tiếng Việt tốt hơn trước. Cách chọn đúng là lấy hai ba ứng viên, tinh chỉnh trên cùng dữ liệu của bạn và so trên cùng tập thử, thay vì tin bảng xếp hạng chung.

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