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

Trong hệ thống ngôn ngữ tiếng Việt, danh từ riêng (tên riêng) mang tính đa dạng cao về mặt hình thái và ngữ nghĩa. Cách đặt tên của người Việt không tuân theo các nguyên tắc ngữ pháp cố định, dẫn đến hiện tượng trùng lặp giữa tên riêng với danh từ chỉ sự vật, hiện tượng hoặc loài hoa (như Lan, Cúc, Hồng), cũng như với các động từ, tính từ thông dụng (như trường hợp từ "lừa" trong câu "Anh Lừa đã lừa hết tiền..."). Điều này gây ra nhiều trở ngại trong việc nhận biết thực thể, đặc biệt đối với người nước ngoài học tập và làm việc tại Việt Nam, hoặc trong các trường hợp văn bản mắc lỗi chính tả do tác giả vô tình không viết hoa chữ cái đầu của tên riêng.

Đề tài "Xây dựng ứng dụng Web hỗ trợ phát hiện tên riêng trong tiếng Việt ứng dụng máy học" do sinh viên Phạm Thái Dương thực hiện tại Khoa Mạng máy tính và Truyền thông, Trường Đại học Công nghệ Thông tin – Đại học Quốc gia TP. Hồ Chí Minh (2021) được triển khai nhằm giải quyết các vấn đề thực tiễn trên.

Mục tiêu và nhiệm vụ nghiên cứu của khóa luận được xác định cụ thể như sau:

  1. Quy đổi bài toán phát hiện tên riêng không viết hoa trong văn bản tiếng Việt về bài toán phân lớp nhị phân (Binary Classification) trong lĩnh vực máy học (Machine Learning).
  2. Xây dựng một tập ngữ liệu gán nhãn đặc thù tiếng Việt có khả năng tái lập ngữ cảnh của từng từ cần xét dựa trên nguyên lý hoạt động của mạng nơ-ron hồi quy hai chiều (BiLSTM).
  3. Nghiên cứu, huấn luyện và đánh giá thực nghiệm các thuật toán phân lớp phổ biến bao gồm Máy vector hỗ trợ (Support Vector Machine - SVM) với nhiều hàm nhân khác nhau và Cây quyết định (Decision Tree) với các tiêu chí phân chia tương ứng.
  4. Xây dựng và triển khai một ứng dụng web hoàn chỉnh (Full-stack Web Application) cho phép người dùng nhập văn bản, tự động phát hiện tên riêng và cung cấp cơ chế thu thập phản hồi, đóng góp dữ liệu từ người dùng để cải thiện mô hình.

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

  • Đối tượng nghiên cứu: Các thực thể tên riêng trong câu tiếng Việt (bao gồm tên người Việt, tên người nước ngoài phiên âm Hán Việt, danh từ riêng chỉ địa lý) xuất hiện dưới dạng không viết hoa hoặc viết hoa thông thường trong mối quan hệ ngữ cảnh với các từ lân cận.
  • Phạm vi dữ liệu: Bộ ngữ liệu được tổng hợp từ các bài báo chính thống, truyện dân gian, truyện ngụ ngôn, truyện cười của văn học Việt Nam và khẩu ngữ địa phương, sau đó được trích xuất đặc trưng thông qua công cụ VnCoreNLP.

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

Khóa luận tiến hành tổng hợp cơ sở lý thuyết về các phương pháp xử lý ngôn ngữ tự nhiên (NLP) và các thuật toán học máy giám sát dùng cho bài toán phân lớp:

  • Khung lý thuyết biểu diễn từ và mô hình chuỗi:

    • Word2vec (Skip-gram, CBOW) và GloVe: Tác giả đánh giá các mô hình nhúng từ (Word Embedding) này chủ yếu dựa trên tần suất đồng xuất hiện hoặc phân bố từ lân cận, không phân biệt được hiện tượng từ đồng âm khác nghĩa theo ngữ cảnh cụ thể (ví dụ: từ "cá" trong "cá cược" và "con cá"), do đó không phù hợp làm đặc trưng đơn lẻ cho bài toán.
    • RNN và LSTM: Mô hình mạng nơ-ron hồi quy tuần tự cho phép ghi nhớ thông tin quá khứ qua trạng thái ẩn $s_t = f(U(x_t) + W(s_{t-1}))$, tuy nhiên hạn chế của RNN và LSTM chuẩn là chỉ nắm bắt ngữ cảnh một chiều phía trước từ đang xét.
    • BiLSTM (Bidirectional LSTM): Sử dụng hai luồng LSTM xử lý dữ liệu theo hai chiều tiến và lùi, cho phép thu thập ngữ cảnh của cả những từ đứng trước và đứng sau từ mục tiêu. Đây là cơ sở lý thuyết nền tảng để tác giả thiết kế cấu trúc trích xuất đặc trưng cho bộ dữ liệu.
  • Công cụ phân tích cú pháp tiếng Việt (VnCoreNLP): Tác giả sử dụng bộ công cụ VnCoreNLP (chạy trên nền tảng Java) để tự động trích xuất 5 trường thông tin cú pháp - ngữ nghĩa từ văn bản đầu vào:

    1. Form: Phân loại từ (từ đơn, từ ghép).
    2. PosTag: Nhãn từ loại (Part-of-Speech Tagging: danh từ, động từ, tính từ...).
    3. NerLabel: Nhận dạng thực thể có tên (Named Entity Recognition - chỉ nhận diện mặc định với từ viết hoa).
    4. Head: Chỉ mục vị trí của từ đứng đầu phụ thuộc trong câu.
    5. DepLabel: Kiểu quan hệ phụ thuộc cú pháp (Dependency Parsing: chủ ngữ, tân ngữ, bổ ngữ...).
  • Cấu trúc bộ dữ liệu và phương pháp mã hóa: Từ nguyên lý của BiLSTM, tác giả xây dựng không gian ngữ cảnh cố định gồm 3 từ đứng trước và 3 từ đứng sau từ cần xét trong cùng một câu. Bộ dữ liệu huấn luyện gồm 22 cột thuộc tính:

    • 3 thông tin (PosTag, NerLabel, DepLabel) của từ hiện tại.
    • 9 thông tin tương ứng của 3 từ đứng trước (posTagBegin1, nerLabelBegin1, depLabelBegin1 đến Begin3).
    • 9 thông tin tương ứng của 3 từ đứng sau (posTagAfter1, nerLabelAfter1, depLabelAfter1 đến After3).
    • 1 cột nhãn phân lớp mục tiêu (Label: 1 là tên riêng, 0 là không phải tên riêng).
    • Tiền xử lý: Toàn bộ các giá trị phân loại (categorical) được mã hóa sang dạng số thông qua giải thuật Mã hóa nhị phân (Binary Encoding) dựa trên chuẩn biểu diễn ASCII.
  • Mô hình học máy thực nghiệm:

    • Support Vector Machine (SVM): Xây dựng mặt siêu phẳng phân tách $\langle W, X \rangle + b = 0$ nhằm tối đa hóa lề $m = \frac{2}{|W|}$. Tác giả khảo sát bài toán lề mềm (Soft-margin) với biến bù $\xi_i$ và tham số phạt $C$, cùng các hàm nhân (Kernel Trick) bao gồm Kernel Tuyến tính (Linear), Kernel Đa thức (Polynomial), và Kernel Gaussian RBF.
    • Cây quyết định (Decision Tree): Sử dụng thuật toán ID3 và biến thể C4.5, tính toán chỉ số Entropy $H(p) = -\sum p_i \log_2(p_i)$ và Độ lợi thông tin (Information Gain) $G(x, S) = H(S) - H(x, S)$, kết hợp khảo sát tiêu chí phân chia Gini Impurity và các điều kiện dừng cắt tỉa cây nhằm tránh hiện tượng Overfitting.
  • Phân chia tập dữ liệu và độ đo đánh giá: Tập dữ liệu gồm 2.415 mẫu sau khi lọc bỏ mất cân bằng được chia theo tỷ lệ: 70% tập huấn luyện (Train) và 30% tập kiểm thử (Test). Các độ đo đánh giá bao gồm: Accuracy, Recall, Precision và F1-score.


Thiết kế và triển khai

Khóa luận thiết kế và hiện thực hóa mô hình học máy thành một hệ thống ứng dụng web hoàn chỉnh với kiến trúc phân tầng rõ ràng giữa Frontend, Backend và Cơ sở dữ liệu:

[Người dùng / Trình duyệt]
     (HTTP / Axios)
[Frontend: React.js UI]
  - Trang Home (Nhập văn bản, hiển thị kết quả)
  - Trang Accept (Đánh giá, gửi phản hồi gán nhãn)
  - Trang History (Lịch sử xử lý)
  - Trang Admin (Quản trị hệ thống)
     (RESTful API)
[Backend: Python Flask Server]
  - Quản lý API & Điều hướng logic
  - Module tiền xử lý & Binary Encoding
  - Mô hình dự đoán SVM (Linear Kernel)
[VnCoreNLP Java Server]      [Cơ sở dữ liệu MySQL]
(Trích xuất PosTag,          (Bảng DataTrain, Text_train,
 NerLabel, DepLabel)          History_request, Sentence_request...)
  • Kiến trúc Frontend:

    • Xây dựng bằng thư viện React.js trên nền tảng Node.js, tận dụng cơ chế Hot Reload để tối ưu hóa quá trình phát triển giao diện người dùng (UI).
    • Sử dụng thư viện Axios để thực hiện các cuộc gọi RESTful API bất đồng bộ đến máy chủ Backend.
    • Giao diện cung cấp các phân hệ chức năng: Trang chủ (Home) tiếp nhận văn bản đầu vào; Trang xác nhận/góp ý (Accept) cho phép người dùng bình chọn kết quả đúng/sai; Trang lịch sử (History) lưu trữ các câu đã dự đoán; Trang quản trị (Admin) dành cho người quản lý hệ thống.
  • Kiến trúc Backend và Tích hợp Học máy:

    • Phát triển trên nền tảng Python Flask, quản lý môi trường thông qua Anaconda Navigator.
    • Tích hợp và gọi dịch vụ VnCoreNLP thông qua giao thức HTTP đến máy chủ Java chạy cục bộ (http://127.0.0.1:9000).
    • Dữ liệu văn bản từ API được VnCoreNLP phân tích thành các thẻ cú pháp, cấu trúc lại thành ma trận 21 đặc trưng ngữ cảnh (cửa sổ trượt 3 từ trước - 3 từ sau), sau đó được xử lý qua bộ biến đổi BinaryEncoder.
    • Mô hình SVM Kernel Linear đã huấn luyện sẽ thực hiện phân loại nhãn nhị phân cho từng từ và trả kết quả JSON về giao diện để làm nổi bật các tên riêng được phát hiện.
  • Thiết kế Cơ sở dữ liệu (MySQL RDBMS): Hệ thống thiết lập cơ sở dữ liệu quan hệ MySQL kết nối trực tiếp với Python Flask, gồm 10 bảng dữ liệu chính:

    • Text_train & DataTrain: Lưu trữ văn bản gốc và tập thuộc tính 22 cột dùng cho huấn luyện.
    • Text_request & Data_request: Lưu trữ văn bản và các vector đặc trưng do người dùng gửi lên qua API.
    • Form_request, Form_sen_request, Sentence_request: Quản lý các cấu trúc từ, câu và biểu mẫu phân tích.
    • Data_request_copy: Bảng sao lưu dữ liệu trung gian trong quá trình xử lý.
    • History_request & History_accept: Ghi nhận nhật ký dự đoán của hệ thống và các phản hồi đánh giá, xác nhận độ chính xác từ người dùng phục vụ tái huấn luyện.
  • Kiểm thử thực nghiệm các trường hợp ngôn ngữ: Tác giả tiến hành kiểm thử ứng dụng qua 8 kịch bản thực tế:

    1. Câu chứa một tên riêng đơn lẻ.
    2. Câu chứa tên riêng có đầy đủ họ, chữ lót và tên.
    3. Câu chứa hai tên riêng phân tách.
    4. Câu chứa hai tên riêng có cấu trúc họ tên đầy đủ.
    5. Câu chứa hai từ đồng âm giống nhau, trong đó một từ là tên riêng, một từ là danh từ/động từ thông thường.
    6. Câu chứa từ đồng âm cùng xuất hiện với hai tên riêng khác.
    7. Câu chứa từ ba tên riêng trở lên.
    8. Câu chứa tên người nước ngoài phiên âm Hán Việt, danh từ riêng chỉ địa lý và thử nghiệm trên một đoạn văn bản ngắn liên tục.

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

CHƯƠNG 1: HƯỚNG NGHIÊN CỨU VÀ NHỮNG ĐÁNH GIÁ LIÊN QUAN ĐẾN KHÓA LUẬN

Chương 1 tập trung khảo sát tổng quan các nghiên cứu liên quan đến kỹ thuật biểu diễn từ và xử lý chuỗi trong NLP. Tác giả phân tích chi tiết:

  • Mô hình Word2vec với hai kiến trúc Skip-gram (dùng từ trung tâm đoán từ xung quanh) và CBOW (dùng từ xung quanh đoán từ trung tâm), cùng kỹ thuật phân rã ma trận của GloVe. Tác giả chỉ ra nhược điểm cốt lõi là không xử lý được từ đa nghĩa khi thiếu thông tin cú pháp phụ thuộc.
  • Cấu trúc mạng nơ-ron hồi quy RNN và bộ nhớ ngắn-dài hạn LSTM, phân tích công thức lan truyền trạng thái ẩn và hạn chế bộ nhớ một chiều.
  • Khái niệm mạng BiLSTM với cơ chế quét dữ liệu hai chiều. Từ phân tích này, tác giả đề xuất giải pháp của khóa luận: thay vì đưa toàn bộ câu vào mạng BiLSTM phức tạp, khóa luận cố định kích thước cửa sổ trượt lấy đúng 3 từ phía trước và 3 từ phía sau của từ mục tiêu để xây dựng bộ vector thuộc tính rút gọn, giúp tối ưu hóa tốc độ xử lý và huấn luyện máy học.

CHƯƠNG 2: CƠ SỞ VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Chương 2 trình bày toàn bộ quy trình thiết lập dữ liệu và cơ sở toán học của các thuật toán phân lớp:

  • Phân tích chi tiết 5 trường đầu ra của VnCoreNLP (Form, PosTag, NerLabel, Head, DepLabel) và cách tổ chức bộ dữ liệu 22 cột.
  • Cơ sở toán học của SVM: định nghĩa siêu phẳng $\langle W, X \rangle + b = 0$, công thức tính khoảng cách lề $m = d_+ + d_- = \frac{2}{|W|}$, bài toán tối ưu hóa ràng buộc lề cứng (Hard-margin) $\min \frac{1}{2}|W|^2$ với điều kiện $y_i(\langle W, X_i \rangle + b) \ge 1$, bài toán lề mềm (Soft-margin) $\min \frac{1}{2}|W|^2 + C\sum \xi_i$, và các hàm nhân Kernel (Linear, Poly, RBF, Sigmoid).
  • Cơ sở toán học của Cây quyết định: thuật toán ID3, công thức Entropy $H(S)$, Information Gain $G(x,S)$, Gain Ratio trong C4.5 dựa trên đại lượng $SplitInfo$, cùng các tiêu chuẩn dừng phân nhánh và kỹ thuật cắt tỉa cây.
  • Kỹ thuật tiền xử lý bằng Binary Encoding chuyển đổi biến định danh sang chuẩn nhị phân ASCII.
  • Huấn luyện thử nghiệm 5 mô hình trên tập dữ liệu 2.415 dòng (756 nhãn 1 và 1.659 nhãn 0) với tỷ lệ 70% train / 30% test. Kết quả thực nghiệm cho thấy mô hình SVM Kernel Linear mang lại hiệu quả dự đoán ổn định và chuẩn xác nhất trên tập dữ liệu thử nghiệm, được lựa chọn làm mô hình cốt lõi cho ứng dụng web.

CHƯƠNG 3: XÂY DỰNG VÀ PHÁT TRIỂN KHÓA LUẬN

Chương 3 mô tả quá trình thiết kế, cài đặt phần mềm và kiểm nghiệm hệ thống:

  • Hướng dẫn thiết lập môi trường phát triển Frontend bằng React.js kết hợp thư viện Axios; cấu hình Backend Python Flask qua Anaconda Navigator; triển khai máy chủ VnCoreNLP.
  • Thiết kế sơ đồ cơ sở dữ liệu quan hệ MySQL với 10 bảng chuyên dụng nhằm quản lý tập mẫu huấn luyện, phiên yêu cầu, cấu trúc câu và lịch sử phản hồi của người dùng.
  • Trình bày chi tiết luồng xử lý dữ liệu đầu vào: tiếp nhận văn bản thô $\to$ phân tích ngữ pháp qua VnCoreNLP $\to$ trích xuất vector ngữ cảnh 21 chiều $\to$ mã hóa nhị phân $\to$ đưa qua mô hình SVM Linear $\to$ xuất kết quả trực quan trên UI.
  • Ghi nhận và chụp ảnh thực nghiệm kết quả dự đoán trên 8 trường hợp kiểm thử thực tế (tên đơn, họ tên đầy đủ, tên lặp từ loại, tên Hán Việt, địa danh, đoạn văn bản), chứng minh khả năng phát hiện chính xác tên riêng ngay cả khi không viết hoa.

CHƯƠNG 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Chương 4 tổng kết các kết quả đạt được của khóa luận:

  • Hoàn thành mục tiêu xây dựng quy trình trích xuất đặc trưng ngữ cảnh tiếng Việt và ứng dụng thành công thuật toán SVM vào việc phân loại tên riêng.
  • Triển khai hoàn chỉnh ứng dụng web tích hợp đầy đủ các chức năng người dùng, quản trị và tiếp nhận phản hồi.
  • Xác định các định hướng mở rộng hệ thống trong tương lai nhằm nâng cao độ chính xác và mở rộng quy mô bộ ngữ liệu.

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

1. Kết quả thực nghiệm chính

  • Xây dựng thành công bộ dữ liệu chuẩn hóa đặc thù cho bài toán nhận dạng tên riêng không viết hoa trong tiếng Việt với tổng số 2.415 dòng dữ liệu (trong đó có 756 nhãn '1' là tên riêng và 1.659 nhãn '0' không phải tên riêng).
  • Đánh giá thực nghiệm so sánh 5 cấu hình mô hình học máy trên tập dữ liệu nghiên cứu:
STT Tên mô hình thuật toán Cấu hình / Tham số Kết quả đánh giá
1 Support Vector Machine (SVM) Kernel Linear Cho kết quả phân lớp tối ưu và ổn định nhất, được chọn tích hợp vào ứng dụng
2 Support Vector Machine (SVM) Kernel Polynomial (Poly) Phân lớp dữ liệu phi tuyến trên không gian mở rộng
3 Support Vector Machine (SVM) Kernel Gaussian RBF Xử lý dữ liệu phi tuyến bằng hàm nhân bán kính
4 Decision Tree Criterion: Entropy (ID3/C4.5) Phân nhánh dựa trên độ đo giảm Entropy và Information Gain
5 Decision Tree Criterion: Gini Phân nhánh dựa trên chỉ số bất thuần Gini Impurity
  • Độ tin cậy và độ chính xác tổng thể của quá trình huấn luyện mô hình đạt trong khoảng 75% – 80%.

2. Giải pháp và sản phẩm đề xuất

  • Đề xuất giải pháp trích xuất ngữ cảnh cục bộ đối xứng (3 từ trước, 3 từ sau) kết hợp 3 trường thông tin cú pháp chuyên sâu (PosTag, NerLabel, DepLabel) từ VnCoreNLP để giải quyết bài toán mất dấu viết hoa của tên riêng tiếng Việt.
  • Hiện thực hóa thành công sản phẩm Ứng dụng Web hoàn chỉnh sử dụng React.js, Python Flask và MySQL, hỗ trợ giao diện kiểm tra văn bản trực tiếp và module thu thập phản hồi (Accept/History_accept) phục vụ làm giàu dữ liệu tự động.

3. Đóng góp của đề tài

  • Khắc phục hạn chế của các hệ thống nhận dạng thực thể có tên (NER) truyền thống trong tiếng Việt vốn phụ thuộc hoàn toàn vào chữ cái viết hoa đầu từ.
  • Đóng góp một phương pháp trích xuất đặc trưng gọn nhẹ, giảm thiểu chi phí tính toán so với việc huấn luyện các mô hình mạng nơ-ron sâu BiLSTM toàn phần nhưng vẫn đảm bảo khả năng nắm bắt ngữ cảnh phân loại.

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

1. Hạn chế

  • Quy mô dữ liệu: Kích thước bộ dữ liệu huấn luyện còn ở mức khiêm tốn (2.415 dòng dữ liệu) và vẫn còn hiện tượng chênh lệch giữa hai lớp (756 mẫu dương tính so với 1.659 mẫu âm tính).
  • Phạm vi ngữ cảnh cố định: Việc giới hạn cố định cửa sổ ngữ cảnh ở mức 3 từ đứng trước và 3 từ đứng sau có thể chưa bao quát được các mối quan hệ phụ thuộc ngữ pháp ở khoảng cách quá xa trong các câu phức hợp nhiều mệnh đề.
  • Độ chính xác: Độ tin cậy dự đoán của mô hình mới dừng lại ở mức 75% - 80%, vẫn tồn tại một số trường hợp phân loại nhầm đối với các từ ngữ địa phương hiếm gặp hoặc câu văn có cấu trúc ngữ pháp bất thường.

2. Hướng nghiên cứu tiếp

  • Mở rộng quy mô và nâng cao độ đa dạng của bộ ngữ liệu thông qua việc tổng hợp liên tục các phản hồi gán nhãn thực tế từ người dùng qua bảng History_accept.
  • Thử nghiệm kết hợp các phương pháp học sâu (Deep Learning) hoặc tinh chỉnh các tham số tối ưu hơn cho bộ phân lớp nhằm nâng cao tỷ lệ dự đoán chính xác.
  • Tối ưu hóa hiệu năng của pipeline xử lý văn bản, hỗ trợ kiểm tra các tài liệu văn bản dài với tốc độ phản hồi nhanh hơn.

Giá trị tham khảo

Tài liệu khóa luận có giá trị tham khảo chuyên môn đối với sinh viên, học viên và các nhà phát triển thuộc các chuyên ngành Mạng máy tính, Công nghệ Thông tin, Khoa học Dữ liệu và Xử lý Ngôn ngữ Tự nhiên (NLP):

  • Phương pháp kỹ thuật đáng tham khảo:
    • Quy trình tích hợp công cụ VnCoreNLP trong môi trường Python Flask để trích xuất đặc trưng cú pháp tiếng Việt phục vụ các bài toán học máy cổ điển.
    • Kỹ thuật xây dựng vector đặc trưng ngữ cảnh cửa sổ trượt (Sliding Window) kết hợp phương pháp mã hóa nhị phân (Binary Encoding) cho các biến định danh văn bản.
    • Kiến trúc tích hợp hoàn chỉnh một pipeline Machine Learning vào ứng dụng web thực tế, bao gồm việc tổ chức cơ sở dữ liệu MySQL để lưu trữ vết dữ liệu và thu thập phản hồi người dùng (Human-in-the-loop).

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

1. Tại sao tác giả không sử dụng trực tiếp mô hình Word2vec hay GloVe để phát hiện tên riêng trong đề tài?

Theo phân tích của tác giả trong Chương 1, Word2vec và GloVe chỉ thực hiện ánh xạ từ thành các vector tĩnh dựa trên phân bố đồng xuất hiện và không xử lý được các từ đồng âm khác nghĩa theo ngữ cảnh cụ thể (ví dụ: từ "cá" trong "cá cược" và "con cá"). Do bài toán tập trung vào việc phân biệt các từ thông thường bị trùng hình thức với tên riêng khi không viết hoa, mô hình bắt buộc phải dựa vào các thẻ ngữ pháp và quan hệ phụ thuộc cú pháp lân cận thay vì chỉ dựa vào vector nhúng từ tĩnh.

2. Bộ dữ liệu huấn luyện của khóa luận có kích thước bao nhiêu và được thu thập từ những nguồn nào?

Bộ dữ liệu của khóa luận gồm tổng cộng 2.415 dòng dữ liệu, bao gồm 756 nhãn '1' (là tên riêng) và 1.659 nhãn '0' (không phải tên riêng). Dữ liệu được trích xuất từ các bài báo chính thống, truyện dân gian, truyện ngụ ngôn, truyện cười của văn học Việt Nam và các câu khẩu ngữ địa phương nhằm đảm bảo tính chuẩn xác ngữ pháp và phong phú về mặt ngôn ngữ.

3. Cấu trúc 22 cột thuộc tính trong bộ dữ liệu của khóa luận gồm những thông tin gì?

Bộ dữ liệu gồm 22 cột tương ứng với:

  • 3 thuộc tính của từ đang xét: PosTag (từ loại), NerLabel (thực thể tên), DepLabel (quan hệ phụ thuộc cú pháp).
  • 9 thuộc tính của 3 từ đứng trước: posTagBegin1, nerLabelBegin1, depLabelBegin1 đến Begin3.
  • 9 thuộc tính của 3 từ đứng sau: posTagAfter1, nerLabelAfter1, depLabelAfter1 đến After3.
  • 1 thuộc tính cuối cùng là nhãn phân lớp nhị phân (1 hoặc 0).

4. Những mô hình học máy nào đã được thử nghiệm và mô hình nào được chọn để tích hợp vào ứng dụng web?

Tác giả đã thử nghiệm 5 cấu hình mô hình học máy gồm: SVM Kernel Linear, SVM Kernel Polynomial, SVM Kernel RBF, Decision Tree tiêu chí Entropy và Decision Tree tiêu chí Gini. Dựa trên kết quả đánh giá thực nghiệm trong quá trình huấn luyện, mô hình SVM Kernel Linear cho kết quả tối ưu và ổn định nhất nên đã được lựa chọn để đóng gói vào ứng dụng web.

5. Kiến trúc kỹ thuật của ứng dụng web được triển khai bằng những công nghệ nào?

Ứng dụng web được xây dựng với kiến trúc gồm:

  • Frontend: Thư viện React.js, sử dụng Axios để gọi API và hỗ trợ Hot Reload.
  • Backend: Framework Python Flask, quản lý qua môi trường Anaconda Navigator, kết nối với máy chủ Java chạy công cụ VnCoreNLP.
  • Cơ sở dữ liệu: Hệ quản trị cơ sở dữ liệu quan hệ MySQL với 10 bảng chuyên dụng quản lý dữ liệu huấn luyện, dữ liệu phân tích và lịch sử đánh giá của người dùng.

Kết luận

Khóa luận tốt nghiệp của sinh viên Phạm Thái Dương đã giải quyết bài toán phát hiện tên riêng không viết hoa trong tiếng Việt bằng cách kết hợp công cụ phân tích cú pháp VnCoreNLP với các thuật toán học máy giám sát. Đề tài đã đề xuất thành công cấu trúc ngữ cảnh 22 thuộc tính lấy cảm hứng từ mạng BiLSTM và chứng minh tính hiệu quả của mô hình SVM Kernel Linear với độ chính xác đạt 75% – 80%. Toàn bộ giải pháp đã được hiện thực hóa thành ứng dụng web hoàn chỉnh với React.js, Python Flask và MySQL, cung cấp công cụ kiểm tra văn bản và cơ chế thu thập dữ liệu phục vụ phát triển lâu dài.