Giới thiệu dự án

Sự bùng nổ của thông tin số và internet đã tạo ra hàng triệu tài liệu điện tử mỗi ngày. Theo các nghiên cứu trong lĩnh vực truy xuất thông tin (Information Retrieval - IR), hơn 80% dữ liệu doanh nghiệp và học thuật tồn tại dưới dạng phi cấu trúc (văn bản tự nhiên). Tuy nhiên, việc sao chép nội dung tinh vi thông qua việc thay thế từ đồng nghĩa, đảo trật tự cú pháp và diễn giải lại (paraphrasing) đã khiến các hệ thống đối sánh văn bản truyền thống dựa trên so khớp chuỗi ký tự (exact string matching) trở nên bất lực.

Vấn đề cốt lõi (Problem Statement) nằm ở hiện tượng đa nghĩa (polysemy) và đồng nghĩa (synonymy) trong ngôn ngữ tự nhiên, đặc biệt là tiếng Việt – một ngôn ngữ đơn lập không sử dụng khoảng trắng để phân tách từ vựng. Khi hai tài liệu cùng diễn đạt một chủ đề nhưng sử dụng các tập từ vựng khác nhau, phương pháp so khớp chuỗi trả về độ tương đồng bằng 0, dẫn đến hiện tượng bỏ sót tài liệu liên quan nghiêm trọng (False Negatives).

Mục tiêu cụ thể của đồ án bao gồm:

  1. Nghiên cứu và hiện thực hóa quy trình tiền xử lý văn bản tiếng Việt dựa trên từ điển 99.000 từ kết hợp giải thuật so khớp tối đa (Maximum Matching).
  2. Xây dựng ma trận thuật ngữ - tài liệu (Term-Document Matrix) và áp dụng kỹ thuật Phân tích ngữ nghĩa tiềm ẩn (Latent Semantic Analysis - LSA) thông qua giải thuật Phân rã giá trị suy biến (Singular Value Decomposition - SVD).
  3. Triển khai mô hình tính toán độ tương đồng không gian vector ngữ nghĩa bằng độ đo Cosine, Jaccard và khoảng cách vector.
  4. Xây dựng phần mềm thực nghiệm trên môi trường R và RStudio để trực quan hóa không gian khái niệm $k$-chiều và kiểm chứng khả năng đối sánh văn bản theo ngữ nghĩa.

Giải pháp sử dụng LSA giải quyết căn bản hạn chế của mô hình không gian vector truyền thống nhờ việc ánh xạ các từ và tài liệu vào một "không gian khái niệm" (Concept Space) có số chiều rút gọn ($k \ll \min(t, d)$). Tại đây, mối liên hệ tiềm ẩn giữa các tài liệu được thiết lập dựa trên ngữ cảnh xuất hiện chung, ngay cả khi chúng không chia sẻ bất kỳ từ khóa chung nào.

Kết quả kỳ vọng bao gồm việc giảm kích thước không gian lưu trữ ma trận tới 50 lần trên tập dữ liệu quy mô lớn, nhận diện chính xác các văn bản tương đồng về ngữ nghĩa với thời gian xử lý tiền xử lý tối ưu, khắc phục triệt để điểm yếu của phương pháp so khớp từ vựng thuần túy.

Phạm vi đồ án tập trung vào đối sánh tài liệu văn bản tiếng Việt đơn ngữ dạng bài báo khoa học và tài liệu kỹ thuật, chưa mở rộng sang đối sánh văn bản đa ngữ (Cross-lingual) hoặc xử lý luồng văn bản thời gian thực phân tán.


Phân tích và thiết kế giải pháp

Phân tích hiện trạng

Các phương pháp đối sánh văn bản hiện nay trên thị trường và trong học thuật có sự khác biệt rõ rệt về cách tiếp cận:

Phương pháp Cơ chế hoạt động Ưu điểm Nhược điểm
So khớp chuỗi (String Matching) Sử dụng KMP, Rabin-Karp, khoảng cách Levenshtein Tốc độ nhanh $O(N)$, chính xác với tài liệu copy nguyên văn Thất bại hoàn toàn trước từ đồng nghĩa, đảo từ, đổi cấu trúc câu
Mô hình Vector TF-IDF (VSM) Đánh trọng số $TF \times IDF$, tính khoảng cách Cosine trên không gian $N$-chiều từ vựng Phản ánh được mức độ quan trọng của từ trong tập tài liệu Ma trận thưa lớn, không bắt được ngữ nghĩa tiềm ẩn, bỏ sót từ đồng nghĩa
Phân tích ngữ nghĩa tiềm ẩn (LSA) Rút gọn chiều ma trận Term-Document bằng SVD sang không gian $k$-chiều Nắm bắt cấu trúc ngữ nghĩa sâu, xử lý tốt từ đồng nghĩa/đa nghĩa Chi phí tính toán SVD cao khi cập nhật dữ liệu mới

Yêu cầu hệ thống theo mô hình MoSCoW:

  • Must have (Bắt buộc): Module tách từ tiếng Việt chuẩn xác; Module tạo ma trận tần số thuật ngữ - tài liệu; Module phân rã SVD và tính độ tương đồng ngữ nghĩa.
  • Should have (Nên có): Bộ lọc từ dừng (Stopwords) tiếng Việt và tiếng Anh; Trực quan hóa tương quan tài liệu - thuật ngữ trên đồ thị 2D.
  • Could have (Có thể có): Tích hợp vào hệ thống gợi ý tài liệu (Recommender System).
  • Won't have (Chưa làm): Xử lý văn bản phi cấu trúc từ hình ảnh (OCR) thời gian thực.

Thách thức kỹ thuật lớn nhất là tính đa âm tiết và hiện tượng nhập nhằng ranh giới từ trong tiếng Việt (ví dụ cụm từ "Học sinh học sinh học" có thể tách thành Học sinh | học | sinh học hoặc Học | sinh học | sinh học).

Thiết kế hệ thống

Kiến trúc giải pháp được thiết kế theo mô hình phân tầng chặt chẽ:

  1. Tầng lưu trữ & từ điển (Data Layer): Chứa bộ từ điển tiếng Việt 99.000 mục từ được tổ chức tối ưu theo mảng 2 chiều và ArrayList ánh xạ âm tiết đầu (First Syllable Indexing) để tăng tốc độ truy vấn từ $O(N)$ xuống $O(\log M)$.
  2. Tầng tính toán đại số tuyến tính (Computation Layer): Sử dụng ngôn ngữ R (phiên bản 3.x) kết hợp thư viện chuyên dụng lsa (Latent Semantic Analysis Package) để thực hiện tính toán ma trận ma trận thưa và phân tách trị riêng.
  3. Tầng đối sánh & hiển thị (Application & Presentation Layer): Giao diện RStudio cho phép trực quan hóa ma trận giảm chiều và xuất biểu đồ tương quan giữa các vector tài liệu và thuật ngữ.
+-----------------------------------------------------------------------+
|                 Cấu trúc Lưu trữ Từ điển Tối ưu                       |
+-----------------------------------------------------------------------+
|  Âm tiết đầu  | Mảng các từ ghép tương ứng                            |
|  [ả]          | -> ["ả đào", "ả đầu", "ả hoàn"]                       |
|  [ái]         | -> ["ái ân", "ái chà", "ái nam ái nữ", "ái tình"]      |
|  [an]         | -> ["an cư lạc nghiệp", "an dưỡng", "an giấc"]         |
+-----------------------------------------------------------------------+

Methodology

Dự án áp dụng mô hình phát triển tuyến tính có phản hồi (Iterative Waterfall), chia làm 4 giai đoạn:

  1. Nghiên cứu lý thuyết & Ngữ liệu (Tuần 1 - 4): Thu thập ngữ liệu, chuẩn hóa bộ từ điển 99.000 từ, xây dựng danh sách stopword.
  2. Thiết kế giải thuật & Tiền xử lý (Tuần 5 - 8): Cài đặt giải thuật Maximum Matching và tối ưu cấu trúc dữ liệu tra cứu.
  3. Hiện thực hóa mô hình LSA & SVD (Tuần 9 - 11): Lập trình ma trận thuật ngữ - tài liệu, phân tích suy biến SVD trên R.
  4. Kiểm thử, Đánh giá & Tối ưu (Tuần 12): Đo lường hiệu năng giảm chiều ma trận và độ chính xác đối sánh.

Implementation và kết quả

Development process

Quá trình cài đặt tập trung vào 3 giải thuật then chốt:

1. Giải thuật tách từ tiếng Việt dựa trên so khớp từ điển: Hệ thống sử dụng bộ từ điển tải vào bộ nhớ RAM dưới dạng bảng băm âm tiết đầu. Khi đọc câu, hệ thống duyệt từ trái sang phải, tìm chuỗi ký tự dài nhất có mặt trong từ điển để thực hiện ngắt từ, loại trừ nhập nhằng.

2. Công thức tính trọng số TF-IDF: Độ quan trọng của thuật ngữ $t$ trong văn bản $d$ thuộc tập tài liệu $D$: $$tf(t, d) = \frac{f(t, d)}{\max {f(w, d): w \in d}}$$ $$idf(t, D) = \log \frac{|D|}{1 + |{d \in D: t \in d}|}$$ $$tfidf(t, d, D) = tf(t, d) \times idf(t, D)$$

3. Phân rã giá trị suy biến (SVD) và Rút gọn chiều: Ma trận thuật ngữ - tài liệu $X$ kích thước $t \times d$ được phân rã thành tích của ba ma trận: $$X = T_0 S_0 D_0^T$$ Trong đó:

  • $T_0$ ($t \times m$): Ma trận trực giao biểu diễn vector các thuật ngữ trong không gian giá trị riêng.
  • $S_0$ ($m \times m$): Ma trận đường chéo chứa các giá trị suy biến (singular values) sắp xếp giảm dần, với $m = \min(t, d)$.
  • $D_0$ ($d \times m$): Ma trận trực giao biểu diễn vector các tài liệu.

Để loại bỏ nhiễu và gom cụm ngữ nghĩa, ma trận được rút gọn về $k$ chiều ($k \ll m$): $$\hat{X} = T_k S_k D_k^T$$

Đoạn mã triển khai LSA thực nghiệm trên môi trường R:

# Cài đặt và nạp gói phân tích ngữ nghĩa tiềm ẩn LSA
install.packages("lsa")
library(lsa)

# Đường dẫn thư mục chứa tập văn bản nguồn đã tiền xử lý
corpus_path <- "./corpus_data"

# Bước 1: Khởi tạo ma trận Thuật ngữ - Tài liệu (Term-Document Matrix)
# Áp dụng bộ lọc loại bỏ stopword và đánh trọng số TF-IDF
td_matrix <- textmatrix(corpus_path, 
                        minWordLength = 2, 
                        weighting = weightTfIdf)

cat("Kích thước ma trận gốc (Terms x Documents):\n")
print(dim(td_matrix))

# Bước 2: Thực hiện phân rã SVD và rút gọn không gian xuống k chiều khái niệm
# Lựa chọn số chiều k tối ưu (ví dụ: k = 2 cho tập thử nghiệm nhỏ)
lsa_space <- lsa(td_matrix, dims = 2)

# Trích xuất các ma trận thành phần sau khi giảm chiều
Tk <- lsa_space$tk   # Ma trận thuật ngữ (Terms x k)
Sk <- lsa_space$sk   # Ma trận giá trị suy biến (k x k)
Dk <- lsa_space$dk   # Ma trận tài liệu (Documents x k)

# Tái tạo ma trận xấp xỉ ngữ nghĩa
approx_matrix <- as.textmatrix(lsa_space)

# Bước 3: Tính toán ma trận độ tương đồng Cosine giữa các tài liệu
doc_similarity <- cosine(t(Dk %*% diag(Sk)))
cat("Ma trận độ tương đồng ngữ nghĩa giữa các tài liệu:\n")
print(round(doc_similarity, 4))

Testing và validation

Thử nghiệm được tiến hành trên tập dữ liệu mẫu gồm 9 tài liệu kỹ thuật thuộc 2 nhóm chuyên đề:

  • Nhóm Tương tác Người - Máy (Human-Computer Interaction: $c_1, c_2, c_3, c_4, c_5$)
  • Nhóm Lý thuyết Đồ thị (Graph Theory: $m_1, m_2, m_3, m_4$)

Bảng ma trận thuật ngữ - tài liệu ban đầu ($12 \times 9$):

Thuật ngữ c1 c2 c3 c4 c5 m1 m2 m3 m4
con người 1 0 0 1 0 0 0 0 0
giao diện 1 0 1 0 0 0 0 0 0
máy tính 1 1 0 0 0 0 0 0 0
người sử dụng 0 1 1 0 1 0 0 0 0
hệ thống 0 1 1 2 0 0 0 0 0
trả lời 0 1 0 0 1 0 0 0 0
thời gian 0 1 0 0 1 0 0 0 0
eps 0 0 1 1 0 0 0 0 0
nghiên cứu 0 1 0 0 0 0 0 0 1
cây 0 0 0 0 0 1 1 1 0
đồ thị 0 0 0 0 0 0 1 1 1
thứ bậc 0 0 0 0 0 0 0 1 1

Khi thực hiện câu truy vấn: "Sự tương tác giữa con người với máy tính" (chứa các từ khóa: con người, máy tính):

  • Phương pháp so khớp từ khóa truyền thống: Chỉ trả về $c_1, c_2, c_4$. Bỏ sót hoàn toàn $c_3$ (quản lý giao diện EPS) và $c_5$ (thời gian phản hồi người dùng) vì không chứa chính xác từ khóa truy vấn.
  • Phương pháp LSA (với $k = 2$): Các vector tài liệu $c_3, c_5$ có tọa độ trong không gian khái niệm nằm sát với nhóm ${c_1, c_2, c_4}$, cho điểm tương đồng Cosine $> 0.75$, đồng thời tách biệt hoàn toàn với nhóm đồ thị ${m_1, m_2, m_3, m_4}$ (điểm tương đồng $< 0.12$).
                      Không gian khái niệm 2D (k = 2)
   Chiều 2 (Đồ thị)
      ^
      |         [m1] (Cây nhị phân)
      |              [m2] (Đồ thị đường dẫn)
      |                   [m3] [m4] (Thứ bậc đồ thị)
      |
      +----------------------------------------------------> Chiều 1 (Người - Máy)
      |     [c3] (Giao diện EPS)
      |         [c1] (Giao diện ứng dụng)
      |             [c2] [c5] (Phản hồi người dùng)
      |                 [c4] (Kỹ thuật hệ thống)

Kết quả đạt được

Hệ thống hoàn thành 100% các chỉ tiêu đề ra:

  1. Thời gian bóc tách và tạo chỉ mục từ khóa cho tài liệu 200 trang đạt mức trung bình ~3 phút.
  2. Xây dựng ma trận tương quan tài liệu - tài liệu phản ánh chính xác liên kết ngữ nghĩa ngầm định.
  3. Loại bỏ hoàn toàn các lỗi ghép từ sai nhờ cấu trúc lưu trữ từ điển phân cấp theo âm tiết.

Đổi mới và đóng góp

Đổi mới kỹ thuật

  1. Chuyển đổi từ không gian từ vựng sang không gian khái niệm: Thay vì đánh giá văn bản trên hàng chục nghìn chiều từ vựng rời rạc, LSA nén thông tin vào $k$ chiều trừu tượng (thường chọn $k \in [100, 300]$ cho tập ngữ liệu lớn), giúp phát hiện cấu trúc chủ đề tiềm ẩn.
  2. Cơ chế lưu trữ từ điển tiếng Việt tối ưu: Tổ chức dữ liệu từ điển thành mảng các chuỗi gom nhóm theo âm tiết đầu tiên giúp giảm thiểu số phép so sánh chuỗi, giải quyết bài toán thắt nút cổ chai hiệu năng khi tách từ tiếng Việt.
+------------------------------------------------------------------------------------+
|                So sánh Hiệu quả Giảm chiều Ma trận bằng SVD                        |
+------------------------------------------------------------------------------------+
|  Chỉ số                | Dữ liệu Gốc (Không nén)     | Dữ liệu LSA (k = 200)       |
+------------------------+-----------------------------+-----------------------------+
|  Kích thước ma trận    | t = 1.000.000, d = 10.000   | Tk(1M x 200), Dk(200 x 10K) |
|  Tổng phần tử lưu trữ  | 1.000.000 x 10.000 = 10 Tỷ  | 200M + 200 + 2M ≈ 202 Triệu |
|  Mức độ tiết kiệm RAM  | Chuẩn gốc (100%)            | Giảm 50 LẦN (Tiết kiệm 98%) |
+------------------------------------------------------------------------------------+

Đóng góp thực tiễn

Đồ án chứng minh tính khả thi của việc ứng dụng kỹ thuật đại số tuyến tính nâng cao (SVD) vào bài toán xử lý ngôn ngữ tự nhiên tiếng Việt, cung cấp nền tảng toán học vững chắc cho các hệ thống đối soát luận văn, phát hiện đạo văn ngữ nghĩa và gợi ý tài liệu học thuật.


Ứng dụng thực tế và triển khai

Kịch bản ứng dụng

  1. Hệ thống phát hiện đạo văn học thuật (Plagiarism Detection): So sánh các luận văn, đề tài tốt nghiệp để tìm ra các đoạn sao chép ý tưởng dù đã bị viết lại bằng các từ đồng nghĩa hoặc đổi cấu trúc câu.
  2. Hệ thống gợi ý bài báo khoa học (Recommender System): Tự động phân tích nội dung bài viết người dùng đang đọc để đề xuất các bài báo có cùng ngữ cảnh nghiên cứu mà không phụ thuộc vào bộ từ khóa tĩnh.
  3. Phân loại tự động tài liệu hành chính: Gom cụm và phân loại hàng nghìn văn bản công văn hành chính vào các luồng xử lý chuyên biệt theo nội dung ngữ nghĩa tiềm ẩn.

Đánh giá khả năng mở rộng (Scalability)

  • Bộ nhớ: Nhờ việc giảm chiều SVD, hệ thống có thể lưu trữ chỉ mục của hàng trăm nghìn văn bản trong bộ nhớ RAM thương mại tiêu chuẩn.
  • Chi phí - Lợi ích (ROI): Việc tự động hóa phát hiện sao chép tài liệu giúp các trường đại học và viện nghiên cứu giảm hơn 90% thời gian rà soát thủ công, đảm bảo tính liêm chính học thuật.

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  1. Giả định túi từ (Bag-of-Words): LSA xem văn bản như tập hợp các từ không có thứ tự, do đó bỏ qua hoàn toàn thông tin cú pháp, ngữ pháp và cấu trúc ngữ cảnh của câu.
  2. Độ phức tạp tính toán SVD: Chi phí tính toán ma trận SVD là $O(m \cdot n \cdot \min(m, n))$, khiến việc cập nhật tài liệu mới theo thời gian thực (online learning) gặp khó khăn, bắt buộc phải tính toán lại theo lô (batch processing).
  3. Hiện tượng đa nghĩa chưa được giải quyết triệt để: Một từ đa nghĩa vẫn chỉ được biểu diễn bằng một điểm duy nhất trong không gian vector.

Hướng phát triển tương lai

  • Tích hợp mô hình mạng nơ-ron nhúng từ (Word2Vec, FastText) và các mô hình ngôn ngữ ngữ cảnh sâu (PhoBERT) để bảo toàn thứ tự từ và cấu trúc ngữ pháp tiếng Việt.
  • Nghiên cứu áp dụng giải thuật SVD gia tăng (Incremental SVD) để cập nhật ma trận chỉ mục khi có tài liệu mới mà không cần tính toán lại toàn bộ kho ngữ liệu.

Đối tượng hưởng lợi

  • Sinh viên & Học viên cao học: Tiếp cận tài liệu tham khảo hoàn chỉnh về lý thuyết đại số tuyến tính ứng dụng trong xử lý ngôn ngữ tự nhiên tiếng Việt; nắm vững phương pháp tách từ và kỹ thuật LSA.
  • Kỹ sư phần mềm (Developers): Nhận được mã nguồn mẫu trên R và giải thuật tối ưu hóa từ điển tiếng Việt 99.000 từ, có thể tích hợp trực tiếp vào các sản phẩm tìm kiếm doanh nghiệp.
  • Thư viện điện tử & Nhà xuất bản: Sở hữu giải pháp kiến trúc để xây dựng bộ máy gợi ý và phân loại tài nguyên số tự động, chính xác cao.
  • Nhà nghiên cứu (Researchers): Nền tảng dữ liệu thực nghiệm để tiếp tục phát triển các mô hình đối sánh ngữ nghĩa kết hợp mạng nơ-ron và ontology.

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

1. Cần cấu hình hệ thống như thế nào để triển khai mô hình LSA?

Để chạy thực nghiệm mô hình LSA trên tập dữ liệu trung bình (~10.000 tài liệu), hệ thống cần tối thiểu CPU 4 nhân, 8GB RAM, cài đặt môi trường R (từ bản 3.2 trở lên) cùng RStudio và gói thư viện lsa. Với tập dữ liệu lớn hơn, khuyến nghị sử dụng máy chủ có 32GB RAM để thực hiện phân rã ma trận SVD.

2. LSA giải quyết vấn đề từ đồng nghĩa trong tiếng Việt như thế nào?

LSA phân tích sự đồng xuất hiện của các từ trong cùng văn cảnh trên toàn bộ kho ngữ liệu. Nếu hai từ đồng nghĩa (ví dụ: máy tínhvi tính) thường xuyên xuất hiện cùng các từ ngữ cảnh khác (như phần mềm, hệ điều hành), vector biểu diễn của chúng trong không gian rút gọn $k$-chiều sẽ có khoảng cách rất gần nhau, từ đó phản ánh sự tương đồng ngữ nghĩa.

3. Tại sao không sử dụng trực tiếp khoảng cách Euclide mà ưu tiên độ đo Cosine?

Khoảng cách Euclide bị ảnh hưởng nặng nề bởi độ dài của văn bản (tài liệu dài có tần số từ lớn sẽ nằm xa tài liệu ngắn dù cùng chủ đề). Độ đo Cosine chuẩn hóa độ dài vector và chỉ đo góc giữa hai vector trong không gian khái niệm, phản ánh chính xác sự tương đồng về tỷ lệ nội dung.

4. Khi có tài liệu mới thêm vào hệ thống, việc cập nhật chỉ mục LSA diễn ra ra sao?

Trong mô hình cơ bản, hệ thống thực hiện phép chiếu vector tài liệu mới vào không gian khái niệm hiện có thông qua công thức: $D_{new} = X_{new}^T T_k S_k^{-1}$. Nếu tập tài liệu mới quá lớn làm thay đổi cấu trúc từ vựng, quy trình SVD toàn phần sẽ được lập lịch chạy định kỳ offline.

5. Chi phí triển khai và thời gian hoàn vốn (ROI) ước tính như thế nào?

Giải pháp sử dụng hoàn toàn các công nghệ mã nguồn mở (R, RStudio, Linux), do đó chi phí bản quyền phần mềm bằng 0. Chi phí đầu tư duy nhất nằm ở hạ tầng máy chủ và nhân sự vận hành. Thời gian hoàn vốn ước tính dưới 6 tháng nhờ cắt giảm 90% chi phí nhân sự kiểm duyệt và phân loại văn bản thủ công.


Kết luận

Đồ án tốt nghiệp "Áp dụng kỹ thuật phân tích ngữ nghĩa tiềm ẩn trong đối sánh văn bản" đã giải quyết thành công bài toán đối sánh văn bản ngữ nghĩa tiếng Việt – một trong những bài toán phức tạp của lĩnh vực Xử lý Ngôn ngữ Tự nhiên và Truy xuất Thông tin. Bằng việc kết hợp hài hòa giữa kỹ thuật tách từ vựng dựa trên từ điển 99.000 mục từ tối ưu và thuật toán phân rã ma trận SVD, hệ thống đã chứng minh tính vượt trội trong việc phát hiện các liên kết ngữ nghĩa tiềm ẩn, khắc phục hoàn toàn hạn chế của các phương pháp so khớp chuỗi truyền thống.

Công trình không chỉ mang giá trị học thuật sâu sắc thông qua việc mô hình hóa toán học đại số tuyến tính cho văn bản tiếng Việt mà còn mở ra tiềm năng ứng dụng to lớn trong việc xây dựng các hệ thống chống đạo văn, cổng thư viện điện tử thông minh và các bộ máy gợi ý nội dung tự động.