Xây dựng mô hình hỏi đáp đơn giản cho tiếng Việt

1. GIỚI THIỆU

Hỏi đáp (question answering) là một bài toán khó giải của Xử lý ngôn ngữ tự nhiên. Trong những năm gần đây, cộng đồng Học máy đã áp dụng nhiều kỹ thuật mới để tăng độ chính xác của các hệ thống hỏi đáp tự động. Tuy nhiên, hầu hết các công trình tập trung vào ngôn ngữ Anh vì phần lớn cộng đồng nghiên cứu sử dụng ngôn ngữ này. Hôm nay, chúng ta sẽ cùng xem thành phần xác định câu trả lời trong một hệ thống hỏi đáp đơn giản cho tiếng Việt.

Cho một câu hỏi và một văn cảnh, bài toán xác định câu trả lời từ văn cảnh gọi là Machine Reading Comprehension (MRC). Trong bài toán MRC có nhiều dạng dữ liệu văn cảnh nhưng loại văn cảnh phổ biến nhất vẫn là dạng chữ (textual data). Loại văn cảnh còn lại là hình ảnh nhưng chưa có nhiều bộ dữ liệu cho loại hình này, vì vậy ta sẽ tìm hiểu về văn cảnh chữ là chính. 

Trong hệ thống hỏi đáp, một model MRC (hay còn gọi là model trích xuất câu trả lời – answer extractor) đảm nhận nhiệm vụ tìm câu trả lời trong tập văn bản được trả về bởi bộ phận tìm kiếm (hay còn gọi là retriever). Đầu ra phổ biến của model MRC là vị trí của câu trả lời trong đoạn văn. Trong trường hợp này, answer extractor sẽ đưa ra dự đoán là vị trí bắt đầu và vị trí kết thúc câu trả lời trong câu. Chẳng hạn ta có ví dụ:

                                       Câu hỏi: “nơi nào là thủ đô Việt Nam?”

                                       Văn cảnh: “Thủ đô Việt Nam hiện nay là thành phố Hà Nội. Hà Nội là nơi đóng đô của nhiều triều đại và chế độ nhất Việt Nam.”

                                       Đầu ra: vị trí bắt đầu = 38, vị trí kết thúc = 44

Trong ví dụ trên, ký tự thứ 38 trong văn cảnh là “H” và ký tự thứ 44 là “i” tương ứng với câu trả lời “Hà Nội”. Model cũng sẽ đưa ra nhiều phương án cùng với điểm số mỗi phương án (thể hiện độ tự tin của model vào phương án đó), thông thường ta lấy phương án có điểm số cao nhất làm câu trả lời. 

Hiện tại, tập dữ liệu hỏi đáp tiếng Việt phổ biến nhất là UIT-ViQuAD v2.0 [4]. Nó được sử dụng trong cuộc thi VLSP 2021 – ViMRC (https://aihub.vn/competitions/35). Tập dữ liệu này có 35.990 câu hỏi được gán nhãn thủ công từ 176 bài viết Wikipedia tiếng Việt. Tương tự với tập dữ liệu tiếng Anh SQuAD v2.0 (https://rajpurkar.github.io/SQuAD-explorer/), có những câu hỏi không có câu trả lời (tạm gọi là câu hỏi “bẫy”) trong tập UIT-ViQuAD v2.0. Điều này nhằm mục đích kiểm tra khả năng suy luận của model, phân biệt giữa thông tin sẵn có và thông tin không có trong văn cảnh. Để đạt độ chính xác cao, model phải có khả năng tránh không đưa ra câu trả lời cho những câu hỏi “bẫy”.

Thông số tổng quan của tập dữ liệu được tóm lược trong Bảng 1.

Tập huấn luyệnTập giám sát công khaiTập giám sát ẩnTổng
Tổng số bài Wikipedia1381919176
Tổng số đoạn văn4,1015575155,173
Tổng số câu hỏi 28,4573,8213,71235,990
Tổng số câu hỏi “bẫy”9,2171,1681,11611,501
Độ dài trung bình của đoạn văn179.0167.6177.3177.6
Độ dài trung bình câu hỏi thường14.614.314.714.6
Độ dài trung bình câu hỏi “bẫy”14.714.014.514.6
Bảng 1: Thông số tổng quan của tập dữ liệu UIT-ViQuAD 2.0

2. MÔ HÌNH

Có hai hướng đi chính cho việc mô phỏng tiếng Việt: (1) model đa ngôn ngữ và (2) model đơn ngữ tiếng Việt.

PhoBERT là một model tiếng Việt nhắm tới việc cung cấp một thước đo cơ sở cho các bài toán về tiếng Việt [3]. Có hai phiên bản của PhoBERT: base và large. Cả hai đều có dùng chung kiến trúc của BERTBase và BERTLarge. Nhóm tác giả huấn luyện mô hình trên 20GB dữ liệu tiếng Việt: 1GB các bài viết Wikipedia tiếng Việt và 19GB tin tức. Lượng dữ liệu đó tương đương với 3 tỷ token tạo thành khoảng 145 triệu câu. Tuy nhiên, PhoBERT cần một bước tiền xử lý tách từ (ví dụ “tôi là sinh viên” → [“tôi”, “là”, “sinh_viên”]) của một thư viện khác (VnCoreNLP: https://github.com/vncorenlp/VnCoreNLP), việc này làm chậm việc xử lý trong thời gian thực. Một nhược điểm nữa của model đơn ngữ là out-of-vocabulary (tokenizer không thể nhận diện từ vựng) khi có nhiều từ mượn của các ngôn ngữ khác. Trong trường hợp đó, model đa ngữ có lẽ là một sự lựa chọn an toàn hơn.

XLM-R (XLM-RoBERTa) là một một model đa ngữ được sử dụng rộng rãi [1]. Nó được huấn luyện trên 2.5TB dữ liệu bằng 100 ngôn ngữ được lọc từ bộ dữ liệu CommonCrawl. Kiến trúc model dựa trên model RoBERTa của Facebook được công bố năm 2019 [2]. Quá trình huấn luyện một MRC model tương đối đơn giản và có nhiều hướng dẫn trên mạng (ví dụ https://huggingface.co/docs/transformers/tasks/question_answering). 

Tương tự như PhoBERT, XLM-R có hai phiên bản Base và Large. Phiên bản Large có số tầng nhiều gấp đôi bản Base (24 vs 12), số lượng parameters cũng nhiều hơn (550M vs 270M).

Bảng 2 tóm tắt một số đặc điểm khác biệt giữa BERT và XLM-R. Ngoài việc sử dụng nhiều dữ liệu hơn, hai khác biệt chính là:

  • Dynamic Masking: BERT sử dụng static masking, nghĩa là che đúng một token nào đó trong câu trong suốt cả quá trình huấn luyên. Ngược lại, RoBERTa sử dụng dynamic masking, mỗi một epoch sẽ che một token khác nhau trong câu.
  •  Next Sentence Prediction (NSP): Dự đoán câu kế tiếp (NSP) được cho là không hữu dụng trong việc huấn luyện BERT model. Do đó, RoBERTa chỉ huấn luyện dùng kỹ thuật Mask Language Model (MLM).
BERTPhoBERTLargeXLM-RoBERTa
MaskingStaticDynamicDynamic
NSPyesnono
DatasetEnglish Wiki + BookCorpusVietnamese Wiki + NewsWiki + BookCorpus + CommonCrawl
Batch size2565128000
# training step1.000.0001.000.000300.000
Vocabulary size30.00064.000250.000
TokenizationWordPieceVnCoreNLPSentencePiece
Bảng 2: Khác biệt giữa BERT, PhoBERT và XLM-RoBERTa


3. THANG ĐO VÀ KẾT QUẢ

F1 score Chỉ số F1 là chỉ số kết hợp cả precision và recall, tính bằng harmonic mean. Chỉ số F1 có khoảng giá trị (0, 1], điểm càng cao cho thấy model có độ chính xác cao.

F1 = 2 * Precision * Recall / (Precision + Recall)

Exact match (EM) Để đánh giá độ chính xác của model MRC, câu trả lời mẫu và câu trả lời dự đoán sẽ được so sánh xem có giống hệt nhau hay không. Nếu giống nhau, EM là 1. Nếu không giống nhau, EM là 0. Giá trị EM cuối cùng là trung bình cộng của tất cả các giá trị EM của từng cặp câu hỏi-trả lời.

EnsembleF1 (%)EM (%)
Retrospective Reader + XLM-R x81.01371.316
BLANC + XLM-R/SemBERTx82.622 73.698
XLM-RLarge x80.578 70.662
XLM-RLarge 79.594 69.092
PhoBERTLarge+R3F+CS75.842 63.544
mBERT – baseline63.03153.546
Bảng 3: Kết quả một số phương pháp trên tập kiểm tra công khai của VLSP2021 – ViMRC challenge [5]

Bảng 3 tóm tắt một số phương pháp được sử dụng trong cuộc thi VLSP2021 ViMRC, Hệ thống tham chiếu cơ sở của ban tổ chức ViMRC (mBERT) đạt F1=0.63 và EM=0.53.

Một model XLM-RLarge cho kết quả khá cạnh tranh trên tập ViQuAD công khai, F1=0.795 và EM=0.69. Nhìn chung, các phương pháp sử dụng XLM-R cho kết quả tốt hơn PhoBERT một khoảng cách tương đối. 

Vị trí dẫn đầu cuộc thi trên tập công khai có kết quả F1=0.842 và EM=0.777 (không có trong bảng 3 vì nhóm tác giả không công bố phương pháp).

Chúng ta đã cùng xem các cách tiếp cận khác nhau cho bài toán MRC tiếng Việt. Hiện tại, các phương pháp sử dụng model đa ngôn ngữ đang có kết quả tốt hơn so với mô hình đơn ngữ cho tiếng Việt.  Hy vọng các bạn có được những kiến thức hữu ích từ bài viết này.

4. NGUỒN THAM KHẢO

[1] Alexis Conneau, Kartikay Khandelwal, Naman Goyal, Vishrav Chaudhary, Guillaume Wenzek, Francisco Guzmán, Edouard Grave, Myle Ott, Luke
Zettlemoyer, and Veselin Stoyanov. 2020. Unsupervised Cross-lingual Representation Learning at Scale. In Proceedings of the 58th Annual Meeting of the
Association for Computational Linguistics. Association for Computational Linguistics, Online, 8440–8451. https://doi.org/10.18653/v1/2020.acl-main.747
[2] Yinhan Liu, Myle Ott, Naman Goyal, Jingfei Du, Mandar Joshi, Danqi Chen, Omer Levy, Mike Lewis, Luke Zettlemoyer, and Veselin Stoyanov. 2019.
RoBERTa: A Robustly Optimized BERT Pretraining Approach. https://doi.org/10.48550/ARXIV.1907.11692
[3] Dat Quoc Nguyen and Anh Tuan Nguyen. 2020. PhoBERT: Pre-trained language models for Vietnamese. In Findings of the Association for Computational
Linguistics: EMNLP 2020. Association for Computational Linguistics, Online, 1037–1042. https://doi.org/10.18653/v1/2020.findings-emnlp.92
[4] Kiet Nguyen, Vu Nguyen, Anh Nguyen, and Ngan Nguyen. 2020. A Vietnamese Dataset for Evaluating Machine Reading Comprehension. In
Proceedings of the 28th International Conference on Computational Linguistics. International Committee on Computational Linguistics, Barcelona,
Spain (Online), 2595–2605. https://doi.org/10.18653/v1/2020.coling-main.233

[5] Kiet Van Nguyen, Son Quoc Tran, Luan Thanh Nguyen, Tin Van Huynh, Son T. Luu, and Ngan Luu-Thuy Nguyen. 2022. VLSP 2021 – ViMRC
Challenge: Vietnamese Machine Reading Comprehension. https://doi.org/10.48550/ARXIV.2203.1140

You may also like...

0 0 đánh giá
Đánh giá bài viết
Theo dõi
Thông báo của
guest
0 Góp ý
Cũ nhất
Mới nhất Được bỏ phiếu nhiều nhất
Phản hồi nội tuyến
Xem tất cả bình luận
0
Rất thích suy nghĩ của bạn, hãy bình luận.x