Chương 1 giới thiệu khái quát về đề tài. Chương 2 giới thiệu các công trình nghiên cứu liên quan, các hướng giải quyết cho bài toán phát hiện và sửa lỗi chính tả. Chương 3 cung cấp một số cơ sở lý thuyết đặt nền móng cho các mô hình được đề xuất trong chương 4. Chương 5 là các kết quả thực nghiệm các chỉ tiêu đánh giá, kết quả đánh giá của các phương pháp và phân tích, nhận xét các kết quả đó.
Cuối cùng là phần kết luận về luận văn và trình bày hướng phát triển trong tương lai. 5 CHƯƠNG 2: CÔNG TRÌNH LIÊN QUAN Luận văn nghiên cứu các công trình hiện nay về tự động sửa lỗi chính tả để xác định phương pháp ứng dụng cho đề tài.1 trình bày tóm tắt các giải thuật, kỹ thuật được áp dụng để phát hiện lỗi chính tả trong văn bản.2 trình bày các kỹ thuật sửa lỗi chính tả được sử dụng hiện nay.1 Phương pháp phát hiện lỗi chính tả Trong hầu hết các hệ thống, trước khi thực hiện bất kỳ thao tác tự động sửa lỗi hay đề xuất từ thay thế đều thực hiện bước trích xuất các từ có khả năng không chính xác của chuổi đầu vào. Hai kỹ thuật phổ biến được dùng để phát hiện lỗi chính tả trong văn bản là tra cứu từ điển và phân tích n-gram.1 Phương pháp tra cứu từ điển Tra cứu từ điển là một trong những kỹ thuật cơ bản được sử dụng để so sánh các chuỗi đầu vào với các mục trong kho ngữ liệu. Từ điển phải chứa tất cả các biến thể của các từ và cần được cập nhật thường xuyên.
Nếu không tìm thấy một từ trong từ điển, sẽ được hiểu từ đó có khả năng bị lỗi chính tả. Thách thức của phương pháp này là cần phải giảm kích thước lưu trữ và cải thiện hiệu suất tìm kiếm, bằng cách phân tích hình thái và thuật toán khớp mẫu (ví dụ: băm, cây tìm kiếm.2 Phương pháp phân tích n-gram N-gram là mô hình thống kê P(w1w2…wm), cho phép ước lượng xác suất cho một chuỗi m phần tử (ký tự hoặc từ) cho phép dự đoán khả năng một chuỗi từ xuất hiện trong ngôn ngữ đó. Theo công thức xác suất có điều kiện: P(AB) = P(B|A) * P(A), thì ta dễ dàng suy ra được. 𝑤$%! ) $&! Theo công thức này thì bài toán tính xác suất của mỗi chuỗi từ quy về bài toán tính xác suất của một từ với điều kiện biết các từ trước nó.
Trong thực tế, dựa vào giả thuyết Markov người ta chỉ tính xác suất của một từ dựa vào nhiều 6 nhất N từ xuất hiện liền trước nó, và thông thường N=1,2,3,4. Vì vậy phương pháp này có tên gọi mô hình N-gram, trong đó N là số lượng phần tử (bao gồm cả phần tử cần tính và các phần tử liền trước). Theo công thức Bayes, mô hình ngôn ngữ cần phải có một lượng bộ nhớ vô cùng lớn để có thể lưu hết xác suất của tất cả các chuỗi độ dài nhỏ hơn m. Rõ ràng, điều này là không thể khi m là độ dài của các văn bản ngôn ngữ tự nhiên (m có thể tiến tới vô cùng).
Để có thể tính được xác suất của văn bản với lượng bộ nhớ chấp nhận được, ta sử dụng xấp xỉ Markov bậc n: P(wm|w1 ,w2 ,…, wm-1) = P(wm |wm-n ,wm-n+1, …,wm-1) Nghĩa là xác suất xuất hiện của một từ wm được coi như chỉ phụ thuộc vào n từ đứng liền trước nó chứ không xét toàn bộ dãy từ đứng trước. Như vậy, công thức tính xác suất văn bản được tính lại theo công thức: # 𝑃 (𝑤! 𝑤". 𝑤$%! ) $&! Cách tính xác xuất đơn giãn nhất là ước lượng xác suất cực đại (Maximum Likelihood Estimation - MLE), được tính theo công thức sau 𝐶(𝑤$%'(! .wi-1wi) là tần số xuất hiện của cụm wi-n+1.wi-1wi trong tập văn bản huấn luyện. Đối với nhiệm vụ phát hiện lỗi, phân tích n-gram ước tính khả năng câu đầu vào được viết đúng chính tả hay không.
Để thực hiện điều này, một thống kê n-gram được tính toán trước từ kho ngữ liệu phụ vụ cho tác vụ so sánh sau này. Giá trị của n được chọn phụ thuộc vào kích thước của tập huấn luyện.2 Phương pháp sửa lỗi chính tả Tác vụ sửa lổi chính tả có thể định nghĩa là quá trình hiệu chỉnh chuổi N phần tử S=s1.sN thành chuổi M phần tử T=t1. Như vậy, bất kỳ hệ thống sửa lỗi chính tả nào cũng có thể xem như hàm MC như sau: 𝑇+ = 𝑀𝐶(𝑆), nó trả về một chuổi dự đoán 𝑇+ tương ứng với chuổi đầu vào S. Do đó, ta có thể coi sửa lỗi chính tả là tương đương với dịch máy đơn ngôn ngữ (dịch từ văn bản sai chính tả sang văn bản đúng chính tả).
Sau đây chúng ta xem xét tổng quan một 7 số phương pháp sửa lỗi chính tả và phương phương pháp dịch máy dựa trên mạng nơ-ron có thể áp dụng cho tác vụ sửa lổi chính tả.1 Khoảng cách chỉnh sửa tối thiểu (Minimum edit distance) Khoảng cách chỉnh sửa tối thiểu là một trong những kỹ thuật được nghiên cứu nhiều nhất để sửa lỗi. Nó dựa trên việc đếm các thao tác chỉnh sửa (như chèn, xóa, thay thế và hoán vị) để chuyển đổi chuổi đầu vào không chính xác thành chuổi tối ưu nhất, tức là có khoảng cách chỉnh sửa ít nhất. Hamming[28], Jaro, Winkler[35], Wagner, Fischer[29], Damerau-Levenshtein[11] và Levenshtein [33] là những thuật toán khoảng cách chỉnh sửa nổi tiếng nhất.2 Khóa tương tự (Similarity key technique) Kỹ thuật khóa tương tự là một kỹ thuật khác để sửa lỗi, dựa trên việc phân loại các ký tự thành các nhóm có các khóa giống nhau. Khi một từ được phát hiện là có khả năng không chính xác, các ký tự của nó được ánh xạ vào các khóa được định sẵn để tất cả các từ khác trong tài nguyên ngôn ngữ có cùng khóa được đề xuất làm ứng viên sửa lỗi.
Các ứng cử viên sau đó được xếp hạng theo khoảng cách chỉnh sửa tối thiểu. Các thuật toán khác nhau đề xuất cách phân loại các nhóm khóa khác nhau cho các ký tự. Tuy nhiên, nhìn chung đều dựa trên vị trí và thứ tự của các ký tự trong các từ. Soundex[20], Metaphone[19], SPEEDCOP[15] và Caverphone [5] là những phương pháp phổ biến sử dụng kỹ thuật khóa tương tự.3 Kỹ thuật dựa trên luật (Rule-based techniques) Bằng cách phân tích các lỗi chính tả phổ biến nhất, một số nhà nghiên cứu đã cố gắng tạo ra một cơ sở kiến thức về lỗi cho nhiệm vụ sửa lỗi [10, 21, 32] bằng cách sử dụng các mô hình dựa trên quy tắc mã hóa kiến thức ngữ pháp.
Các quy tắc này thường dựa trên các đặc điểm hình thái của ngôn ngữ.4 Phương pháp xác suất (Probabilistic Techniques) Các phương pháp tiếp cận dựa trên mô hình xác suất thống kê được sử dụng cho các tác vụ dịch máy và sửa lỗi [3], sử dụng mô hình ngôn ngữ xác suất trên chuỗi các ký hiệu, ví dụ: ký tự và từ, mà đầu ra mong muốn có xác suất cao nhất theo các tham số 𝜃 cụ thể của mô hình. Do đó, ta có: 𝑇+ = 𝑎𝑟𝑔𝑚𝑎𝑥 𝑃(𝑇|𝑆; 𝜃), gọi là phương trình cơ bản của dịch máy (Fundamental Equation of Machine Translation)[27] Có nhiều hướng tiếp cận khác nhau để xây dựng mô hình xác suất. Một phương pháp phổ biến là mô hình ngôn ngữ log-linear [30], tính toán xác suất bằng cách tạo một vectơ đặc trưng, thể hiện ngữ cảnh bằng các đặc trưng khác nhau và sau đó tính toán một vectơ điểm tương ứng với khả năng của từng ký hiệu. Hơn nữa, các mạng xác suất phức tạp hơn cũng đã được giới thiệu [3, 7] để thực hiện mô hình xác suất.
Ví dụ, mô hình Markov ẩn (hidden Markov model - HMM) đã thể hiện khả năng có thể mô hình hóa ngôn ngữ của con người [4]. Tuy nhiên, vì các HMM giả định rằng các trạng thái chỉ phụ thuộc duy nhất vào trạng thái trước nó nên chúng không thích hợp để mô hình hóa các phụ thuộc xa. Hiện nay các kỹ thuật dựa trên học sâu sử dụng mạng nơ-ron, ví dụ RNN [1] đã khắc phục được hạn chế này.5 Phương pháp dựa trên học sâu (Deep Learning) Mạng nơ-ron nhân tạo cũng dựa trên phân phối xác suất của ngôn ngữ và chúng đã cho thấy thành công gần đây trong các ứng dụng khác nhau về xử lý ngôn ngữ tự nhiên. Trong phạm vi đề tài này tác giả tập trung nghiên cứu các kỹ thuật dịch máy dựa trên mạng nơ-ron, trong đó nổi bật là mô hình Sequence to Sequence (Seq2seq)[14] là một mô hình Deep Learning với mục đích tạo ra một chuỗi từ xuất ra (output sequence) từ một chuỗi từ nhập (input sequence) mà độ dài của hai chuỗi (sequences) này có thể khác nhau.
Seq2seq gồm hai phần chính là mã hóa (Encoder) và giải mã (Decoder). Cả hai thành phần này đều được hình thành từ các mạng Neural Networks, trong đó Encoder có nhiệm vụ tính toán vector đại diện cho câu đầu vào và bộ giải mã lần lượt tạo ra từng từ của câu mục tiêu dựa vào véc-tơ đã tạo ở Encoder. 9 Nhiều nghiên cứu gần đây đã đề xuất các kiến trúc khác nhau cho bộ Encoder và Decoder. Ví dụ Kalchbrenner và Blunom [24] đã sử dụng RNN cho decoder và mạng nơ ron tích chập (CNN) cho encoder.
Trong khi, Sutskever và cộng sự [14], Lương và cộng sự [23] lại sử dụng mạng bộ nhớ dài-ngắn (Long Short-Term Memory - LSTM) cho cả encoder và decoder. Còn Cho và cộng sự [18], Bahdanau và cộng sự [9], Jean và cộng sự [31] đều sử dụng kiến trúc GRU (Gated Recurrent Unit) cho cả encoder và decoder.1 minh họa mô hình Sequence to sequence, đầu vào là chuổi x = (x1,x2,.xT), trong Encoder véc-tơ đơn vị ẩn cuối cùng hT được dùng để tính vector ngữ cảnh c, ví dụ Encoder sử dụng LSTM và hàm tanh được tính như sau: ht = LSTM(xt, ht-1), c = tanh(hT), trong đó ht là giá trị đơn vị ẩn ở thời điềm t. Vector c lại được truyền tiếp cho Decoder làm đầu vào, tại đây hàm softmax được sử dụng để chuẩn hóa phân phối xác suất cho đầu ra ot. Sau đó, đầu ra softmax cũng sẽ được sử dụng để tính toán hàm lỗi.1: Mô hình Sequence to Sequence Mô hình seq2seq cơ bản có nhược điểm là yêu cầu Decoder sử dụng toàn bộ thông tin mã hóa từ chuỗi đầu vào cho dù chuỗi đó dài hay ngắn và Encoder mã hóa chuỗi đầu vào thành một vec-tơ duy nhất và có độ dài cố định.
Điều này không thực sự hiệu quả vì trong thực tế, việc sinh ra từ tại một bước thời gian trong chuỗi đầu ra có khi phụ thuộc nhiều hơn vào một số những thành phần nhất định trong chuỗi đầu vào.