PHẠM XUÂN TÍCH Bộ môn Khoa học máy tính Khoa Công nghệ thông tin Trường Đại học Giao thông Vận tải Tóm tắt: Hiện nay, tiếng Việt có hơn 40 loại bảng mã khác nhau được sử dụng để mã hóa
Trang 1MỘT SỐ THUẬT TOÁN NHẬN DẠNG
VÀ CHUYỂN MÃ TIẾNG VIỆT
ThS PHẠM XUÂN TÍCH
Bộ môn Khoa học máy tính Khoa Công nghệ thông tin Trường Đại học Giao thông Vận tải
Tóm tắt: Hiện nay, tiếng Việt có hơn 40 loại bảng mã khác nhau được sử dụng để mã hóa
các loại văn bản: từ trang web, các dữ liệu điện tử đến các cơ sở dữ iệu… Việc nhận biết bảng
mã và chuyển đổi giữa các bảng mã tiếng Việt là rất cần thiết, không chỉ mang lại lợi ích cho
các lập trình viên mà cho cả nhân viên văn phòng, nhân viên xử lý văn bản Công việc này cũng
tạo tiền đề cho các việc xử lý tiếp theo trong tiếng Việt như: kiểm tra phát hiện lỗi chính tả, tóm
tắt văn bản, làm từ điển, thậm chí cả dịch máy và xử lý ngôn ngữ tự nhiên Trong khuôn khổ bài
báo này, chúng tôi đưa ra một thuật toán nhận dạng mã để dễ dàng chuyển đổi mã tiếng Việt mà
các chương trình hiện nay hầu hết chỉ chuyển mã biết trước mà không nhận dạng được các bảng
mã, cũng như không xử lý được các văn bản tiếng Việt có nhiều loại mã trong cùng một văn bản
Summary: In recent years, there are over 40 Vietnamese codes for encoding on all types of
data from websites, databases to documents, and many others Codes recognization and
conversion have so many advantages for not only programmers but office clients and secretaries
as well It makes premises for advanced Vietnamese processing such as: spell checking, syntact
correcting, document abstracting, dictionary constructing, even machine translating and natural
language processing
In this article, we present an algorithrm which can recognize many kinds of Vietnamese
codes to make them easy to convert, while almost other programs can only convert some known
codes and cannot recognize codes or process Vietnamese documents having more than one code
CNTT-CB
I MÃ HOÁ TIẾNG VIỆT TRONG CÔNG NGHỆ THÔNG TIN
Công nghệ thông tin là một ngành non trẻ ở nước ta, với khoảng 20 năm phát triển nhưng
nó cũng đang là một ngành có nhiều đóng góp đối với nền kinh tế đất nước Với chi phí rất ít
nhưng nó đem lại lợi nhuận cao, là một hướng đi tắt đón đầu cho các nước đang phát triển bắt
kịp với các nước khác Không những thế công nghệ thông tin làm hiện đại hóa, công nghiệp hóa
không chỉ nền sản xuất xã hội, mà còn làm thay đổi bộ mặt đời sống văn hóa tinh thần của toàn
xã hội
Việc đưa tiếng Việt vào máy tính không chỉ để soạn thảo văn bản mà còn xây dựng phát
triển các phần mềm có giao diện tiếng Việt, thậm chí xử lý tiếng Việt Dẫn tới việc xuất hiện
các bảng mã tiếng Việt, cho phép soạn thảo và xử lý chúng Hiện nay, với trên 40 bảng mã khác
nhau được sử dụng, nên việc khai thác tài liệu, xử lý dữ liệu rất phức tạp Các bảng mã tự bản
thân cũng phức tạp bởi có loại 1 byte có loại 2 byte; có loại tổ hợp nguyên âm và dấu lại có loại
dựng sẵn cho cả nguyên âm lẫn dấu Nhưng về cơ bản các phụ âm, nguyên âm không dấu đều
sử dụng theo mã ASCII Sự khác nhau chỉ là nguyên âm có dấu
Trang 2Ví dụ: Bảng mã Unicode dựng sẵn cho các nguyên âm và nguyên âm có dấu [2.]
Ký
CNTT-CB
II NGÔN NGỮ HÌNH THỨC VÀ OTOMAT HỮU HẠN CÓ LỐI RA
Ở đây, chúng tôi không trình bày các thuật ngữ trong ngôn ngữ hình thức gồm: bảng chữ cái, từ, xâu ký tự, ngôn ngữ hình thức, văn phạm và phân loại của Chomsky Chúng tôi chỉ giới thiệu sơ lược về văn phạm chính quy, otomat hữu hạn Đặc biệt otomat hữu hạn có lối ra, qua đó xây dựng giải thuật cho bài toán đặt ra ở mục trước:
Định nghĩa 1: Văn phạm hay văn phạm sinh là một bộ bốn G = Σ ( , V, , P σ ) với ,
và Σ ∩ trong đó:
Σ ≠ ∅
≠ ∅
- Bảng chữ cái chính hay bảng chữ cái các từ của văn phạm,
Σ
V - Bảng chữ cái phụ hay bảng chữ cái hỗ trợ của văn phạm,
σ ∈ V được gọi là tiên đề hay ký hiệu xuất phát của văn phạm,
Trang 3{ ϕ ψ ϕ + ψ ∗ }
P ( V) , ( V) , ( V) - Tập các quy tắc sinh
của văn phạm [1.]
Định nghĩa 2: Văn phạm sao cho tất cả các quy tắc sinh thuộc một trong
hai dạng: , được gọi là văn phạm chính quy hay văn
phạm otomat [1]
= Σ
Σ
A aB, A a víi A,B V, a
Định nghĩa 3: Otomat hữu hạn có lối ra là một bộ sáu A = ( , , , , , ) S X Y s0 ϕ ψ trong đó S,
X, Y là các tập hữu hạn được gọi một cách tương ứng là tập trạng thái, bảng chữ cái vào và
bảng chữ cái ra của otomat A [1]
0
s ∈ S được gọi là trạng thái khởi đầu
ϕ- hàm chuyển trạng thái là ánh xạ từ tích Đề các S X × vào S
ψ - hàm ra là ánh xạ từ tích Đề các S X × vào Y
Ví dụ 4: Cho otomat có lối ra A = ( { s s s0, ,1 2} { , , , , 0,1 , , a b c } { } ϕ ψ ) với hàm chuyển và
hàm ra như sau:
Hàm chuyển trạng thái ϕ
CNTT-CB
0
Hàm chuyển trạng thái ψ
0
a 0 0 1
b 1 0 1
c 0 1 0 Mỗi một văn phạm chính quy đều tồn tại một nguồn và một otomat hữu hạn tương đương
với nó và ngược lại Ngoài ra, người ta đã chứng minh được lớp ngôn ngữ chính quy đóng đối
với các phép toán hợp, tích ghép, lấy phần bù, giao và phép đồng cấu
III THUẬT TOÁN NHẬN DẠNG VÀ CHUYỂN MÃ
Sự phức tạp ở nhận dạng mã tiếng Việt ở chỗ có rất nhiều mã nếu trong bảng mã này thì là
chữ này nhưng trong bảng mã kia lại là chữ khác Hay nói cách khác là có rất nhiều ký tự ở các
bảng mã khác nhau có cùng một mã ASCII Ví dụ ký tự “ỏ” trong mã UNICODE dựng sẵn và
ký tự “á” trong TCVN3 đều có mã là 0x00e1; hay ký tự “ơ” trong mã VNIWIN và ký tự “ụ”
trong TCVN3 cũng có chung một mã là 0x00f4 Do đó, để nhận dạng một văn bản có nhiều
bảng mã khác nhau, chúng ta phải xây dựng văn phạm chính quy, cho phép phân tích từ vựng
của các từ trong bảng mã đó Vì mọi văn phạm chính quy đều có một otomat tương đương Nên
ta có thể dùng otomat đó để phân tích từ vựng và trên cơ sở otomat có lối ra ta sẽ chuyển mã
sang các mã đích theo mong muốn Khi đó, thuật toán nhận dạng và chuyển mã được tiến hành
theo 2 bước:
Bước 1 Xây dựng otomat có lối ra để phân tích từ vựng và chuyển mã
Ta xây dựng otomat A = (S, X, Y, s0, ϕ, ψ) trong đó:
S – tập trạng thái là tập các mã tiếng Việt đang được dùng: BKHCM1, BKHCM2,
BKED60, TCVN1, TCVN2, TCVN3, VNIDOS, VNIWIN, UNICODE1, UNICODE2 …
Trang 4(khoảng 40 bảng mã)
X – Tập tất cả các mã tiếng Việt của các ký tự của tất cả các mã có thể
Y – Là một tập mã nhất định (chẳng hạn TCVN3) làm bảng mã trung gian chuyển đổi về
nó trước khi chuyển sang mã đích
ϕ - Là hàm chuyển dựa vào các mã trong tập X thuộc vào bảng mã nào của tập S ta xây dựng tương ứng để nhận biết mã từ S X × vào S định hướng để nhận các mã tiếp theo
ψ - Là hàm ra, sau khi đã nhận biết được bảng mã của ký tự dựa vào ϕ ta chuyển sang một
mã trung gian hoặc mã đích luôn
Bước 2 Viết thuật toán chuyển mã có độ phức tạp tuyến tính
Khi đã có otomat, thuật toán đơn giản chỉ hoạt động biến đổi trạng thái theo otomat đã được xây dựng với cấu trúc dữ liệu là 2 bảng phi và xi thay cho 2 hàm để tra cứu tính toán cho nhanh
function recognize_and_convert(Phi,Xi:Array,source:string):string Begin
destination:= “”;
state:=recognize();
for i:=1 to length(source) do begin
state:= Phi[source[i]][state];
destination:=concat(destination,Xi[state]);
end return destination;
CNTT-CB
end;
Vì mọi otomat không tất định ta đều xây dựng được một otomat tất định tương đương mà việc phân tích dựa trên otomat tất định là tuyến tính Do đó, ta luôn xây dựng được một thuật toán tuyến tính để nhận dạng và chuyển đổi mã tiếng Việt
IV KẾT LUẬN
Việc xây dựng thuật toán nhận dạng được các loại mã tiếng Việt khác nhau và chuyển đổi
mã tiếng Việt về một bảng mã thống nhất, đã giúp cho việc xử lý tiếng Việt đơn giản hơn, xây dựng các thư viện xử lý tiếng Việt trở lên dễ dàng hơn chẳng hạn các hàm so sánh tiếng Việt nhận biết được các từ bỏ dấu ở các nguyên âm khác nhau là giống nhau Ngoài ra, nó cũng hỗ trợ cho việc sắp xếp từ điển, làm từ điển dịch máy Hơn nữa, dùng lý thuyết ngôn ngữ hình thức còn có thể bóc tách dữ liệu từ các dữ liệu có định dạng thẻ như rtf, html, xml…, phân tích từ vựng, phân tích cú pháp từ đó ta có thể kiểm tra lỗi chính tả, rút gọn văn bản, tóm tắt dữ liệu, thậm chí là dịch máy và xử lý ngôn ngữ tự nhiên Đây là các hướng mở cho tác giả và các đồng nghiệp nghiên cứu tiếp theo
Tài liệu tham khảo
[1] Đặng Huy Ruận (2005), Lý thuyết ngôn ngữ hình thức và otomat, NXB Đại học Quốc gia Hà Nội
[2] Bảng mã UNICODE Tiếng Việt, Viện Công Nghệ Thông Tin – Trung tâm Khoa học tự nhiên và Công nghệ Quốc gia♦