Hình 4.1: Mô hình chung
KHOA CNTT –
ĐH KHTN
CHƯƠNG 4. MÔ HÌNH 4.1. MÔ HÌNH CHUNG
4.1.1 Tiền xử lý
Phần tiền xử lý bao gồm nhiều công đoạn, bắt đầu bằng phần tách các token (“tiếng”) ( 4.2.1 ở trang kế tiếp), và các phần tiền xử lý khác như đánh dấu các số, các ký hiệu . . .
Do đây là tiền xử lý trên dữ liệu không chính xác, nên một số công đoạn tiền xử lý (như nhận dạng tên riêng) không được thực hiện ngay ở công đoạn này mà được thực hiện trong phần bắt lỗi real-word.
4.1.2 Bắt lỗi non-word
Phần này sử dụng từ điển để tìm ra những token sai, không có trong từ điển, lập danh sách từ đề nghị, sau đó yêu cầu người dùng chọn từ đúng.
Phần này được chạy lặp đi lặp lại cho đến khi không còn lỗi non-word. Sau đó sẽ đến phần thực hiện của bắt lỗi real-word.
4.1.3 Bắt lỗi real-word
Phần này cố gắng tìm ra tất cả các từ sai chính tả. Phần này gồm hai công đoạn là tách từ và bắt lỗi chính tả.
Đầu tiên, lưới từ của câu đang xét sẽ được xây dựng. Sau đó lưới từ này được bổ sung thêm từ cơ chế phục hồi lỗi và các bước tiền xử lý đã không thể thực hiện được trong phần tiền xử lý. Từ lưới từ này, ta sẽ chọn ra một cách tách từ tốt nhất dựa vào mô hình ngôn ngữ.
Sau khi đã tách từ xong, phần việc còn lại rất giống với các bước đã thực hiện trong phần tách từ non-word. Tuy nhiên, thay vì lần lượt tra cứu các từ với từ điển, ta sẽ so sánh giữa từ trong cách tách từ đúng nhất và từ trong câu có giống nhau hay không. Từ trong cách tách từ đúng nhất được xem là
KHOA CNTT –
ĐH KHTN
CHƯƠNG 4. MÔ HÌNH 4.2. TIỀN XỬ LÝ
từ đúng. Nếu từ trong câu không giống, ta xem như đó là lỗi chính tả. Phần còn lại được thực hiện tương tự như trong phần bắt lỗi non-word.
4.2 Tiền xử lý
4.2.1 Tách token
Do văn bản đầu vào là một chuỗi các ký tự, ta cần phải tách văn bản ra thành từng tiếng một, loại bỏ các khoảng trắng dư thừa và đánh dấu các loại dấu câu trong văn bản. Sau khi tách xong, ta được một dãy các chuỗi, mỗi chuỗi là một “token” kèm theo thông tin về loại token đó (chữ, khoảng trắng, dấu câu . . . )
Ví dụ, đoạn văn bản trên được tách thành những phần như sau:
Do văn bản đầu vào là một chuỗi các ký
tự , ta cần phải tách văn bản ra thành
từng tiếng một , loại bỏ các khoảng trắng
dư thừa và đánh dấu các loại dấu câu
trong văn bản . Sau khi tách xong , ta được
một dãy các chuỗi , mỗi chuỗi là một “
token ” kèm theo thông tin về loại token đó
( chữ , khoảng trắng , dấu câu . . . )
Quy luật tách như sau:
• Khoảng trắng là ký tự khoảng trắng (space) hoặc ký tự tab. 83
KHOA CNTT –
ĐH KHTN
CHƯƠNG 4. MÔ HÌNH 4.2. TIỀN XỬ LÝ
• Dấu kết thúc câu bao gồm ba dấu: . ? !
• Dấu đóng ngoặc bao gồm: " ) ] } > ’
• Một token là:
– Một hoặc nhiều dấu kết câu và các dấu đóng ngoặc nếu có. Ví
dụ: .)
– Một hoặc nhiều dấu nối chữ (hyphen) - .
– Một hoặc nhiều dấu mở nháy đơn ‘ .
– Một hoặc nhiều dấu đóng nháy đơn ’ .
– Một hoặc nhiều chữ, chữ số, một số dấu: . , : ’ $ % - \
/ ; kết thúc bằng chữ hoặc chữ số. Ví dụ: tôi $12
– Một hoặc nhiều chữ, chữ số, kết thúc bằng dấu tỉnh lược ’ (quy
tắc này chủ yếu áp dụng cho tiếng Anh, như she’ s a
teacher )
– Một chữ hoặc chữ số.
– Một hoặc nhiều khoảng trắng, dấu xuống dòng và các ký tự lạ khác.
KHOA CNTT –
ĐH KHTN
CHƯƠNG 4. MÔ HÌNH 4.2. TIỀN XỬ LÝ
4.2.2 Tách câu
Mục đích của tách câu là tách ra thành từng câu để xử lý. Việc xác định đơn vị câu rất quan trọng trong các ứng dụng xử lý ngôn ngữ tự nhiên. Tuy nhiên, do chương trình này chưa sử dụng một số thông tin cần đến đơn vị câu, nên “câu” ở đây được hiểu như là một đoạn ngắn, một câu hoặc một phần của câu.
Việc tách câu dựa vào các dấu câu để ngắt câu ra thành từng đoạn để xử lý. Mỗi đoạn sẽ được xử lý độc lập với nhau. Các đoạn được phân cách bởi
các token dấu câu . , ; ( ) . . . Phần tách token phải được thực hiện trước phần tách câu.
4.2.3 Chuẩn hoá Chuẩn hoá dấu
Chuẩn hoá là đặt lại vị trí dấu trong các tiếng nhằm đảm bảo thống nhất một quy tắc đặt dấu chung. Do tiếng Việt có nhiều hơn một quy định về quy tắc bỏ dấu (bỏ dấu khoa học, bỏ dấu mỹ thuật . . . ), gây khó khăn cho các thao tác xử lý về sau, bởi vì cùng một chữ nhưng dùng hai quy tắc bỏ dấu khác nhau sẽ cho ra hai chuỗi ký tự hoàn toàn khác nhau (Ví dụ, “hoà” và “hòa”). Để tránh tình trạng này, dấu được tách riêng ra khỏi tiếng, được coi như là một ký tự nằm ở đầu tiếng. Như vậy một tiếng bất kỳ sẽ bao gồm ký tự đầu tiên đại diện cho thanh điệu, các ký tự theo sau đại diện cho âm đầu và vần của tiếng đó. Dấu được thể hiện theo quy ước gõ VNI:
• Thanh ngang được biểu diễn bằng ký tự ‘0’.
• Thanh sắc được biểu diễn bằng ký tự ‘1’.
• Thanh huyền được biểu diễn bằng ký tự ‘2’. 85