Bối cảnh và vấn đề nghiên cứu

Sự bùng nổ của các nền tảng mạng xã hội và thương mại điện tử đã biến dữ liệu trực tuyến thành nguồn thông tin phản ánh trực tiếp hành vi, ý kiến và nhu cầu của cộng đồng. Theo số liệu thống kê được tác giả trích dẫn, tính đến quý 3 năm 2021, số lượng người dùng mạng xã hội Facebook trên toàn cầu đã vượt 2,9 tỷ người; riêng tại Việt Nam, con số này đạt gần 76 triệu người tính đến tháng 6 năm 2021. Tại các cơ sở giáo dục đại học, Facebook trở thành phương tiện trao đổi thông tin phổ biến nhất của sinh viên, từ học tập, thi cử, thủ tục hành chính, định hướng chuyên ngành cho đến đời sống sinh hoạt nội trú và giải trí. Việc khai thác các thảo luận này giúp ban quản trị nhà trường lắng nghe phản hồi của người học và kịp thời xử lý các vấn đề phát sinh. Tuy nhiên, khối lượng bài đăng lớn cùng cấu trúc văn bản tự do, phi cấu trúc đặt ra thách thức lớn cho việc tổng hợp dữ liệu thủ công.

Xuất phát từ thực tiễn trên, tác giả xác định mục tiêu và nhiệm vụ nghiên cứu bao gồm:

  1. Nghiên cứu cơ sở lý thuyết về bài toán phân loại văn bản tự động (Text Classification), các kỹ thuật trích xuất đặc trưng và các thuật toán học máy giải quyết bài toán phân loại đa nhãn (Multi-label Classification).
  2. Xây dựng quy trình thu thập dữ liệu tự động từ các trang và nhóm Facebook, thiết lập quy chuẩn tiền xử lý dữ liệu văn bản tiếng Việt phù hợp với ngữ cảnh mạng xã hội.
  3. Huấn luyện, đánh giá và đối sánh thực nghiệm các thuật toán phân lớp (Logistic Regression, Naive Bayes, Stochastic Gradient Descent) trên các phương pháp chuyển đổi bài toán đa nhãn để chọn ra mô hình tối ưu.
  4. Thiết kế, cài đặt và thử nghiệm hệ thống phần mềm hỗ trợ xác định luồng dư luận trường đại học, ứng dụng mô hình phân loại tự động vào trực quan hóa dữ liệu theo thời gian thực.

Đối tượng và phạm vi nghiên cứu của đồ án:

  • Đối tượng nghiên cứu: Các bài đăng (posts) thảo luận của sinh viên trên mạng xã hội Facebook; các kỹ thuật xử lý ngôn ngữ tự nhiên (NLP) tiếng Việt, kỹ thuật trích xuất đặc trưng TF-IDF và thuật toán học máy phân loại văn bản đa nhãn.
  • Phạm vi không gian: Các trang cộng đồng (fanpage) và hội nhóm (group) Facebook liên quan trực tiếp đến sinh viên Học viện Công nghệ Bưu chính Viễn thông.
  • Phạm vi thời gian: Dữ liệu nghiên cứu phản ánh thực trạng trao đổi của sinh viên giai đoạn 2017–2021; đồ án tốt nghiệp được hoàn thành và bảo vệ vào tháng 01 năm 2022.

Cơ sở lý thuyết và phương pháp

Khóa luận thiết lập nền tảng lý thuyết dựa trên các khái niệm và mô hình chuẩn trong xử lý ngôn ngữ tự nhiên và học máy:

  • Bài toán phân loại văn bản đa nhãn (Multi-label Classification): Một bài đăng có thể đồng thời thuộc về nhiều hơn một chủ đề (khác với bài toán nhị phân hay đa lớp đơn nhãn). Tác giả khảo sát ba kỹ thuật chuyển đổi bài toán (Problem Transformation):
    • Binary Relevance (BR): Chia bài toán gồm $q$ nhãn thành $q$ bài toán phân loại nhị phân độc lập.
    • One-vs-Rest (OvR): Tách tập dữ liệu đa lớp thành các bài toán nhị phân, huấn luyện từng bộ phân loại để tính điểm xác suất tương đồng cho từng lớp.
    • Classifier Chains (CC): Tạo chuỗi các bộ phân loại nhị phân, trong đó bộ phân loại phía sau được huấn luyện trên không gian đầu vào mở rộng chứa kết quả dự đoán của các bộ phân loại phía trước nhằm duy trì mối tương quan giữa các nhãn.
  • Kỹ thuật trích xuất đặc trưng TF-IDF (Term Frequency – Inverse Document Frequency): Biểu diễn trọng số của từng từ dựa trên tần suất xuất hiện trong tài liệu ($tf$) theo công thức của Hans Peter Luhn (1957) kết hợp nghịch đảo tần suất tài liệu trong ngữ liệu ($idf$) theo nghiên cứu của Karen Spärck Jones (1972): $$tf(t, d) = \frac{f_{t,d}}{\sum_{t' \in d} f_{t',d}}$$ $$idf(t, D) = \log\frac{|D|}{|{d \in D : t \in d}|}$$ $$tfidf(t, d, D) = tf(t, d) \times idf(t, D)$$
  • Thuật toán phân lớp Logistic Regression: Sử dụng hàm sigmoid $g(z) = \frac{1}{1 + e^{-z}}$ để ước lượng xác suất, hàm mất mát cross-entropy và thuật toán tối ưu hóa đạo hàm theo trọng số để phân định biên nhị phân. Bên cạnh đó, đồ án khảo sát thêm các mô hình: Naive Bayes (dựa trên định lý xác suất Bayes), Stochastic Gradient Descent (SGD), Support Vector Machines (SVM), Hidden Markov Model (HMM) và Convolutional Neural Network (CNN).

Phương pháp nghiên cứu thực nghiệm và nguồn dữ liệu:

  • Thu thập dữ liệu: Sử dụng công cụ tự động hóa Selenium WebDriver kết hợp thư viện BeautifulSoup4 để cào mã HTML và trích xuất trường dữ liệu từ các hội nhóm Facebook sinh viên Học viện Công nghệ Bưu chính Viễn thông. Tổng số mẫu thu thập được là 18.408 bài đăng.
  • Quy trình tiền xử lý tiếng Việt: Chuẩn hóa Unicode dựng sẵn, chuẩn hóa vị trí dấu thanh theo quy tắc cũ, tách từ tiếng Việt bằng thư viện mã nguồn mở Underthesea, làm sạch dấu câu, ký tự đặc biệt và lọc từ dừng (stopword) hai lớp (danh sách của Lê Văn Duyệt và danh sách stopword thống kê tự động).
  • Phương pháp đánh giá: Sử dụng phương pháp phân chia dữ liệu Train:Test tỷ lệ 7:3 (test_size = 0.3). Chạy thử nghiệm lặp lại 10 lần lấy giá trị trung bình trên 4 chỉ số: Accuracy, Precision, Recall và F1-score dựa trên ma trận nhầm lẫn (Confusion Matrix).

Nội dung chính theo từng chương

Chương 1: Giới thiệu chung

Chương này giới thiệu bài toán phân loại văn bản tự động, nêu rõ ưu điểm của phương pháp học máy (Machine Learning) so với phương pháp dựa trên tập luật (Rule-based). Tác giả khảo sát các kỹ thuật trích xuất không gian véc-tơ như Bag-of-Words, Bag-of-n-Grams, TF-IDF cùng các thuật toán phân lớp phổ biến (Logistic Regression, Naive Bayes, SGD, SVM, HMM, CNN). Trên cơ sở đối chiếu đặc điểm bài đăng Facebook sinh viên, tác giả đề xuất hướng tiếp cận: giải quyết bài toán phân loại đa nhãn bằng các phương pháp chuyển đổi bài toán, kết hợp tiền xử lý tiếng Việt qua Underthesea, trích xuất đặc trưng TF-IDF và thử nghiệm so sánh giữa ba thuật toán Logistic Regression, SGD và Naive Bayes.

Chương 2: Thuật toán phân lớp Logistic Regression

Chương 2 mô tả chi tiết quy trình xây dựng mô hình gồm 5 bước: Thu thập dữ liệu $\rightarrow$ Tiền xử lý dữ liệu $\rightarrow$ Trích xuất đặc trưng $\rightarrow$ Huấn luyện mô hình $\rightarrow$ Lưu mô hình. Tác giả đi sâu vào cơ sở toán học của thuật toán Logistic Regression: xây dựng hàm xác suất giả thuyết $h(x) = g(w^T x)$, tối ưu hàm hợp lý cực đại thông qua hàm mất mát cross-entropy $J(w) = -\sum [y^{(i)} \log(z_i) + (1 - y^{(i)}) \log(1 - z_i)]$ và đạo hàm cập nhật trọng số. Để áp dụng mô hình nhị phân cho bài toán 8 nhãn chủ đề, tác giả thiết lập hàm ngưỡng phân lớp: nếu mảng xác suất đầu ra có phần tử $\ge 0.5$, các phần tử này nhận giá trị 1 (các giá trị còn lại nhận 0); nếu toàn bộ các giá trị $< 0.5$, gán giá trị 1 cho nhãn có xác suất cao nhất và gán 0 cho các nhãn còn lại.

Chương 3: Thực nghiệm và đánh giá

Chương 3 trình bày chi tiết thực nghiệm trên tập dữ liệu 18.408 bài đăng Facebook. Tác giả thu thập 8 trường thông tin cơ bản: Ngày đăng, Tác giả, URL cá nhân tác giả, Nội dung, URL bài đăng, Lượt reaction, Lượt comment, Lượt chia sẻ. Dữ liệu ban đầu dự kiến chia thành 15 nhãn nhưng do tình trạng mất cân bằng (có nhãn dưới 500 mẫu), tác giả đã gộp thành 8 nhóm chủ đề có số lượng mẫu đồng đều (tối thiểu 1.441 mẫu/nhãn). Quy trình tiền xử lý được triển khai qua các bước: loại bỏ HTML, chuyển đổi sang Unicode dựng sẵn, chuẩn hóa quy tắc đặt dấu thanh kiểu cũ (xét các trường hợp nguyên âm kép, nguyên âm ba và tiền tố "qu", "gi"), tách từ phức bằng Underthesea và lọc từ dừng. Đánh giá thử nghiệm trên tập kiểm thử 30% cho thấy thuật toán Logistic Regression vượt trội hơn hẳn so với SGD và Naive Bayes trên mọi tiêu chí.

Chương 4: Hệ thống hỗ trợ xác định luồng dư luận

Chương 4 trình bày kiến trúc và kết quả cài đặt hệ thống phần mềm hỗ trợ nhà trường theo dõi luồng dư luận sinh viên. Mô hình hoạt động theo cấu trúc Client-Server, kết hợp khối Crawler dữ liệu, khối tiền xử lý, khối Classifier Model (huấn luyện từ Chương 3) và khối lưu trữ cơ sở dữ liệu kép. Tác giả phân tích lý do phối hợp MySQL với Elasticsearch để tối ưu hóa hiệu năng trực quan hóa dữ liệu theo thời gian thực, đồng thời công bố giao diện các chức năng thống kê, tra cứu bài viết và tiếp nhận yêu cầu cào dữ liệu mới.


Thiết kế và triển khai hệ thống

Hệ thống hỗ trợ xác định luồng dư luận được thiết kế theo kiến trúc Client-Server với các thành phần kỹ thuật cụ thể:

  • Kiến trúc hệ thống và luồng dữ liệu:
    • Client: Giao diện người dùng gửi yêu cầu truy vấn, tìm kiếm hoặc yêu cầu thu thập dữ liệu mới.
    • Server: Tiếp nhận yêu cầu, điều phối logic nghiệp vụ và tương tác với tầng lưu trữ.
    • Khối Crawler & Phân loại tự động: Khi có yêu cầu cập nhật, khối Crawler (Selenium + BeautifulSoup) truy cập Facebook lấy mã HTML, trích xuất 8 trường thuộc tính, chuyển qua khối tiền xử lý làm sạch văn bản, sau đó đưa vào khối Classifier Model (áp dụng Logistic Regression kết hợp Binary Relevance) để tự động gán nhãn chủ đề.
    • Cụm cơ sở dữ liệu kép (Database Node): MySQL đảm nhận vai trò lưu trữ chính, bảo toàn tính toàn vẹn dữ liệu cho các tác vụ CRUD (Create, Read, Update, Delete) có quản lý giao dịch (transaction). Elasticsearch đóng vai trò máy chủ tìm kiếm và phân tích phân tán trên nền Apache Lucene, giải quyết bài toán truy vấn độ trễ thấp phục vụ trực quan hóa biểu đồ.
Tên công cụ / Công nghệ Phiên bản Mô tả vai trò trong hệ thống
Python Flask 3.8 Micro web framework xây dựng dịch vụ phía máy chủ
Visual Studio Code 1.3 Môi trường phát triển tích hợp (IDE) lập trình Python
Selenium 4.1 Bộ công cụ tự động hóa trình duyệt thu thập dữ liệu Facebook
BeautifulSoup 4.0 Thư viện bóc tách và phân tích cú pháp cây HTML
Elasticsearch 7.4 Công cụ tìm kiếm phân tán, tối ưu hóa hiển thị trực quan hóa
MySQL 8.18 Hệ quản trị cơ sở dữ liệu quan hệ, lưu trữ dữ liệu bền vững
scikit-learn 1.2 Thư viện học máy huấn luyện mô hình Logistic Regression
Underthesea 1.3 Thư viện xử lý ngôn ngữ tự nhiên tách từ tiếng Việt
Vietnamese-stopwords 0.2 Danh sách từ dừng tiếng Việt (tác giả Lê Văn Duyệt)

Các chức năng chính được cài đặt hoàn chỉnh trên giao diện hệ thống:

  1. Trực quan hóa luồng dư luận: Hiển thị biểu đồ đường theo tổng tích lũy số lượng bài viết phân bố theo 8 chủ đề; biểu đồ đường biến thiên chi tiết theo từng ngày; biểu đồ phân tích dữ liệu theo tuần.
  2. Quản lý và tra cứu bài đăng: Danh sách bài đăng theo từng luồng chủ đề kèm bảng chi tiết (tác giả, nội dung, phản hồi, bình luận, chia sẻ) liên kết trực tiếp từ màn hình trực quan hóa.
  3. Tìm kiếm thông tin: Truy vấn bài đăng theo từ khóa kết hợp bộ lọc chủ đề.
  4. Thu thập dữ liệu theo yêu cầu: Giao diện nhập thông số để kích hoạt tiến trình cào dữ liệu mới từ các nhóm và fanpage Facebook.

Kết quả và đóng góp

Khóa luận cung cấp các số liệu thực nghiệm chi tiết về bộ dữ liệu và hiệu năng thuật toán:

STT Tên chủ đề Các vấn đề liên quan trong văn bản Số lượng mẫu
1 học_phần Đăng ký học phần, học lại, học hè, ý kiến phương pháp dạy 1.788
2 học_tập Hỏi bài, lịch học 4.201
3 thi_cử Lịch thi, điểm thi 1.705
4 thủ_tục Văn phòng một cửa, phúc khảo, bảo lưu, tiếng Anh, học bổng, học phí 1.443
5 chuyên_ngành Thực tập, tốt nghiệp, đồ án, review trường, chọn ngành, việc làm 2.008
6 giải_trí Tình cảm, bóng đá, văn nghệ, câu lạc bộ, ăn uống 5.644
7 đời_sống Dịch bệnh, ký túc xá, thuê trọ, vấn đề hằng ngày 1.441
8 Các vấn đề khác Các vấn đề phát sinh khác không thuộc 7 nhóm trên 2.720
Tổng 18.408

Thống kê số lượng nhãn được gán trên mỗi bài đăng phản ánh bản chất bài toán đa nhãn:

  • Bài đăng có 1 nhãn: 17.502 bài
  • Bài đăng có 2 nhãn: 872 bài
  • Bài đăng có 3 nhãn: 33 bài
  • Bài đăng có 4 nhãn: 1 bài

Kết quả thử nghiệm đối sánh mô hình được tổng hợp tại bảng dưới đây:

Phương pháp Thuật toán Accuracy (%) Precision (%) Recall (%) F1-score (%)
One-vs-Rest SGD 69,45 — — —
One-vs-Rest Naive Bayes 63,17 — — —
One-vs-Rest Logistic Regression 70,44 — — —
Classifier Chains Naive Bayes — — — —
Classifier Chains Logistic Regression 63,30 — — —
Binary Relevance Naive Bayes — — — —
Binary Relevance Logistic Regression 69,10 — — 72,10

Đóng góp của đồ án:

  • Về mặt học thuật: Xây dựng quy trình thực nghiệm hoàn chỉnh giải quyết bài toán phân loại đa nhãn tiếng Việt trên ngữ liệu mạng xã hội, giải quyết vấn đề nhập nhằng từ vựng thông qua thuật toán chuẩn hóa dấu thanh cũ và lọc từ dừng 2 lớp.
  • Về mặt ứng dụng: Triển khai một hệ thống phần mềm hoàn chỉnh cho trường đại học, tích hợp tự động khâu thu thập dữ liệu Facebook, gán nhãn tự động bằng mô hình học máy và trực quan hóa phân tích theo chuỗi thời gian, giải quyết bài toán tốn kém nhân lực khi phải rà soát thủ công.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế được tác giả chỉ ra trong văn bản:

  • Độ chính xác Accuracy (khoảng 70%) và chỉ số F1-score (khoảng 72,1%) của mô hình Logistic Regression chưa cao do tính chất phức tạp của ngôn ngữ mạng xã hội.
  • Một số cặp chủ đề có ranh giới ngữ nghĩa gần nhau (như học_tập với học_phần, giải_trí với đời_sống) dẫn đến sai lệch trong khâu gán nhãn thủ công ban đầu và khiến mô hình phân loại nhầm.
  • Trong bài toán đa nhãn, nếu mô hình chỉ dự đoán đúng một tập con của nhãn thực tế thì bài viết đó vẫn bị tính là dự đoán sai, làm giảm chỉ số Accuracy chung.
  • Sự phân bố số lượng mẫu giữa các nhãn chưa hoàn toàn cân bằng (chủ đề giải_trí có 5.644 mẫu, trong khi đời_sống chỉ có 1.441 mẫu).
  • Việc phân tách hai hệ cơ sở dữ liệu (MySQL và Elasticsearch) làm tăng tính phức tạp trong việc duy trì đồng bộ dữ liệu của hệ thống.

Hướng nghiên cứu tiếp theo:

  • Nâng cao chất lượng gán nhãn và xử lý triệt để hiện tượng chồng lấn ngữ nghĩa giữa các nhóm nhãn có độ tương đồng cao.
  • Thử nghiệm các kiến trúc học sâu chuyên biệt cho văn bản (như Convolutional Neural Network - CNN) nhằm cải thiện khả năng trích xuất ngữ cảnh so với mô hình tuyến tính Logistic Regression.
  • Mở rộng phạm vi thu thập dữ liệu sang các nền tảng mạng xã hội khác ngoài Facebook và tối ưu hóa cơ chế đồng bộ giữa cơ sở dữ liệu quan hệ và công cụ tìm kiếm.

Giá trị tham khảo

Tài liệu có giá trị tham khảo đối với:

  • Đối tượng người đọc: Sinh viên ngành Công nghệ thông tin, Hệ thống thông tin, Khoa học máy tính hoặc Khoa học dữ liệu đang làm đồ án tốt nghiệp, khóa luận hoặc tiểu luận về xử lý ngôn ngữ tự nhiên tiếng Việt, phân loại văn bản đa nhãn và khai phá dữ liệu web.
  • Các phần nội dung đáng tham khảo:
    • Mục 2.2 và 2.3: Tài liệu diễn giải và chứng minh mạch lạc cơ sở toán học của hàm sigmoid, hàm mất mát cross-entropy và các kỹ thuật chuyển đổi bài toán đa nhãn (Binary Relevance, One-vs-Rest, Classifier Chains).
    • Mục 3.2: Quy trình tiền xử lý tiếng Việt chi tiết với thuật toán xử lý dấu thanh theo quy tắc cũ và phương pháp tạo bộ từ dừng kết hợp.
    • Mục 4.1 và 4.2: Kiến trúc kết hợp MySQL và Elasticsearch nhằm giải quyết bài toán cân bằng giữa tính toàn vẹn giao dịch và tốc độ truy vấn phục vụ trực quan hóa dữ liệu theo thời gian thực.

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

1. Tại sao đồ án phải rút gọn từ 15 chủ đề ban đầu xuống còn 8 chủ đề trong quá trình gán nhãn?
Trong quá trình khảo sát dữ liệu 18.408 bài đăng, nếu giữ nguyên 15 nhãn thì một số chủ đề có số lượng bản ghi rất thấp (dưới 500 bản ghi), gây ra hiện tượng mất cân bằng dữ liệu nghiêm trọng và làm giảm độ chính xác của mô hình học máy. Tác giả đã gộp các chủ đề nhỏ có mối liên hệ gần gũi lại với nhau để đảm bảo mỗi nhóm chủ đề có ít nhất 1.441 bản ghi, giúp mô hình huấn luyện ổn định hơn.

2. Mô hình nào đạt hiệu quả tốt nhất trong các thử nghiệm của đồ án?
Trong các thuật toán tham gia thử nghiệm (Logistic Regression, SGD, Naive Bayes), thuật toán Logistic Regression luôn cho kết quả vượt trội. Trong đó, mô hình Logistic Regression kết hợp phương pháp One-vs-Rest đạt Accuracy cao nhất (70,44%), còn mô hình Logistic Regression kết hợp phương pháp Binary Relevance đạt chỉ số F1-score cao nhất (xấp xỉ 72,10%). Tác giả lựa chọn phương pháp Binary Relevance kết hợp Logistic Regression làm mô hình phân loại chính thức cho hệ thống.

3. Tác giả đã xử lý thế nào để chuyển đổi xác suất đầu ra của Logistic Regression thành kết quả phân loại đa nhãn?
Đầu ra của mô hình với mỗi bài đăng là một mảng 8 giá trị xác suất thập phân trong khoảng $[0, 1]$. Tác giả xây dựng một hàm đánh giá bổ sung: nếu mảng chứa các giá trị $\ge 0.5$, tất cả các giá trị đó được chuyển thành 1, các giá trị còn lại đổi thành 0; nếu mảng không có giá trị nào $\ge 0.5$, hệ thống sẽ chọn giá trị lớn nhất đổi thành 1 và gán các vị trí còn lại bằng 0.

4. Vì sao hệ thống phải sử dụng song song cả MySQL và Elasticsearch?
Do nhu cầu trực quan hóa luồng dư luận yêu cầu phản hồi biểu đồ trong thời gian ngắn, việc truy vấn tính toán trực tiếp từ cơ sở dữ liệu quan hệ MySQL tốn nhiều thời gian. Ngược lại, Elasticsearch tối ưu hóa vượt trội cho tác vụ tìm kiếm và tổng hợp phân tán nhưng không hỗ trợ cơ chế quản lý giao dịch (transaction), dẫn đến rủi ro mất toàn vẹn dữ liệu khi thực hiện các thao tác Create, Update, Delete. Vì vậy, hệ thống sử dụng MySQL làm cơ sở dữ liệu chính để lưu trữ an toàn và Elasticsearch đóng vai trò công cụ tìm kiếm phục vụ hiển thị biểu đồ.

5. Quy trình tiền xử lý văn bản tiếng Việt trong đồ án gồm những bước cụ thể nào?
Quy trình tiền xử lý dữ liệu gồm 6 bước tuần tự: (1) Xóa mã thẻ HTML từ dữ liệu cào; (2) Chuẩn hóa Unicode tổ hợp về Unicode dựng sẵn; (3) Chuẩn hóa quy tắc đặt dấu thanh về kiểu cũ; (4) Tách từ tiếng Việt bằng thư viện Underthesea; (5) Xóa bỏ các ký tự đặc biệt, dấu câu và số đếm; (6) Loại bỏ stopword bằng bộ từ dừng của Lê Văn Duyệt kết hợp với bộ lọc stopword tự xây dựng theo tần suất xuất hiện ở tất cả các nhãn.


Kết luận

Đồ án tốt nghiệp của sinh viên Lê Văn Sang đã xây dựng thành công một giải pháp công nghệ toàn diện từ khâu nghiên cứu lý thuyết, thực nghiệm học máy đến triển khai hệ thống phần mềm hỗ trợ xác định luồng dư luận sinh viên từ mạng xã hội Facebook. Bằng việc kết hợp kỹ thuật tiền xử lý văn bản tiếng Việt chặt chẽ, trích xuất đặc trưng TF-IDF và thuật toán Logistic Regression theo phương pháp Binary Relevance, mô hình đạt chỉ số F1-score 72,10% trên tập dữ liệu 18.408 bài đăng. Việc kết hợp linh hoạt giữa cơ sở dữ liệu MySQL và Elasticsearch giúp hệ thống vận hành ổn định, mang lại công cụ hỗ trợ trực quan và thiết thực cho công tác quản trị tại cơ sở giáo dục đại học.