5 Đề xuất mơ hình gom cụm văn bản dựa trên mơ hình chủ đề kết hợp với véc-tơ ngữ
4.4 Mơ phỏng q trình biểu diễn đầu vào của BERT
Transformer cuối cùng(lớp Hidden State) tương ứng với token này sẽ được dùng để đại diện cho cả câu trong nhiệm vụ phân loại. Nếu khơng có nhiệm vụ phân loại thì véc-tơ này được bỏ qua.
• Các từ - token được chuyển đổi từ những từ thành những véc-tơ có 768 chiều.
• Segment Embedding cho biết những token nào thuộc về câu A và token nào thuộc về câu B, việc xác định các câu ngăn cách nhau bởi token [CLS] và token [SEP] khi kết thúc một câu.
• Position Embedding, cho biết các token nằm ở vị trí nào trong câu, chiều dài tối đa của nó là 512 tương ứng với tối đa có 512 token trong một input đầu vào.
• Kết hợp cả 3 biểu diễn cho văn bản đầu vào bao gồm Token Embedding, Segment Embedding và Position Embedding tạo ra đầu vào của mơ hình BERT.
2. Những tác vụ tiền huấn luyện
BERT sử dụng hai nhiệm vụ dự đốn khơng giám sát: Mơ hình ngơn ngữ có mặt nạ(Mask Language Model) và Dự đoán câu tiếp theo(Next Sentence Prediction).
(a) Mask Language Model. Các mơ hình học sâu đi trước chỉ sử dụng ngữ cảnh một chiều, vì khi dùng ngữ cảnh hai chiều sẽ gây ra một nghịch lý là một từ có thể gián tiếp nhìn thấy nó trong một ngữ cảnh nhiều lớp. BERT sử dụng một cách tiếp cận đơn giản là che giấu đi một token trong câu và thay thế nó bằng token [MASK], sau đó từ những token ngữ cảnh hai chiều dự đoán token đã được che giấu đi, nhiệm vụ này gọi là Mask Language Model. Các hidden véc-tơ ở lớp cuối tương ứng với các [MASK] token được đưa vào 1 lớp softmax trên toàn bộ tập từ vựng để dự đốn. Theo nghiên cứu của Google thì việc lựa chọn 15% số token để đem đi che giấu đem lại kết quả tốt nhất trong q trình dự đốn.
Hình 4.5: Mơ phỏng q trình che giấu token và dự đốn token được che giấu đó
Tuy nhiên q trình này lại tạo ra nhược điểm khi mà quá trình pre-trained và fine- tuning lại khơng khớp với nhau bởi vì các [MASK] token xuất hiện trong quá trình tiền huấn luyện khơng thể được nhìn thấy trong q trình tinh chỉnh. Vì vậy khơng thể lúc nào cũng che giấu các token, mà số lượng token được che giấu là 15% chọn ra từ tồn bộ tập từ(vocabulary). Q trình lựa chọn 15% token ngẫu nhiên được thực hiện như sau:
Lấy ví dụ "Hơm nay tôi đi học" từ được chọn để che giấu là "học":
• Thay thế 80% từ được chọn trong tập huấn luyện với [MASK] token => "Hơm nay tơi đi [MASK]"
• Thay thế 10% từ được chọn với một từ ngẫu nhiên => "Hơm nay tơi đi nằm"
• 10% các từ được chọn cịn lại vẫn giữ ngun => "Hơm nay tơi đi học"
(b) Next Sentence Prediction. Nhiều nhiệm vụ quan trọng trong xử lý ngôn ngữ tự nhiên như Question Answering yêu cầu sự hiểu biết dựa trên mối quan hệ giữa hai câu trong văn bản. Next Sentence Prediction mơ tả q trình mơ hình nhận các cặp câu đầu vào và cố gắng dự đốn vị trí của 2 câu đó, ví dụ cặp câu A và B, mơ hình sẽ cố gắng dự đốn B phải là câu tiếp theo của A hay khơng.
Trong q trình huấn luyện của mơ hình các cặp câu A và B được chia theo: sẽ có 50% B( nhãn IsNext) là câu tiếp theo của A, 50% cịn lại B(nhãn NotNext) sẽ là một câu bất kì trong tập ngữ liệu. Với giả thuyết rằng câu đầu tiên A khơng có liên quan gì đến câu
thứ hai B.
Q trình này được thực hiện khi tạo đầu vào dữ liệu, token [CLS] sẽ được thêm vào câu đầu tiên, và token [SEP] sẽ đưa vào điểm kết thúc của mỗi câu. Với hỗ trợ của segment embedding cho biết vị trí của các câu. Mơ hình cuối cùng sẽ dự đốn mối quan hệ giữa các câu trên phương pháp tính xác suất nhãn IsNext hoặc NotNext của cặp câu input đầu vào.
3. Quá trình tinh chỉnh
Việc tinh chỉnh các tham số đơn giản nhờ cơ chế self-attention của Transformer. Chỉ bằng cách đảo thứ tự vị trí đầu vào và đầu ra thì các tác vụ liên quan đến một đoạn văn bản ngắn hay cả đoạn văn bản dài vẫn có thể xử lý được.
Việc tinh chỉnh các tham số được thực hiện một cách đơn giản thông qua việc thêm một lớp layer mang tính đặc trưng cho tác vụ đó:
• Những tác vụ phân loại bằng cách thêm 1 lớp phân loại lên trên lớp phân loại lên trên đầu ra của Transformers cho [CLS] token.
• Trong tác vụ Trả lời câu hỏi, BERT học thêm 2 vector đánh dấu phần đầu và phần cuối của câu trả lời
• Trong tác vụ Nhận dạng tên thực thể, BERT được huấn luyện bằng cách đưa vector đầu ra của mỗi token vào trong lớp phân loại để dự đoán nhãn cho các thực thể.
4.2.3 Kết quả BERT đạt được
Các thử nghiệm thực tế trên các tác vụ cụ thể BERT đã đạt được:
• Trên tập dữ liệu General Language Understanding Evaluation (GLUE) là một tập dữ liệu để hiểu ngôn ngữ tự nhiên, trong tập dữ liệu này có rất nhiều tác vụ khác nhau. BERT đã khẳng định hiệu quả của mình với trung bình 81.9 cho BERTLarge, và 79.6 cho BERTBase.
So sánh với OpenAI GPT(75.2) và các mơ hình khác(PreOpenAI Sota, BiLSTM + ELMO + Atm dưới 75)
• Standford Question Answering Dataset (SQuAD) là một tập dữ liệu gồm 100K ví dụ mẫu được đóng góp bởi cộng đồng với cặp câu hỏi và câu trả lời. Đưa ra một câu hỏi và một đoạn văn từ Wikipedia với nội dung chứa câu trả lời, nhiệm vụ là dự đoán xem đâu là câu(trong đoạn văn) chứa câu trả lời. BERTLarge (83.1) so với mạng unet(74.9) hoặc con người dự
đoán(89.5) với F1 score.
• Đánh giá hiệu năng của một nhiệm vụ gán nhãn cho từng tokens, BERT đã fine-tuning trên tập dữ liệu CoNLL 2003 Named Entity Recognition (NER). Đây là tập dữ liệu gồm 200k từ được gán nhãn bằng tay với các nhãn là Person(tên người), Organization(tên tổ chức), Location(tên địa danh), Miscellaneous(tên sản phẩm,...) và Other (khơng phải thực thể có tên). Với kết quảBERTLargevàBERTBase lần lượt là 92.8, 92.4 so sánh với mơ hình ELMO+BiLSTM+CRF(92.2) và CVT+Multi(92.6) với F1 score.
4.3 Khai thác ngữ nghĩa văn bản tiếng Việt với PhoBERT4.3.1 Giới thiệu về RoBERTa 4.3.1 Giới thiệu về RoBERTa
RoBERTa: A Robustly Optimized BERT Pre Training Approach. Được phát triển dựa trên mơ hình BERT, nhìn nhận về các yếu điểm mà BERT vẫn cịn, RoBERTa được Facebook phát triển và cơng bố vào năm 2019.
Các cải tiến mà RoBERTa đem lại:
• Thời gian huấn luyện mơ hình dài hơn với lượng batches lớn hơn và nhiều dữ liệu hơn Batch là một quá trình mà so sánh giữa giá trị dự đoán và giá trị thật trên những sample, sau đó dựa trên độ sai lệch mà cập nhật giá trị cho các siêu tham số của mơ hình.
Những thực nghiệm chứng minh rằng Transformer và BERT phù hợp với việc sử dụng batch có kích thước lớn. Việc sử dụng những batch có kích thước lớn giúp cải thiện tốc độ tối ưu hóa của mơ hình và hiệu suất của tác vụ cuối trong khi tốc độ học được cải thiện tính chính xác.
Ở RoBERTa => Batches được tăng từ 128 lên 256, 2K, 8K đạt kết quả tốt nhất ở 2K chuỗi. Vẫn có thể huấn luyện với batch khoảng 32k.
• Loại bỏ những đối tượng NSP(Next Sentence Predict)
RoBERta sử dụng FULL-SENTENCE khơng chứa NSP loss (Nói về giá trị đo lường tính chính xác của việc dự đốn câu sau của một câu có phải là NextSentence của câu đó hay khơng).
nhiều câu liền kề với nhau được lấy ra từ 1 văn bản hoặc kết hợp nhiều văn bản. Nếu kết thúc 1 văn bản và vẫn chưa đủ 512 tokens thì những câu tiếp theo của văn bản tiếp theo sẽ được nối tiếp, với một token cho biết việc văn bản đầu tiên đã kết thúc và bắt đầu một văn bản mới.
• Huấn luyện trên những câu dài (long sentences)
Mã hóa - tokenization. Cho việc mã hóa thì RoBERTa sử dụng bộ mã hóa Byte-Pair En- coding(BPE), cơ chế mã hóa dựa trên việc kết hợp biểu diễn cấp độ từ và cấp độ kí tự cho phép có thể xử lý những từ thường xuất hiện trong bộ ngữ liệu ngôn ngữ tự nhiên. PBE cho phép bộ từ vựng chứa được 50K đơn vị từ, so sánh với kiến trúc BPE của BERT chưa được 30K đơn vị từ.
• Việc che khuất từ (masking word) được thực hiện động (dynamically) cho việc huấn luyện(Dynamic Masking)
Phương pháp MLP(masked language model) sử dụng trong BERT được biết đến với việc sẽ che khuất các từ trong câu một cách ngẫu nhiên và thay thế bằng một [MASK] token để mơ hình dự đốn. Nhưng mà điểm hạn chế của MLP trên BERT là nó chỉ thực hiện việc che khuất một lần duy nhất ở quá trình tiền xử lý cho tập huấn luyện. Trường hợp có thể xảy ra là vấn đề trùng lặp khi ở cùng câu giống nhau việc che khuất từ cũng giống nhau. Giảm tính chính xác của q trình đào tạo.
Tránh việc dùng giống bộ che khuất cho quá trình huấn luyện, dynamic mask với cơ chế dùng bộ huấn luyện nhân lên 10 lần để mỗi sequence sẽ được che khuất với 10 kiểu khác nhau thông qua việc huấn luyện trải qua 40 epochs. Do đó mỗi sequence cùng bộ mã hóa sẽ được học tập 4 lần.
4.3.2 PhoBERT với văn bản tiếng Việt
PhoBERT là sự kết hợp của từ "Phở" và BERT. Là mơ hình tiền huấn luyện đơn ngơn ngữ(tiếng Việt) dựa trên kiến trúc của RoBERTa. Do nhóm tác giả Nguyễn Quốc Đạt và Nguyễn Anh Tuấn đề xuất đến từ cơ sở nghiên cứu VinAI, công bố vào năm 2020.
PhoBERT được giới thiệu là đạt được những hiệu quả vượt trội hơn so với các tiếp cận BERT đa ngôn ngữ trong các tác vụ xử lý ngôn ngữ với tiếng Việt bao gồm: Gắn thẻ cho từng phần của câu, phân tích cú pháp trong câu, nhận dạng tên cho thực thể và suy luận ngôn ngữ tự nhiên.
Để sử dụng được PhoBERT thì dữ liệu đầu vào phải được xử lý bởi một cơng cụ có tên là VnCoreNLP. VnCoreNLP hay A Vietnamese natural language processing toolkit, là bộ công cụ dành cho việc xử lý ngôn ngữ tự nhiên cho tiếng Việt. Được nhóm tác giả Thanh Vu, Dat Quoc Nguyen, Dai Quoc Nguyen, Mark Dras và Mark Johnson nghiên cứu và phát triển bản 2018 hiện là bản mới nhất của bộ công cụ này. Cơng cụ này cung cấp hệ thống chú thích(anotations) cho xử lý ngơn ngữ tự nhiên trong tiếng Việt, cung cấp các chú thích ngơn ngữ phong phú thông qua các thành phần xử lý ngơn ngữ tự nhiên chính như: phân đoạn từ(word segmentation), gắn thẻ cho các đối tượng trong câu(POS tagging), nhận dạng tên thực thể(NER) và phân tích sự phụ thuộc cú pháp(dependancy parsing). Với ba tiêu chí chính được đề ra: chính xác hơn các cơng cụ NLP khác cho tiếng Việt đã được phát triển, nhanh chóng dù dữ liệu lớn và dễ sử dụng khi khơng cần các cài đặt phụ thuộc, có sẵn commandline hoặc API để gọi quá trình xử lý.
Với yêu cầu tối thiểu của PhoBERT thì VnCoreNLP chỉ sử dụng hai nhiệm vụ là phân đoạn từ và gắn thẻ cho các đối tượng trong câu. Ở phân đoạn từ về cơ bản là vì sự khó khăn của tiếng Việt nằm ở việc những từ đơn và từ ghép, khi những thành phần của từ ghép đứng riêng sẽ gây khơng rõ nghĩa. Do đó nhiệm vụ chính của q trình phân đoạn từ là tách những thành phần(từ đơn, từ ghép, dấu câu, tên riêng, ..) có trong một câu, hoặc văn bản tiếng Việt. Trong khi nhiệm vụ gắn thẻ đối tượng giúp các từ được phân đoạn có thể xác định từ loại của chúng. Lấy ví dụ:
text = "Lấy một ví dụ cho câu: ’Hơm nay, tơi đi học. Và trời thì đang mưa rất to.’" #word_segmentation
[[’Lấy’, ’một’, ’ví_dụ’, ’cho’, ’câu’, ’:’, "’", ’Hơm_nay’, ’,’, ’tơi’, ’đi’, ’học’, ’.’], [’Và’, ’trời’, ’thì’, ’đang’, ’mưa’, ’rất’, ’to’, ’.’, "’"]]
#POS_tagging
’sentences’: [[’form’: ’Lấy’, ’head’: -1, ’index’: 1, ’posTag’: ’V’, ’form’: ’một’, ’head’: -1, ’index’: 2, ’posTag’: ’M’,
’form’: ’ví_dụ’, ’head’: -1, ’index’: 3, ’posTag’: ’N’, ’form’: ’cho’, ’head’: -1, ’index’: 4, ’posTag’: ’E’, ’form’: ’câu’, ’head’: -1, ’index’: 5, ’posTag’: ’N’, ’form’: ’:’, ’head’: -1, ’index’: 6, ’posTag’: ’CH’, ’form’: "’", ’head’: -1, ’index’: 7, ’posTag’: ’CH’, ’form’: ’Hôm_nay’, ’head’: -1, ’index’: 8, ’posTag’: ’N’, ’form’: ’,’, ’head’: -1, ’index’: 9, ’posTag’: ’CH’,
’form’: ’tôi’, ’head’: -1, ’index’: 10, ’posTag’: ’P’, ’form’: ’đi’, ’head’: -1, ’index’: 11, ’posTag’: ’V’, ’form’: ’học’, ’head’: -1, ’index’: 12, ’posTag’: ’V’, ’form’: ’.’, ’head’: -1, ’index’: 13, ’posTag’: ’CH’], [’form’: ’Và’, ’head’: -1, ’index’: 1, ’posTag’: ’Cc’, ’form’: ’trời’, ’head’: -1, ’index’: 2, ’posTag’: ’N’, ’form’: ’thì’, ’head’: -1, ’index’: 3, ’posTag’: ’C’, ’form’: ’đang’, ’head’: -1, ’index’: 4, ’posTag’: ’R’, ’form’: ’mưa’, ’head’: -1, ’index’: 5, ’posTag’: ’V’, ’form’: ’rất’, ’head’: -1, ’index’: 6, ’posTag’: ’R’, ’form’: ’to’, ’head’: -1, ’index’: 7, ’posTag’: ’A’, ’form’: ’.’, ’head’: -1, ’index’: 8, ’posTag’: ’CH’, ’form’: "’", ’head’: -1, ’index’: 9, ’posTag’: ’CH’]]
4.4 Tổng kết chương 4
Chương 4 tìm hiểu sơ lược về sentence embedding. Qua đó, giới thiệu các state-of-the-art của sentence embedding. Một trong những mơ hình được đề cập đến là BERT.
Tìm hiểu về mơ hình BERT, kiến trúc, các thành phần chính và cách hoạt động của BERT. Giới thiệu về RoBERTa, được biết đến với những cải thiện tăng cường khả năng của BERT. Và cuối cùng là tìm hiểu về mơ hình PhoBERT, được phát triển dựa trên RoBERTa cho đơn ngơn ngữ là Việt Nam.
Chương 5
Đề xuất mơ hình gom cụm văn bản dựa trên mơ hình chủ đề kết hợp với véc-tơ ngữ nghĩa của văn bản
Mục tiêu của đề tài nằm ở việc phân cụm dữ liệu và việc phân cụm này dựa trên mơ hình chủ đề. Với đề xuất khai thác véc-tơ xác suất xác định chủ đề sinh ra bởi mơ hình chủ đề LDA làm chính yếu, kết hợp với vec-tơ khai thác ngữ nghĩa của PhoBERT sinh ra tạo ra một không gian véc-tơ mới. Việc kết hợp này, nhằm bổ sung thơng tin hữu ích liên quan đến cấu trúc văn bản, các mối quan hệ ngữ nghĩa trong văn bản,... cho véc-tơ xác suất của LDA khi mà véc-tơ này chỉ mang thông tin xác suất thuộc về một chủ đề nhất định mà không cần quan tâm đến vị trí các từ hay các mối quan hệ có trong văn bản. Khơng gian véc-tơ này được Autoencoder giảm chiều dữ liệu, do đó tập trung được vào những đặc trưng chính của dữ liệu và giảm chi phí lưu trữ cũng như tính tốn. Cuối cùng là đem khơng gian dữ liệu đã được giảm chiều này vào bộ phân cụm xây dựng bởi thuật toán KMEANS++ để xác định các cụm dữ liệu, từ đó xác định được K chủ đề, với K là số lượng chủ đề cần phân cụm trong tập dữ liệu đầu vào.
Hình 5.1: Kiến trúc của mơ hình phân cụm dựa trên mơ hình chủ đề
5.1 Đầu vào dữ liệu
Dữ liệu đầu vào là các đoạn văn hoặc bài báo. Về cơ bản đầu vào sẽ được tiền xử lý với VnCoreNLP để sinh hai phần:
• token_list: Đây là một danh sách các từ(hoặc cụm từ), nhờ nhiệm vụ phân đoạn từ tiếng Việt và gắn thẻ cho từng thành phần trong câu. Ta sẽ được danh sách các từ bao gồm: động từ, danh từ và tính từ. Đây là đầu vào cho mơ hình LDA, giảm bớt các từ nối, từ khơng mang nhiều tính phân loại. Giữ tính từ để phát triển cho việc phân loại cảm xúc nếu mơ hình phát triển thêm về sau.
• sentence: Đây là một văn bản mới được hình thành sau quá trình phân đoạn từ. Về hình dung, đó là nối các từ sau khi đã phân đoạn từ lại với nhau để hình thành lại văn bản ban đầu. Sentence này sẽ được dùng cho khối PhoBERT.
text = "Lấy một ví dụ cho câu: ’Hơm nay, tơi đi học. Và trời thì đang mưa rất to.’" token_list = [’lấy’, ’ví_dụ’, ’câu’, ’hơm_nay’, ’đi’, ’học’, ’trời’, ’mưa’, ’to’]
sentence = " Lấy một ví_dụ cho câu : ’ Hôm_nay , tôi đi học . Và trời thì đang mưa rất to . ’ "
5.2 Khối LDA
Là thành phần chính của mơ hình. Từ tập dữ liệu ban đầu sau quá trình xử lý đầu vào. Khối