Một cách tiếp cận sử dụng mô hình N-Gram trong việc tự động phát hiện và sửa lỗi nhận dạng văn bản Tiếng Việt

Tóm tắt: Trong bài báo này, chúng tôi trình bày những kết quả nghiên cứu trong

việc nâng cao độ chính xác của nhận dạng văn bản tiếng Việt. Kết quả của nhận

dạng văn bản từ hình ảnh thường không đạt được độ chính xác tuyệt đối, nhất là đối

với các tài liệu có chất lượng hình ảnh đầu vào thấp. Do đó, việc tự động phát hiện

và sửa lỗi nhận dạng văn bản là cần thiết, giúp giảm công sức hiệu đính của người

dùng. Trong nghiên cứu này, chúng tôi đề xuất một thuật toán phát hiện và sửa lỗi

nhận dạng văn bản tiếng Việt dựa trên mô hình n-gram. Kết quả thử nghiệm cho

thấy việc áp dụng thuật toán này giúp nâng cao độ chính xác của nhận dạng.

pdf 12 trang phuongnguyen 6920
Bạn đang xem tài liệu "Một cách tiếp cận sử dụng mô hình N-Gram trong việc tự động phát hiện và sửa lỗi nhận dạng văn bản Tiếng Việt", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Một cách tiếp cận sử dụng mô hình N-Gram trong việc tự động phát hiện và sửa lỗi nhận dạng văn bản Tiếng Việt

Một cách tiếp cận sử dụng mô hình N-Gram trong việc tự động phát hiện và sửa lỗi nhận dạng văn bản Tiếng Việt
Nghiên cứu khoa học công nghệ 
Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2017 33
MỘT CÁCH TIẾP CẬN SỬ DỤNG MÔ HÌNH N-GRAM 
TRONG VIỆC TỰ ĐỘNG PHÁT HIỆN VÀ SỬA LỖI 
NHẬN DẠNG VĂN BẢNTIẾNG VIỆT 
Nguyễn Chí Thành1*, Thái Trung Kiên1, Hoàng Đình Thắng1, 
Nguyễn Thị Lan Phượng2 
Tóm tắt: Trong bài báo này, chúng tôi trình bày những kết quả nghiên cứu trong 
việc nâng cao độ chính xác của nhận dạng văn bản tiếng Việt. Kết quả của nhận 
dạng văn bản từ hình ảnh thường không đạt được độ chính xác tuyệt đối, nhất là đối 
với các tài liệu có chất lượng hình ảnh đầu vào thấp. Do đó, việc tự động phát hiện 
và sửa lỗi nhận dạng văn bản là cần thiết, giúp giảm công sức hiệu đính của người 
dùng. Trong nghiên cứu này, chúng tôi đề xuất một thuật toán phát hiện và sửa lỗi 
nhận dạng văn bản tiếng Việt dựa trên mô hình n-gram. Kết quả thử nghiệm cho 
thấy việc áp dụng thuật toán này giúp nâng cao độ chính xác của nhận dạng. 
Từ khóa: Nhận dạng văn bản, Mô hình ngôn ngữ. 
1. ĐẶT VẤN ĐỀ 
1.1. Giới thiệu 
Nhận dạng văn bản trong tiếng Anh thường được nhắc đến với cái tên nhận 
dạng ký tự quang học (optical character recognition) và được viết tắt là OCR. Đây 
là lĩnh vực được ứng dụng rộng rãi trong việc số hóa các văn bản, tài liệu cũng như 
việc hỗ trợ nhập liệu tự động các nguồn dữ liệu in trên giấy như hộ chiếu, giấy 
chứng minh thư, hóa đơn, báo cáo tài chính, danh thiếp Các nghiên cứu về nhận 
dạng văn bản tiếng Anh cũng như tiếng Việt đã đạt được nhiều kết quả tốt, có độ 
chính xác cao đối với những nguồn ảnh văn bản rõ ràng. Tuy nhiên, với các văn 
bản, tài liệu do đã cũ hoặc do quá trình bảo quản không tốt bị mờ chữ, mất chữ thì 
độ chính xác của quá trình nhận dạng văn bản bị giảm đi đáng kể. Một số phần 
mềm có tính năng tự sửa lỗi nhận dạng, tuy nhiên, chủ yếu sửa lỗi ở mức ký tự, sửa 
lỗi chính tả dựa vào từ điển, không có khả năng sửa lỗi ở mức từ, ở mức ngữ cảnh. 
Do đó, khi gặp những tài liệu có nguồn ảnh đầu vào không tốt thì công sức bỏ ra 
để hiệu chỉnh lại văn bản kết quả là khá lớn, nhiều khi còn tương đương với công 
đánh lại toàn bộ văn bản. 
Trong lĩnh vực nghiên cứu nhận dạng văn bản tiếng Anh, các kĩ thuật sửa lỗi 
cho nhận dạng sử dụng các kĩ thuật thống kê, các kĩ thuật xử lý ngôn ngữ tự nhiên 
được nghiên cứu từ lâu và đã đưa đến những kết quả sửa lỗi tốt, nâng cao đáng kể 
độ chính xác của nhận dạng văn bản, nhất là đối với các nguồn ảnh đầu vào có chất 
lượng không tốt. Tuy nhiên, với việc nhận dạng văn bản tiếng Việt thì các công 
trình nghiên cứu về phương pháp sửa lỗi sau khi nhận dạng còn khá mới mẻ, chưa 
có những nghiên cứu về việc sử dụng các kĩ thuật xử lý ngôn ngữ tự nhiên vào việc 
nâng cao tính chính xác của nhận dạng văn bản. 
Bài toán phát hiện và sửa lỗi văn bản không chỉ quan trọng trong quá trình nhận 
dạng văn bản từ hình ảnh mà nó còn đóng vai trò quan trọng trong nhiều ứng dụng 
khác như các giao diện nhập bằng viết tay cho phép người sử dụng viết chữ làm 
đầu vào cho máy tính, các thiết bị tổng hợp giọng nói (text-to-speech) và nhận 
Công nghệ thông tin 
N. C. Thành, , N. T. L. Phượng, “Một cách tiếp cận sử dụng  văn bản tiếng Việt.” 34 
dạng giọng nói (speech-to-text). Các ứng dụng khác cũng có thể sử dụng phát hiện 
và sửa lỗi văn bản để tăng chất lượng kết quả như các hệ thống soạn thảo văn bản, 
soạn thảo code, biên tập có trợ giúp của máy tính, dịch máy, học ngoại ngữ, tương 
tác cơ sở dữ liệu, cũng như các ứng dụng có đầu vào hoặc đầu ra là tiếng nói. 
1.2. Các nghiên cứu liên quan 
Đã có một số phương pháp được đề xuất để giải quyết bài toán phát hiện và sửa 
lỗi chính tả tiếng Việt. Ở bài báo [1], các tác giả sử dụng luật cấu tạo âm tiết tiếng 
Việt hai thành phần để phát hiện lỗi chính tả. Một phương pháp phát hiện và sửa 
lỗi tiếng Việt sử dụng mô hình bi-gram đã được đề xuất trong [2]. Mô hình n-gram 
cũng được sử dụng để kiểm lỗi cách dùng từ và cụm từ tiếng Việt trong công bố 
[3], tuy nhiên, nghiên cứu này không đề xuất phương pháp sửa các lỗi chính tả 
phát hiện được. Bài báo [4] mô tả một phương pháp sử dụng một mô hình n-gram 
được xây dựng từ một kho ngữ liệu có kích thước lớn để phát hiện các lỗi chính tả 
khi đánh máy. Trong các nghiên cứu về phát hiện và sửa lỗi tiếng Việt, chỉ có một 
phương pháp có liên quan tới phát hiện và sửa lỗi nhận dạng văn bản (OCR – 
optical character recognition), trong nghiên cứu này, việc phát hiện lỗi tiếng Việt 
dựa vào xác suất unigram và bộ đếm sự xuất hiện đồng thời của các âm tiết [5]. 
Đối với nhận dạng văn bản tiếng Anh, đã có nhiều phương pháp được đề xuất 
để đưa ra danh sách các từ thay thế cho từ bị sai. Tương ứng với một từ lỗi thuật 
toán sẽ đưa ra một danh sách các ứng cử viên để thay thế cho từ đó. Một số thuật 
toán sửa lỗi dựa trên từ điển đã được đề xuất. Một trong số đó là thuật toán đối 
sánh chuỗi đánh trọng số các từ trong văn bản sử dụng độ đo khoảng cách. Ứng cử 
viên sửa lỗi với khoảng cách ngắn nhất với từ lỗi sẽ được chọn [6]. Thuật toán 
khác sử dụng thuộc tính cú pháp của ngôn ngữ và mô hình n-gram để tiến hành quá 
trình sinh ra các ứng cử viên sửa lỗi và chọn ra ứng cử viên tốt nhất. [7] đề xuất 
một phương pháp sửa lỗi sau OCR dựa trên học mẫu, trong đó đầu tiên một danh 
sách các ứng cử viên sửa lỗi được sinh ra từ một từ điển, sau đó ứng cử viên phù 
hợp nhất sẽ được lựa chọn dựa trên các đặc tính về từ vựng và ngữ pháp xung 
quanh từ lỗi. Các kĩ thuật sửa lỗi dựa trên từ điển là khá hợp lý và thành công. Tuy 
nhiên, chúng không thể sửa những lỗi dựa trên ngữ cảnh, ví dụ như sửa những lỗi 
dựa trên vị trí ngữ pháp của chúng trong câu. Các kĩ thuật sửa lỗi dựa trên ngữ 
cảnh thực hiện phát hiện lỗi và sửa lỗi dựa trên ngữ cảnh ngữ pháp và ngữ nghĩa. 
Nó có thể giải quyết vấn đề sửa lỗi từ thực như ở câu “Học sinh tơi trường” vì theo 
ngữ cảnh mà “tơi” xuất hiện, nó phải là một động từ chứ không phải là một danh 
từ. Để thực hiện sửa lỗi dựa trên ngữ cảnh, một số giải pháp đã được cân nhắc tới, 
phần lớn là dựa trên mô hình ngôn ngữ thống kê và mô hình dựa trên đặc trưng. [8] 
mô tả một hệ thống sửa lỗi từ theo ngữ cảnh dựa trên ánh xạ hỗn loạn, sử dụng xác 
xuất hỗn loạn để xác định các dãy tần suất sai và chuyển chúng thành chuỗi đúng 
nhất. Nói cách khác, nó mô hình hóa mức độ có thể xảy ra của một chữ cái có thể 
bị nhận nhầm thành chữ cái khác. [9] đề xuất một bộ phân lớp Bayesian trong đó 
coi các lỗi từ thực là nhập nhằng và sau đó tìm từ đúng bằng cách tính toán mối 
quan hệ xác xuất giữa từ lỗi và ứng cử viên sửa lỗi. Trong nghiên cứu [10], các tác 
giả sử dụng mô hình ngôn ngữ n-gram để phát hiện và sửa lỗi văn bản tiếng Anh. 
Nghiên cứu khoa học công nghệ 
Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2017 35
Trong bài báo này, chúng tôi nghiên cứu một phương pháp tự động và sửa lỗi 
nhận dạng văn bản tiếng Việt dựa trên mô hình ngôn ngữ n-gram. 
Nghiên cứu được trình bày theo thứ tự sau: Phần 2 trình bày nội dung nghiên 
cứu; Phần 3 trình bày các kết quả thử nghiệm, đánh giá; Cuối cùng, kết luận được 
trình bày trong Phần 4. 
2. BÀI TOÁN PHÁT HIỆN VÀ SỬA LỖI NHẬN DẠNG VĂN BẢN 
Trên thực tế, tỉ lệ lỗi của các hệ thống nhận dạng văn bản (OCR) thường khá 
cao nếu tài liệu được quét có nhiều lỗi như trạng thái vật lý không tốt, chất lượng 
in kém, tài liệu phai màu, giấy cũ. Khi một hệ thống OCR không thể nhận dạng 
một ký tự sẽ tạo ra một lỗi OCR, thường là một lỗi chính tả trong văn bản đầu ra. 
Ví dụ, ký tự “B” có thể được nhận dạng sai thành số “8”, ký tự “S” nhận dạng 
thành số “5”, ký tự “O” nhận dạng thành số “0”,  
Để nâng cao độ chính xác của nhận dạng, cần phát hiện và sửa các lỗi ngôn 
ngữ trong văn bản OCR đầu ra sau khi ảnh đầu vào đã được quét và xử lý. Về cơ 
bản, có hai loại lỗi OCR: lỗi không từ và lỗi từ thực. Một lỗi không từ là một từ 
được nhận dạng bởi hệ thống OCR nhưng nó lại không tương ứng với một từ vựng 
nào. Ví dụ, khi “Chào bạn” được hệ thống OCR nhận dạng là “Chào bụn” thì 
“bụn” được xác định là lỗi không từ vì “bụn” không có nghĩa trong tiếng Việt. Trái 
lại, lỗi từ thực là một từ được nhận dạng và tương ứng với một từ trong từ điển 
mặc dù nó sai về ngữ pháp trong câu chứa nó. Ví dụ, khi “Học sinh tới trường” 
được hệ thống OCR nhận dạng thành “Học sinh tơi trường” thì “tơi” được coi là 
một lỗi từ thực vì “tơi” mặc dù đúng về mặt cú pháp (có xuất hiện trong tiếng Việt) 
nhưng việc sử dụng nó trong câu này là sai về ngữ pháp. Thông thường, các lỗi 
không từ và từ thực rơi vào một trong ba lớp lỗi sau: xóa, thêm và thay thế. Lỗi 
xóa xuất hiện khi một hoặc nhiều ký tự bị xóa khỏi từ gốc. Ví dụ nhận dạng nhầm 
từ “Trường” thành “Trưng”, “Trơng”, “Trươg”. Lỗi thêm xảy ra khi một hoặc 
nhiều ký tự được thêm vào từ gốc. Ví dụ, nhận dạng nhầm từ “Học” thành “Họcc” 
hay “Họoc”. Lỗi thay thế xảy ra khi một hoặc nhiều ký tự bị thay thế trong từ gốc, 
ví dụ như thay thế ký tự “m” trong “Thêm” thành ký tự “n” hoặc thay thế ký tự “g” 
trong “Thống” thành “q”. 
Để giải quyết được bài toán này, đầu tiên cần phân tích xem những lý do nào 
có thể gây nên việc nhận dạng lỗi một âm tiết. Qua quá trình khảo sát và thử 
nghiệm với bài toán nhận dạng văn bản, chúng tôi tổng hợp một số loại lỗi nhận 
dạng chủ yếu sau: 
a) Loại 1: Lỗi xóa 
Lỗi này xuất hiện khi âm tiết bị xóa mất 1 ký tự. Trường hợp này có thể xảy ra 
khi một ký tự bị mờ hoặc xóa mất trên ảnh đầu vào. 
Ví dụ: 
+ "quan hệ đoàn kết giữa hai nước Việt Nam và Lào" có thể bị nhận dạng 
nhầm thành "quan hệ đoàn kết giữa ha nước Việt Nam và Lào" nếu như ký tự "i" 
của âm tiết "hai" bị mờ. Như vậy, âm tiết "hai" bị nhận dạng nhầm thành "ha", ký 
tự bị xóa mất là ký tự "i". 
Lỗi này có thể được mô hình hóa như sau. 
- Lỗi xóa: Âm tiết bị xóa bớt một ký tự. 
Công nghệ thông tin 
N. C. Thành, , N. T. L. Phượng, “Một cách tiếp cận sử dụng  văn bản tiếng Việt.” 36 

 (  ) =      
Trong đó:   là âm tiết ban đầu,      là âm tiết sau khi bị 
nhận dạng sai, bị xóa mất ký tự (1 ≤  ≤ ). 
b) Loại 2: Lỗi thêm 
Lỗi này xảy ra khi âm tiết bị thêm 1 ký tự vào do có vết thêm vào trên ảnh nên 
vết này bị nhận dạng nhầm thành ký tự. 
Ví dụ: 
+ "Thanh tra chính phủ" nếu có 1 vết gạch ở sau âm tiết "tra" thì có thể bị 
nhận dạng nhầm thành "Thanh trai chính phủ". Ở đây, âm tiết "tra" bị nhận dạng 
nhầm thành âm tiết "trai", ký tự bị thêm vào là ký tự "i". 
Lỗi này có thể được mô hình hóa như sau. 
- Lỗi thêm: Âm tiết bị thêm một ký tự vào sau khi nhận dạng. 

∗, (  ) = 
  
∗   ế  ≤ 
  
∗ ế  =  + 1
 
Trong đó:   là âm tiết ban đầu,   
∗   là âm tiết sau khi bị nhận 
dạng sai, bị thêm vào ký tự ∗ ở trước ký tự (nếu 1 ≤  ≤ ) hoặc sau ký tự  
nếu  =  + 1. 
c) Loại 3: Lỗi thay thế 
Lỗi này xuất hiện khi nhận dạng sai 1 ký tự của âm tiết thành 1 ký tự 
khác.Trường hợp này xảy ra khi thuật toán nhận dạng nhận nhầm ký tự này thành 
ký tự khác hoặc nhận dạng sai dấu trên ký tự. 
Ví dụ: 
+ "ảnh hưởng của các yếu tố" có thể bị nhận dạng nhầm thành "ánh hưởng của 
các yếu tố". Ở đây, âm tiết "ảnh" bị nhận nhầm thành âm tiết "ánh" do dấu hỏi ở 
trên ký tự "a" bị nhận dạng nhầm thành dấu sắc. Ký tự "ả" bị thay thế bằng ký tự 
"a". 
+ "các cơ sở giáo dục" có thể bị nhận dạng nhầm thành "các cơ sở giác dục" 
nếu ký tự "o" của âm tiết "giáo" bị mờ một phần bên phải. Trong trường hợp này, 
âm tiết "giáo" bị nhận dạng nhầm thành âm tiết "giác", ký tự "o" bị thay thế bằng 
ký tự "c". 
+ "bài toán tự động phát hiện mục tiêu" có thể bị nhận dạng nhầm thành "bài 
toán tự đông phát hiện mục tiêu" nếu dấu nặng trong âm tiết "động" bị mờ hoặc 
dính sát vào chữ cái "ô". Trong trường hợp này, âm tiết "động" bị nhận dạng nhầm 
thành âm tiết "đông", ký tự "ộ" bị thay thế bằng ký tự "ô". 
Lỗi này có thể được mô hình hóa như sau: 
- Lỗi thay thế: nhận dạng sai một ký tự của âm tiết, thêm dấu vào âm tiết, bỏ 
mất dấu của âm tiết. 

∗, (  ) =   
∗   
Trong đó:   là âm tiết ban đầu,   
∗   là âm tiết sau khi bị 
nhận dạng sai, ký tự (1 ≤  ≤ ) bị thay thế bằng ký tự 
∗. 
d) Loại 4: Lỗi gộp ký tự 
Nghiên cứu khoa học công nghệ 
Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2017 37
Lỗi này xuất hiện khi hai ký tự của âm tiết bị gộp làm một ký tự khác.Trường 
hợp này xảy ra khi 2 ký tự ở cạnh nhau có hình dạng giống với một ký tự thứ ba 
nên bị nhận dạng sai. 
Ví dụ: 
+ "hội nghị thường niên" có thể bị nhận dạng nhầm thành "hội nghị thường 
mên". Trong trường hợp này, âm tiết "niên" bị nhận nhầm thành âm tiết "mên", do 
hai ký tự "ni" bị gộp lại thành một ký tự "m". 
+ "các kỹ thuật tiên tiến" có thể bị nhận dạng nhầm thành "các kỹ thuật hên 
tiến". Trong trường hợp này, âm tiết "tiên" bị nhận nhầm thành âm tiết "hên", do 
hai ký tự "ti" bị gộp lại thành một ký tự "h". 
Lỗi này có thể được mô hình hóa như sau: 
- Lỗi gộp ký tự: 2 ký tự bị gộp làm 1. 

 (  ) =   
∗   
Trong đó:   là âm tiết ban đầu,   
∗   là âm tiết sau khi bị 
nhận dạng sai, hai ký tự (1 ≤  ≤  − 1) bị gộp lại nhận dạng thành ký tự 
∗. 
e) Loại 5: Lỗi chia tách ký tự 
Lỗi này xuất hiện khi một ký tự của âm tiết bị nhận dạng thành 2 ký tự. Trường 
hợp này xảy ra khi một ký tự khi tách đôi theo chiều dọc thì tạo thành hình ảnh 
tương tự 2 ký tự khác. 
Ví dụ: 
+ "trong khoảng thời gian" có thể bị nhận dạng nhầm thành "trong khoảng thời 
giaii" nếu ký tự "n" của âm tiết "gian" bị mờ phần trên. Trong trường hợp này, âm 
tiết "gian" bị nhận nhầm thành "giaii", ký tự "n" bị nhận dạng tách thành 2 ký tự 
"ii". 
Lỗi này có thể được mô hình hóa như sau: 
- Lỗi chia tách ký tự: 1 ký tự bị tách ra làm 2. 

 (  ) =      
Trong đó:    là âm tiết ban đầu,      là âm tiết sau 
khi bị nhận dạng sai, ký tự (1 ≤  ≤ ) bị nhận dạng nhầm thành hai ký tự 
. 
f) Loại 6: Lỗi gộp âm tiết 
Lỗi này xuất hiện khi 2 âm tiết bị gộp làm một âm tiết. Trường hợp này xảy ra 
khi 2 âm tiết xuất hiện sát gần nhau khiến cho phần mềm OCR nhận dạng chúng là 
1 âm tiết. 
Ví dụ: 
+ "mô phỏng huấn luyện" có thể bị nhận dạng nhầm thành "mô phỏng 
huấnluyện" nếu hai âm tiết "huấn" và "luyện" bị in sát nhau, hoặc có vết bẩn giữa 
hai âm tiết. Trong trường hợp này, hai âm tiết "huấn luyện" bị nhận nhầm thành 
"huấnluyện". 
Lỗi này có thể được mô hình hóa như sau. 
- Lỗi gộp âm tiết: 2 âm tiết bị gộp làm 1. 
_ (, ) =  
Công nghệ thông tin 
N. C. Thành, , N. T. L. Phượng, “Một cách tiếp cận sử dụng  văn bản tiếng Việt.” 38 
Trong đó:  và  là hai âm tiết ban đầu,  là kết quả nhận dạng sai, hai 
âm tiết bị gộp làm một. 
g) Loại 7: Lỗi chia tách âm tiết 
Lỗi này xuất hiện khi 1 âm tiết bị tách làm 2 âm tiết sau khi nhận dạng.Trường 
hợp này xảy ra khi khoảng cách giữa 2 ký tự của âm tiết lớn hoặc một phần ký tự 
bị mờ làm cho âm tiết bị tách làm 2 phần. 
Ví dụ: 
+ "Việc xác định" có thể bị nhận dạng nhầm thành "V iệc ...  các văn bản tiếng Việt 
thành một kho ngữ liệu, và dùng kho này để làm dữ liệu huấn luyện. Sau đó, tiến 
hành tính toán các giá trị unigram (1-gram), bigram (2-gram) và trigram (3-gram) 
bằng cách thống kê tần suất xuất hiện và áp dụng các công thức để tính xác suất, 
làm trơn các xác suất thấp, hiệu chỉnh xác suất và tính các hệ số backoff. Tiếp theo 
cần xây dựng bộ từ điển các âm tiết có trong tiếng Việt để xác định các lỗi chính 
tả. Việc tính toán các giá trị n-gram và bộ từ điển âm tiết tiếng Việt được xây dựng 
tương tự với tài liệu [3]. 
Sau khi đã xây dựng được mô hình n-gram dựa trên tập dữ liệu huấn luyện, 
chúng ta có thể phát hiện lỗi cho kết quả nhận dạng văn bản theo các bước sau. Đầu 
tiên phát hiện các âm tiết sai sử dụng từ điển âm tiết. Sau đó, duyệt toàn bộ văn bản 
kết quả theo cụm 3 âm tiết liền nhau, tính xác suất trigram của từng cụm, nếu giá trị 
nhỏ hơn ngưỡng lỗi thì xác định cụm từ đó có lỗi dùng từ. Sau khi đã xác định cụm 
từ có lỗi thì chúng ta cần xác định vị trí của âm tiết bị lỗi. Một âm tiết nếu nó thuộc 
về hai hoặc ba cụm từ có lỗi thì có thể xác định đó chính là âm tiết gây ra lỗi. Do đó, 
chúng ta có thể xác định được chính xác vị trí của âm tiết gây lỗi. 
Sau khi đã xác định được âm tiết có lỗi, bước tiếp theo là xác định âm tiết đúng 
để sửa lỗi. Với mô hình n-gram, dựa vào xác suất của cụm âm tiết, chúng ta có thể 
đoán biết được khi cho trước một cụm âm tiết và vị trí âm tiết lỗi thì âm tiết nào có 
Nghiên cứu khoa học công nghệ 
Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2017 39
khả năng thay thế âm tiết đó với xác suất cao nhất. Để xác định được âm tiết đúng 
để sửa lỗi, chúng ta có thể sử dụng phương pháp sinh ra tập các ứng cử viên để từ 
đó xác định ứng cử viên có khả năng đúng cao nhất. 
Từ những phân tích đó chúng tôi đề xuất một phương pháp xác định âm tiết 
đúng để sửa lỗi cho văn bản sau khi nhận dạng như sau. Sau khi đã xác định được 
âm tiết có lỗi, cần xác định âm tiết đúng là gì. 
Xuất phát từ chính âm tiết bị lỗi, chúng ta sử dụng các phép biến đổi từ âm tiết 
bị lỗi sinh ra 1 tập các âm tiết ứng cử viên là những âm tiết có thể là âm tiết đúng. 
()
= {
 () ∪ 
() ∪ 
 () ∪ 
 () ∪ 
 ()
∪ _
 () ∪ _
 ()} 
Trong đó, tập ứng cử viên 
 () là tập các ứng cử viên sinh ra từ âm tiết 
lỗi qua phép biến đổi ngược theo trường hợp 
∗, , nghĩa là  ∈ 
 () khi 

∗, () = . 

 () = |
∗, () = , 1 ≤  ≤  + 1 
Trong đó, n là số ký tự của u và ký tự ∗ là ký tự bất kì trong bảng chữ cái (có 
dấu hoặc không dấu). 
Ví dụ, với âm tiết "giác" thì "giá" một biến đổi ngược của phép thêm với  = 4 
ký tự thêm vào ∗ là "c". Nghĩa là "giá" ∈ 
 ("giác") do "giác" =

"", ("giá"). Tương tự, "gác" là một ngược của phép thêm với  = 2 ký tự thêm 
vào ∗ là "i". Như vậy, "gác" ∈ 
 ("giác"). 
Tương tự, 
() là tập các ứng cử viên sinh ra từ âm tiết lỗi qua phép biến 
đổi ngược theo trường hợp 
 . 

() = |
 () = , 1 ≤  ≤  
Trong đó, n là số ký tự của u. 
Ví dụ, với âm tiết "côn" thì "công" là một biến đổi ngược của phép xóa với 
 = 4. Nghĩa là "công" ∈ 
("côn") do "côn" = 
 ("công"). 

 () là tập các ứng cử viên sinh ra từ âm tiết lỗi qua phép biến đổi ngược 
theo trường hợp 
∗, . 

 () = |
∗, () = , 1 ≤  ≤  
Trong đó, n là số ký tự của u. 
Ví dụ, với âm tiết "giác" thì "giáo" là một phép biến đổi ngược của phép thay 
thế với  = 4, nghĩa là "giáo" ∈ 
 ("giác") 

 () là tập các ứng cử viên sinh ra từ âm tiết lỗi qua phép biến đổi ngược 
theo trường hợp 
 . 

 () = |
 () = , 1 ≤  ≤  − 1 

 () là tập các ứng cử viên sinh ra từ âm tiết lỗi qua phép biến đổi ngược 
theo trường hợp 
 . 

 () = |
 () = , 1 ≤  ≤  
Công nghệ thông tin 
N. C. Thành, , N. T. L. Phượng, “Một cách tiếp cận sử dụng  văn bản tiếng Việt.” 40 
Tương tự, _
 () là tập các ứng cử viên sinh ra từ âm tiết lỗi qua phép biến 
đổi ngược theo trường hợp _. _
 () là tập các ứng cử viên sinh ra từ âm 
tiết lỗi qua phép biến đổi ngược theo trường hợp _
 . 
Có thể áp dụng các phép biến đổi nhiều lần để tìm ra tập các ứng cử viên. 
() = (()) 
Sau khi có tập ứng cử viên, đầu tiên chúng ta loại bỏ các âm tiết không đúng 
chỉnh tả, là các âm tiết không có trong từ điển âm tiết. Sau đó, từ tập các ứng cử 
viên này chúng ta tính toán xác suất n-gram của các âm tiết trong tập âm tiết ứng 
cử viên để tìm ra âm tiết đúng. Để sửa lỗi tự động chúng ta có thể đặt ra ngưỡng để 
có thể tự động sửa lỗi, nếu tìm được đúng 1 âm tiết ứng cử viên có độ chính xác 
vượt ngưỡng hoặc âm tiết ứng cử viên có độ chính xác vượt trội hơn so với các 
ứng cử viên khác thì tự động sửa lỗi. Nếu có nhiều âm tiết chính xác thì chúng ta 
có 1 tập các âm tiết để người dùng có thể lựa chọn trong sửa lỗi bán tự động. 
Các bước trong thuật toán tìm tập ứng cử viên cho âm tiết bị lỗi dựa trên mô 
hình n-gram được minh họa ở hình 1. Dữ liệu đầu vào cho thuật toán là âm tiết bị 
lỗi và vị trí của nó trong văn bản. Đầu ra của thuật toán là tập các ứng cử viên có 
thể là âm tiết đúng ban đầu trong văn bản gốc. 
Bắt đầu
Sinh tập ứng cử viên từ các 
phép biến đổi ngược
Âm tiết 
bị lỗi
Loại bỏ các ứng cử viên không 
có trong từ điển âm tiết
Loại bỏ các ứng cử viên có xác 
suất n-gram thấp
Kết thúc
Hình 1. Các bước tìm ứng cử viên để sửa lỗi. 
Nghiên cứu khoa học công nghệ 
Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2017 41
4. THỬ NGHIỆM, ĐÁNH GIÁ 
Chương trình thử nghiệm đã được xây dựng dựa trên phương pháp tìm và sửa 
lỗi tự động trình bày ở trên. Phần mềm được viết bằng ngôn ngữ C# sử dụng bộ 
công cụ lập trình Microsoft Visual Studio. Sau khi lấy về kết quả nhận dạng của 
phần mềm mã nguồn mở VietOCR, chương trình thử nghiệm thực hiện phát hiện 
lỗi nhận dạng và tự động sửa lỗi, hỗ trợ người sử dụng sửa lỗi bán tự động bằng 
cách đưa ra một danh sách các âm tiết ứng cử viên để sửa lỗi. 
Hình 2 minh họa các bước hoạt động của chương trình thử nghiệm. Sau khi 
người dùng nhập đường dẫn đến file ảnh của văn bản cần nhận dạng, phần mềm 
tiến hành nhận dạng văn bản bằng cách gọi hàm của VietOCR. Sau đó, kết quả 
nhận dạng sẽ được xử lý để phát hiện lỗi nhận dạng dựa trên mô hình n-gram. Tiếp 
theo, các ứng cử viên để thay thế cho âm tiết lỗi sẽ được sinh ra bằng phương pháp 
sửa lỗi được đề xuất ở phần trước. Chương trình sẽ hiển thị kết quả sửa lỗi nhận 
dạng lên cửa sổ hỗ trợ sửa lỗi. Các âm tiết bị xác định là có lỗi nhận dạng sẽ được 
đánh dấu để người dùng dễ dàng nhận biết. Những âm tiết chỉ có 1 ứng cử viên 
thay thế sẽ được tự động sửa lỗi bằng ứng cử viên đó, với những âm tiết có nhiều 
ứng cử viên thay thế thì khi âm tiết đó được lựa chọn chương trình sẽ hiển thị danh 
sách ứng cử viên để người dùng lựa chọn. 
Đọc file ảnh đầu vào
Nhận dạng văn bản (VietOCR)
Phát hiện lỗi nhận dạng
Sửa lỗi nhận dạng
Hiển thị lỗi và hỗ trợ sửa lỗi
Hình 2. Các bước hoạt động của chương trình. 
Để thực hiện phát hiện lỗi và sửa lỗi nhận dạng, cần có thông tin về các xác 
suất n-gram của các âm tiết. Các xác suất này được tính dựa trên một kho ngữ liệu 
huấn luyện. Trong chương trình thử nghiệm, mô hình n-gram được xây dựng từ 
trước và ghi vào file dữ liệu, kho ngữ liệu sử dụng để huấn luyện gồm hơn 300.000 
câu tiếng Việt được thu thập từ nhiều lĩnh vực. Các xác suất unigram, bigram, 
trigram của các âm tiết được tính toán dựa trên thống kê tần suất xuất hiện các âm 
Công nghệ thông tin 
N. C. Thành, , N. T. L. Phượng, “Một cách tiếp cận sử dụng  văn bản tiếng Việt.” 42 
tiết trong kho ngữ liệu. Các xác suất n-gram thấp được làm trơn, sau đó tính toán 
các hệ số backoff. 
Chương trình đã được chạy thử nghiệm với một số văn bản quét và cho kết quả 
như trình bày ở Bảng 1. Văn bản đầu vào sử dụng phông Times New Roman, được 
quét thành ảnh trắng đen ở độ phân giải 300dpi. Sau khi sử dụng chương trình để 
phát hiện và sửa lỗi, độ chính xác của kết quả nhận dạng đã tăng lên. Ở đây, chúng 
tôi chỉ tính các âm tiết được sửa lỗi tự động, nghĩa là chương trình tự động thay thế 
âm tiết lỗi bằng âm tiết do chương trình tự động xác định là âm tiết đúng. Ngoài ra, 
đối với các âm tiết lỗi khác, chương trình cũng sinh ra một danh sách các ứng cử 
viên để hỗ trợ người dùng sửa lỗi một cách nhanh chóng và thuận tiện hơn. Trên 
bảng 1, số âm tiết nhận dạng lỗi ở cột (2) là số âm tiết lỗi sau khi nhận dạng bằng 
phương pháp nhận dạng của VietOCR, số lỗi này được xác định bằng cách so sánh 
với văn bản gốc bằng tay (sử dụng con người). Độ chính xác ở cột (3) là độ chính 
xác của văn bản là kết quả của module nhận dạng của VietOCR, tính bằng số âm 
tiết đúng chia cho tổng số âm tiết của trang văn bản. Cột (4) là số âm tiết lỗi còn lại 
sau khi một số âm tiết lỗi đã được sửa lỗi lại thành âm tiết đúng bằng thuật toán 
phát hiện và tự động sửa lỗi do chúng tôi đề xuất. 
Bảng 1. Kết quả thử nghiệm chương trình. 
 Số âm tiết Âm tiết 
nhận dạng 
lỗi 
Độ chính 
xác 
Số âm tiết 
lỗi sau khi 
tự động sửa 
lỗi 
Độ chính 
xác sau sửa 
lỗi 
 (1) (2) (3) (4) (5) 
Văn bản 1 446 15 96.64% 10 97.76% 
Văn bản 2 706 16 97.73% 13 98.16% 
Văn bản 3 509 10 98.04% 9 98.23% 
Văn bản 4 447 32 92.84% 25 94.41% 
Văn bản 5 367 28 92.37% 22 94.01% 
Tổng 2475 101 95.92% 79 96.81% 
Kết quả thử nghiệm cho thấy phương pháp được đề xuất có khả năng kiểm tra, 
phát hiễn lỗi tốt, giúp người dùng tự động sửa lỗi. Tốc độ phát hiện và sửa lỗi khá 
cao, có thể đưa vào sử dụng trong thực tế để xây dựng các hệ thống số hóa văn bản 
để xây dựng thư viện điện tử. 
5. KẾT LUẬN 
Bài báo đã trình bày về kết quả nghiên cứu để tìm cách nâng cao độ chính xác 
của nhận dạng văn bản, sử dụng các tri thức khai thác được từ kho ngữ liệu thông 
qua mô hình thống kê n-gram. Chúng tôi đã đề xuất một phương pháp phát hiện và 
tự động sửa lỗi cho văn bản nhận dạng, đồng thời, xây dựng chương trình cài đặt 
thuật toán đó để thực hiện nâng cao độ chính xác cho nhận dạng văn bản. Chương 
trình thử nghiệm đã cho kết quả tốt, tự động sửa được lỗi nhận dạng và hỗ trợ 
người dùng sửa lỗi bán tự động. Kết quả nhận dạng đã được nâng lên so với 
phương pháp truyền thống. Kết quả này có thể được áp dụng để đưa vào thực hiện 
số hóa tài liệu cho các thư viện điện tử. 
Nghiên cứu khoa học công nghệ 
Tạp chí Nghiên cứu KH&CN quân sự, Số Đặc san CNTT, 12 - 2017 43
Qua thực tế nghiên cứu và thử nghiệm việc nhận dạng các tài liệu, chúng tôi 
thấy rằng ngay cả khi đã áp dụng các phương pháp sửa lỗi, rất khó để đạt được tỉ lệ 
nhận dạng chính xác 100%. Do đó, để việc tìm kiếm, quản lý các kho tài liệu số 
hóa chính xác và thuận tiện hơn cần phát triển một hệ thống tìm kiếm thông minh 
có khả năng tìm được đúng các văn bản mà không cần các từ khóa phải chính xác 
100% (do kết quả nhận dạng không đảm bảo được chính xác 100%). Việc áp dụng 
các kĩ thuật học máy, các lý thuyết tập mờ, tập thô vào bài toán tìm kiếm thông 
minh này là hết sức cần thiết. 
Lời cảm ơn: Tác giả cảm ơn sự tài trợ về kinh phí của đề tài: “Nghiên cứu phát 
triển giải pháp nâng cao độ chính xác của nhận dạng văn bản sử dụng tri thức khai thác 
từ kho ngữ liệu tiếng Việt ứng dụng vào hệ thống số hóa tài liệu để xây dựng các thư 
viện điện tử”. 
TÀI LIỆU THAM KHẢO 
[1]. Đinh Thị Phương Thu, Huỳnh Quyết Thắng, Nguyễn Văn Lợi. “Sử dụng luật 
cấu tạo âm tiết tiếng Việt hai thành phần trong bài toán kiểm tra chính tả 
tiếng Việt”. Tạp chí Bưu chính Viễn thông, Chuyên san Các nghiên cứu và 
triển khai ứng dụng trong viễn thông và Công nghệ thông tin, Số 18, tháng 10 
năm 2007, trang 83-92. 
[2]. Nguyen Hong Phuong, Ngo Duc Thuan, Phan Anh Dung, Dinh Thi Phuong 
Thu, Huynh Quyet Thang. “Vietnamese spelling detection and correction by 
using a syllable Bi-gram and building a weight function combining Minimum 
Edit Distance and SoundEx algorithms with some heuristics”. International 
Conference on Research, Innovation and Vision for the Future in Computing 
and Communication Technologies, RIVF 2008, July 13-17, 2008, pp. 96 – 
102. 
[3]. Trần Ngọc Anh, Đào Thanh Tĩnh. “Kỹ thuật mã hóa âm tiết tiếng Việt và các 
mô hình n-gram ứng dụng kiểm lỗi cách dùng từ và cụm từ tiếng Việt”. Tạp 
chí Công nghệ thông tin và Truyền thông, Tập V-1, Số 6 (26), tháng 9 năm 
2011, tr.280-289. 
[4]. Huong, Nguyen Thi Xuan, Tran-Thai Dang, and Anh-Cuong Le. "Using large 
n-gram for Vietnamese spell checking." Knowledge and Systems 
Engineering. Springer, Cham, 2015. 617-627. 
[5]. Vu Hoang, Cong Duy, and Ai Ti Aw. "An unsupervised and data-driven 
approach for spell checking in Vietnamese OCR-scanned texts." Proceedings 
of the Workshop on Innovative Hybrid Approaches to the Processing of 
Textual Data. Association for Computational Linguistics, 2012. 
[6]. V.I. Levenshtein, "Binary codes capable of correcting deletions, insertions, 
and reversals", Cybernetics and Control Theory, 10(8), 707-710, 1966. 
[7]. H. Niwa, K. Kayashima, Y. Shimeki, "Postprocessing for Character 
Recognition Using Keyword Information", IAPR Workshop on Machine 
Vision Applications, Dec. 7-9, Tokyo, 1992. 
[8]. D. Evans, C. Zhai, X. Tong, N. Milic-Frayling, "OCR Correction and Query 
Expansion for Retrieval on OCR Data", Clarit trec-5 confusion track report, 
volume 52, 1996. 
Công nghệ thông tin 
N. C. Thành, , N. T. L. Phượng, “Một cách tiếp cận sử dụng  văn bản tiếng Việt.” 44 
[9]. R.A. Golding, "A Bayesian Hybrid Method for Context-Sensitive Spelling 
Correction", Proceedings of the Third Workshop on Very Large Corpora, 
Cambridge, MA. 39-53, 1995. 
[10]. Islam, Aminul, and Diana Inkpen. "Real-word spelling correction using 
Google Web IT 3-grams." Proceedings of the 2009 Conference on Empirical 
Methods in Natural Language Processing: Volume 3-Volume 3. Association 
for Computational Linguistics, 2009. 
ABSTRACT 
AN APPROACH FOR VIETNAMESE OCR ERROR CHECK 
AND CORRECTION USING N-GRAM MODEL 
In the paper, the result of a studying on improving Vietnamese OCR 
accuracy is presented. OCR result rarely reach pefect accuracy, especially 
with documents with low quality image input. Therefore, automatic OCR 
check and correcion can reduce user efforts in OCR post-processing. In this 
study, a method for Vietnamese OCR error check and correction based on n-
gram model is proposed. Experiment results show that the proposed method 
can improve the accuracy of OCR process. 
Từ khóa: Optical Character Recognition, Language model. 
Nhận bài ngày 16 tháng 8 năm 2017 
Hoàn thiện ngày 26 tháng 11 năm 2017 
Chấp nhận đăng ngày 28 tháng 11 năm 2017 
Địa chỉ: 1Viện Công nghệ Thông tin, Viện KHCNQS; 
 2Trung tâm tin học, Trường Đại học Nội vụ Hà Nội. 
 * Email: thanhnc80@gmail.com. 

File đính kèm:

  • pdfmot_cach_tiep_can_su_dung_mo_hinh_n_gram_trong_viec_tu_dong.pdf