You are on page 1of 37

ĐẠI HỌC ĐÀ NẴNG

TRƯỜNG ĐẠI HỌC BÁCH KHOA


------------------------------------

PHOMMASENG PHANAKHONE

XÂY DỰNG HỆ THỐNG TỰ ĐỘNG


PHÂN LOẠI VĂN BẢN TIẾNG LÀO

LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH

Đà Nẵng, Năm 2018


ĐẠI HỌC ĐÀ NẴNG
TRƯỜNG ĐẠI HỌC BÁCH KHOA
------------------------------------

PHOMMASENG PHANAKHONE

XÂY DỰNG HỆ THỐNG TỰ ĐỘNG


PHÂN LOẠI VĂN BẢN TIẾNG LÀO

Chuyên ngành: KHOA HỌC MÁY TÍNH


Mã số: 60.48.01.01

LUẬN VĂN THẠC SĨ

Người hướng dẫn khoa học: TS. ĐẶNG HOÀI PHƯƠNG

Đà Nẵng, Năm 2018


LỜI CAM ĐOAN
Tôi cam đoan đây là công trình nghiên cứu khoa học của cá nhân tôi dưới sự
hướng dẫn trực tiếp của TS. Đặng Hoài Phương, Trường Đại học Bách Khoa-Đại học
Đà Nẵng.
Các dữ liệu, ví dụ và trích dẫn tham khảo trong luận án đảm bảo độ tin cậy, chuẩn
xác và trung thực.
Những kết quả đóng góp về mặt lý thuyết và ứng dụng của luận án chưa từng
được ai công bố trong bất kỳ công trình nào khác cho đến nay.

Tác giả luận án,

Phommaseng Phanakhone

i
MỤC LỤC
MỞ ĐẦU .........................................................................................................................1
CHƯƠNG 1 TỔNG QUAN PHÂN LOẠI VĂN BẢN ..................................................5
1.1. Phân loại văn bản ..................................................................................................5
1.2. Khái niệm văn bản ................................................................................................5
1.3. Các phương pháp phân loại văn bản ....................................................................7
1.3.1. K-Nearest Neighbor (KNN) ..........................................................................7
1.3.2. Support Vector Machine (SVM) ...................................................................9
1.3.3. Naïve Bayes (NB)........................................................................................11
1.4. Kết luận...............................................................................................................12
CHƯƠNG 2 MÔ HÌNH PHÂN LOẠI VĂN BẢN TIẾNG LÀO ...............................13
2.1. Mô hình phân loại văn bản tiếng Lào .................................................................13
2.2. Biểu diễn văn bản tiếng Lào ...............................................................................14
2.3. Tách từ tiếng Lào ................................................................................................15
2.3.1. Đặc trưng tiếng Lào .....................................................................................16
2.3.2. Phương pháp tách từ tiếng Lào sử dụng Regular Expression .....................22
2.4. Trích chọn đặc trưng...........................................................................................34
2.5. Phân loại văn bản tiếng Lào sử dụng Naive Bayes ............................................34
2.6. Kết Luận .............................................................................................................40
CHƯƠNG 3 XÂY DỰNG HỆ THỐNG TỰ ĐỘNG PHÂN LOẠI VĂN BẢN TIẾNG
LÀO ...............................................................................................................................41
3.1. Mô hình hệ thống ................................................................................................41
3.2. Cơ sở dữ liệu.......................................................................................................42
3.3. Triển khai và đánh giá kết quả ...........................................................................43
3.3.1. Các độ đo đánh giá kết quả phân loại văn bản ............................................44
3.3.2. Thử nghiệm phương pháp tách từ trong câu tiếng Lào. ..............................45
3.3.3. Thực nghiệm Hệ thống phân loại văn bản tiếng Lào ..................................46
3.4. Kết luận...............................................................................................................50
KẾT LUẬN ...................................................................................................................51
TÀI LIỆU THAM KHẢO .............................................................................................52
PHỤ LỤC
QUYẾT ĐỊNH GIAO ĐỀ TÀI (BẢN SAO)

ii
DANH MỤC CHỮ VIẾT TẮT
1. Tiếng Anh
STT Chữ viết tắt Nghĩa tiếng Anh Nghĩa tiếng Việt

1 CRF Conditional Random Field Xác suất có điều kiện

2 DFD Data Flow Diagram Sơ đồ luồng dữ liệu

3 IDF Inverse document frequency Nghịch đảo tần số văn


bản

4 KNN K Nearest Neighbor K láng giềng gần nhất

5 MAP Maximum A Posterior class Phương pháp MAP

6 NB Naive Bayes Phương pháp Naive


Bayes

7 RBF Radial Basis Functions network Mạng hàm bán kính


xuyên tâm cơ sở

8 SVM Support Vector Machine Máy vec tơ hỗ trợ

9 TF Term frequency Tần số xuất hiện của 1


từ trong văn bản

iii
DANH MỤC CÁC BẢNG
Số hiệu Tên bảng Trang
bảng

1.1 Bảng so sánh các phương pháp phân loại văn bản 12

2.1 Ví dụ biểu diễn văn bản trên mô hình không gian vector 15

2.2 Nguyên âm ghép lại với phụ âm cuối vần 18

2.3 Một số cú pháp thường dùng của Regular Expression 24

2.4 Một số chức năng của Regular Expression 25

2.5 Vector từ đơn tiếng Lào 26

2.6 Các thành phần của Vector từ 27

2.7 Ví dụ cách tạo từ đơn tiếng Lào 28

2.8 Dữ liệu huấn luyện và kiểm thử 39

3.1 CSDL bảng documents 41

3.2 CSDL bảng TrainData 42

3.3 CSDL bảng vocabulary 42

3.4 Kết quả phương pháp tách từ đơn 46

3.5 Kết quả phương pháp tách từ 46

Kết quả Phân loại văn bản Naive Bayes với phương pháp
3.6 tách từ không loại bỏ từ dừng 47

So sánh thời gian phân loại văn bản tiếng Lào kết hợp
phương pháp tách từ loại bỏ từ dừng và không loại bỏ từ
3.7 dừng 48

Bảng so sánh mô hình phân loại văn bản tiếng Lào đề xuất
3.8 với các mô hình khác 49

iv
DANH MỤC CÁC HÌNH
Số hiệu Tên hình Trang
bảng

1.1 Bảng mã Unicode tiếng Lào (U+0E80 - U+0EFF) 7

1.2 Thuật toán k láng giềng gần nhất 8

Siêu mặt phẳng h phân chia dữ liệu huấn huyện thành 2 lớp +
và - với khoảng cách biên lớn nhất. Các điểm gần h nhất (được
1.3 khoanh tròn) là các vector hỗ trợ - Support Vector 9

2.1 Mô hình tổng quan phân loại văn bản tiếng Lào 13

2.2 Mô hình tách từ tiếng Lào 22

2.3 Một số cấu trúc câu tiếng Lào 26

2.4 Sơ đồ khối hàm word_split 29

2.5 Sơ đồ khối hàm find_first_word 31

2.6 Sơ đồ khối hàm select_best_word 32

2.7 Sơ đồ khối hàm is_next_word 33

2.8 Likelihoods của từng chủ đề với Naïve Bayes. 35

2.9 Thuật toán Naïve Bayes Multinominal: huấn luyện và kiểm thử 37

2.10 Thuật toán hàm TRAINMULTINOMINALNB 38

2.11 Thuật toán hàm APPLYMULTINOMINALNB 43

3.1 Sơ đồ phân rã chức năng 43

3.2 Biểu đồ lớp 43

3.3 Cơ sở dữ liệu 43

3.4 Kết quả phân loại văn bản tiếng Lào kết hợp tách từ 49

v
MỞ ĐẦU
Internet hiện nay ngày càng phát triển với số lượng người dùng không ngừng
tăng lên, do đó Internet đóng vai trò quan trọng trong cuộc sống và xã hội đối với giao
tiếp và chia sẻ thông tin.
Trước đây, người Lào sử dụng tiếng nước ngoài để nhận biết và trao đổi thông
tin lẫn nhau ví dụ: tiếng Anh, tiếng Việt, tiếng Thái Lan, … Ngoài ra, người Lào sử dụng
chữ tiếng Anh ghép vào nhau để trở thành từ mà phát âm giống tiếng Lào thay vì viết
bằng tiếng Lào vì hầu hết thiết bị truy cập được Internet chưa hỗ trợ tiếng Lào.
Với sự phát triển của công nghệ thông tin, người dân Lào có điều kiện truy cập
Internet với chi phí và tốc độ hợp lý; các thiết bị như smart phone, máy vi tính có bàn
phím tiếng Lào và hiển thị được ngôn ngữ tiếng Lào, do đó tiếng Lào trở thành ngôn
ngữ chính thức mà người Lào sử dụng để chia sẻ thông tin trên Internet. Vấn đề đặt ra
ở đây là làm cách nào tìm kiếm thông tin một cách chính xác và có hiệu quả nhất với
văn bản tiếng Lào, và một trong những giải pháp là áp dụng các phương pháp phân loại
văn bản tiếng Lào. Trong thực tế, việc phân loại văn bản bằng phương pháp thủ công là
rất khó khăn vì lượng dữ liệu thông tin rất lớn. Vì vậy, việc phân nhóm văn bản, sẽ tốn
nhiều thời gian và công sức nhưng hiệu quả phân loại không cao.
Đối với công trình nghiên cứu phân loại văn bản tiếng Lào còn hạn chế, chủ yếu
dựa trên máy vector hỗ trợ và mạng hàm bán kính xuyên tâm cơ sở. Cũng với phương
pháp tách từ, trong những năm gần đây có một số công trình nghiên cứu về phân loại
văn bản tiếng Lào, tuy nhiên đa số vẫn tồn tại vấn đề về việc xử lý nhập nhằng trong
tiếng Lào. Vì tiếng Lào có nhiều cách viết, cách nói và sử dụng từ không thống nhất, do
đó việc tách từ tiếng Lào sẽ rất khó khăn.
Để khắc phục những hạn chế nêu trên, tác giả đề xuất đề tài luận văn cao học:
“Xây dựng hệ thống tự động phân loại văn bản tiếng Lào” bằng cách biểu diễn văn bản
thành vector các từ khóa, áp dụng Regular Expression kết hợp với khuôn mẫu từ đơn để
tách từ đơn, ghép lại những từ đơn thành từ phức dựa trên tập từ phức, đồng thời sử
dụng phương pháp Naïve Bayes để phân loại văn bản tiếng Lào.

1
1. Mục đích, đối tượng và phạm vi nghiên cứu
Mục đích của đề tài:
Nghiên cứu, phân tích cấu trúc từ và câu trong văn bản tiếng Lào; đề xuất phương
pháp tách từ tiếng Lào dựa trên Regular Expression với khuôn mẫu biểu thức chính quy.
Sử dụng phương pháp Naive Bayes để xây dựng mô hình phân loại văn bản tiếng Lào,
hiệu thức hoá hệ thống tự động phân loại văn bản tiếng Lào trên cơ sở mô hình đề xuất.

Ý nghĩa khoa học:


Đề xuất phương pháp tách từ đối với văn bản tiếng Lào sử dụng Regular
Expression và cải tiến với khuôn mẫu biểu thức chính quy của từ đơn Lào.
Xây dựng mô hình phân loại văn bản tiếng Lào dựa trên cơ sở phương pháp tách
từ đề xuất và Naive Bayes;

Ý nghĩa thực tiễn:


Hiệu thức hoá hệ thống tự động phân loại văn bản tiếng Lào trên cơ sở mô hình
đề xuất.

Đối tượng nghiên cứu:


Trong khuôn khổ của luận văn thuộc loại xây dựng hệ thống, tác giả chỉ giới hạn
nghiên cứu các vấn đề sau:
- Các cấu trúc từ và câu trong văn bản tiếng Lào;
- Phương pháp tách từ tiếng Lào dựa trên biểu thức chính quy (Regular Expression)
kết hợp với khuôn mẫu từ đơn và ghép lại những từ đơn thành từ phức dựa trên
tập từ phức;
- Phương pháp phân loại văn bản Naive Bayes.

2. Mục tiêu và nhiệm vụ


Mục tiêu:
Mục tiêu chính của đề tài là nghiên cứu về cấu trúc từ tiếng Lào, đề xuất phương
pháp tách từ sử dụng biểu thức chính quy (Regular Expression) và xây dựng hệ thống
tự động phân loại văn bản tiếng Lào dựa trên phương pháp Naive Bayes. Để thỏa mãn
mục tiêu này thì cần đạt được những mục tiêu cụ thể sau:
- Nghiên cứu cấu trúc và phương pháp tách từ trong văn bản tiếng Lào;
- Nghiên cứu sử dụng Naive Bayes phân loại văn bản tiếng Lào;
- Xây dựng được hệ thống phân loại văn bản tiếng Lào và áp dụng vào thực tế.

2
Nhiệm vụ:
Để đạt được những mục tiêu trên thì nhiệm vụ đạt ra của đề tài là:
- Phân tích cấu trúc từ và câu trong văn bản tiếng Lào;
- Phân tích phương pháp tách từ tiếng Lào;
- Phân tích các mô hình và phương pháp phân loại văn bản, đưa ra bài toán cần
giải quyết;
- Phân tích và đề xuất mô hình giải quyết bài toán;
- Hiện thực hóa hệ thống nêu trên, đánh giá kết quả đạt được trong thực tế.

3. Phương pháp nghiên cứu


Phương pháp lý thuyết:
Tiến hành thu thập và phân tích các tài liệu có liên quan đến đề tài, nghiên cứu
phương pháp tách từ và phương pháp phân loại văn bản;

Phương pháp thực nghiệm:


- Xây dựng cơ sở dữ liệu văn bản tiếng Lào;
- Xây dựng hệ thống tự động phân loại văn bản tiếng Lào;
- Cài đặt hệ thống và triển khai thực tế, nhận xét và đánh giá kết quả đạt được.

Phương tiện, công cụ triển khai:


- Ngôn ngữ lập trình Python 3;
- Môi trường phát triển tích hợp (IDE) PyCharm CE 2017.3.3;
- Hệ quản trị cơ sở dữ liệu MongoDB

4. Đóng góp chính của luận án


1. Xây dựng kho ngữ vựng từ phức tiếng Lào phục vụ cho phương pháp tách từ
tiếng Lào.
2. Đề xuất giải pháp tách từ sử dụng biểu thức chính quy (Regular expression) kết
hợp với khuôn mẫu các từ đơn và ghép lại từng từ đơn thành từ phức có âm tiết
dài nhất trong từ điển từ phức.
3. Ứng dụng Naive Bayes xây dựng mô hình phân loại văn bản tiếng Lào.
4. Triển khai hệ thống trong thực tế và đánh giá hiệu quả của mô hình.

3
5. Cấu trúc của luận án
Sau phần mở đầu, nội dung của luận án gồm ba chương như sau:
Chương 1, Giới thiệu tổng quan phân loại văn bản, các khái niệm, bài toán phân
loại văn bản tiếng Lào.
Chương 2, Trình bày mô hình phân loại văn bản tiếng Lào gồm mô hình tổng
quan, mô hình tách từ và mô hình phân loại văn bản tiếng Lào.
Chương 3, Xây dựng Hệ thống tự động phân loại văn bản tiếng Lào.
Sau 3 chương trên là phần kết luận và hướng phát triển của đề tài. Phần cuối luận
án là danh mục các tài liệu tham khảo và các phụ lục liên quan.

4
CHƯƠNG 1
TỔNG QUAN PHÂN LOẠI VĂN BẢN
1.1. Phân loại văn bản
Phân loại văn bản (Document Classification/Categorization) đóng một vai trò
quan trọng trong bối cảnh phát triển nhanh chóng của công nghệ thông tin với sự bùng
nổ số lượng dữ liệu ngày càng lớn lên. Phân loại văn bản giúp người dùng xử lý văn bản
đúng mục đích và đáp ứng yêu cầu của mình. Về nội dung, hình thức xuất hiện của mỗi
văn bản thường khác nhau nên việc lựa chọn phương pháp phân loại văn bản cho thích
hợp là một vấn đề khó khăn.
Theo sự phát triển công nghệ thông tin, dữ liệu văn bản tiếng Lào ngày càng
nhiều. Theo cách truyền thống, phân loại văn bản đúng nhóm có thể thực hiện một cách
thủ công, là đọc nội dung văn bản và gán nó vào nhóm phù hợp, trong trường hợp số
lượng văn bản lớn, sẽ mất rất nhiều thời gian công sức và chi phí. Do đó, cần phải xây
dựng các công cụ phân loại văn bản một cách tự động.
Đối với tiếng Lào thì các công trình nghiên cứu về phân loại văn bản còn hạn
chế, chủ yếu sử dụng mạng nơ ron RBF, máy vector hỗ trợ (SVM) [1].

1.2. Khái niệm văn bản


Có nhiều quan niệm khác nhau về văn bản (hay văn kiện, tài liệu, tư liệu, thuật
ngữ tiếng Anh gọi là Document), tùy theo hướng tiếp cận. Tuy nhiên có thể hiểu một
cách đơn giản, văn bản là một phương tiện dùng để ghi nhận, lưu giữ và truyền đạt các
thông tin, từ chủ thể này sang chủ thể khác bằng các ký hiệu hay ngôn ngữ nhất định
nào đó. Văn bản là dạng sản phẩm của hoạt động giao tiếp bằng ngôn ngữ, được hình
thành một cách thủ công hay sử dụng công cụ, được thể hiện ở dạng chữ viết, trên một
chất liệu nào đó (giấy tờ, bia đá...), gồm tập hợp các câu có tính trọn vẹn về nội dung,
hoàn chỉnh về hình thức, có tính liên kết chặt chẽ và hướng tới một mục tiêu giao tiếp
nhất định [1].
Mỗi văn bản nhìn chung gồm hai thành phần chính là phần nội dung và phần hình
thức trình bày. Phần nội dung tập hợp bởi các câu có tính trọn vẹn về ngữ nghĩa và phần
hình thực thể hiện tính liên kết chặt chẽ với nội dung và hướng tới một mục tiêu giao
tiếp nhất định. Về nội dung, người ta hay phân loại văn bản theo nhiều tiêu chí khác
nhau tùy theo mục đích sử dụng. Ngoài ra người ta thường phân loại văn bản theo hình

5
thức biểu đạt như miêu tả, biểu cảm, hay theo phong cách chức năng ngôn ngữ như: giao
tiếp, báo chí, khoa học.
Hình thức trình bày của văn bản có thể phân biệt theo nhiều cách tiếp cận: như
văn bản thuần túy (Pure Text) chỉ chứa chữ hay ký tự, hoặc văn bản không thuần túy
ngoài chữ thì chứa các thành phần đồ họa, hình ảnh, hoạt hình, bảng biểu hình vẽ, chiếu
phim, ca nhạc như trên các trang web… Văn bản có thể gồm một ngôn ngữ
(Monolingual) hay đa ngôn ngữ (Multilingual), văn bản thuần nhất (Plain text) chỉ sử
dụng một bộ mã như Unicode.
Văn bản là một tập hợp các ký tự và được tổ chức thành từ, dòng, đoạn và trang,
được mã hóa, lưu trữ trên các thiết bị nhớ khác nhau dưới dạng một tệp văn bản. Thông
thường, trong ngôn ngữ như tiếng Anh, người ta trình bày mỗi từ là một chuỗi ký tự có
khoảng trống phân cách giữa các từ, nhưng trong tiếng Lào không dùng khoảng trống
để phân cách mỗi từ mà là viết các từ vựng ghép sát nhau thành một nhóm từ cho đến
đũ nghĩa của nhóm từ đó. Ví dụ như sau:
- Tiếng Anh: I play table tennis every Friday.
- Tiếng Việt: Tôi chơi bóng bàn mỗi thứ sáu.
- Tiếng Lào: ຂ້ອຍຫຼິ້ນປິ່ງປ່ອງທຸກໆວັນສຸກ.
Văn bản được chia ra thành hai loại là phi cấu trúc (Unstructure Document)
thường được lưu dưới dạng tệp (*.txt) và văn bản có cấu trúc (Structure Document) là
loại văn bản được phân cấp các thành phần khác nhau như phần đầu, phần cuối, chương,
mục, giới thiệu, tham khảo, minh họa… Mỗi thành phần có cách trình bày vật lý khác
nhau với những ký tự điểu khiển mà không nhìn thấy được phía người dùng, các văn
bản có cấu trúc thường được lưu trữ trên tệp (*.html, *.php, *.xml, *.docx, ...).
Trong luận văn, tác giả sẽ tập trung sử dụng ba loại file văn bản phổ biến là html,
docx và txt. Dữ liệu huấn luyện và thử nghiệm sẽ được rút ra trên các web site tiếng Lào
và xử lý lưu trữ dưới dạng tệp văn bản thuần nhất (Plain text, .txt) sử dụng mã hóa
Unicode.

6
Hình 1.1 Bảng mã Unicode tiếng Lào (U+0E80 - U+0EFF)

1.3. Các phương pháp phân loại văn bản


Hiện nay, có nhiều phương pháp phân loại văn bản đã được nghiên cứu đặc biệt
là với văn bản tiếng Anh như: Naive Bayes [8] [14] [15], Support Vector Machines [23],
K-Nearest Neighbor [17], ...
Nghiên cứu phân loại văn bản tiếng Lào chủ yếu sử dụng phương pháp so khớp
tối đa kết hợp với kho từ đơn được xây dựng từ máy suy diễn, sau đó xử lý nhập nhằng
của từ dựa trên tiêu chuẩn xác suất thống kê và áp dụng thuật toán máy vector hỗ trợ
(Support Vector Machine) dựa trên cơ sở RBF để phân loại văn bản [1].

1.3.1. K-Nearest Neighbor (KNN)


K-Nearest Neighbor (KNN hay K-láng giềng gần nhất) là phương pháp truyền
thống khá nổi tiếng theo hướng tiếp cận thống kê đã được nghiên cứu trong nhiều năm
qua [17]. K-Nearest Neighbor được đánh giá là một trong những phương pháp tốt nhất
được sử dụng từ những thời kỳ đầu trong nghiên cứu về phân loại văn bản.
Ý tưởng của phương pháp này là khi cần phân loại một văn bản mới, thuật toán
sẽ tính khoảng cách (có thể áp dụng các công thức về khoảng cách như Euclide, Cosine,
Manhattan, …) của tất cả các văn bản trong tập huấn luyện đến văn bản này để tìm ra k
văn bản có khoảng cách gần nhất, gọi là K-Nearest Neighbor (K-láng giềng gần nhất),
sau đó dùng các khoảng cách vừa tính được này đánh trọng số cho tất cả các chủ đề đã
có. Khi đó, trọng số của một chủ đề sẽ được tính bằng tổng các khoảng cánh từ văn bản
cần phân loại đến các văn bản trong k láng giềng mà có cùng chủ đề đó. Những chủ đề
không xuất hiện trong tập k văn bản sẽ có trọng số bằng 0. Các chủ đề được sắp xếp
theo độ giảm dần của các trọng số và chủ đề nào có trọng số cao sẽ là chủ đề cho văn
bản cần phân loại.

7
Hình 1.2 Thuật toán k láng giềng gần nhất
Trọng số của chủ đề cj đối với văn bản x được tính như sau:

𝑊(𝑥⃗, 𝑐𝑗 ) = ∑ 𝑠𝑖𝑚(𝑥⃗, ⃗⃗⃗⃗ ⃗⃗⃗⃗𝑖 , 𝑐𝑗 ) − 𝑏𝑗


𝑑𝑖 ). 𝑦(𝑑
⃗⃗⃗⃗⃗
𝑑𝑖 ∈𝐾𝑁𝑁
Trong đó:
- ⃗⃗⃗⃗𝑖 , 𝑐𝑗 ) ∈ {0,1} với: y=0 văn bản di không thuộc về chủ đề cj, với y=1 văn bản
𝑦(𝑑
di thuộc về chủ đề 𝑐𝑗 ;
- 𝑠𝑖𝑚(𝑥⃗, ⃗⃗⃗⃗
𝑑𝑖 ): độ giống nhau giữa văn bản cần phân loại x và văn bản ⃗⃗⃗⃗
𝑑𝑖 . sử dụng
độ đo cosine để tính 𝑠𝑖𝑚(𝑥⃗, 𝑑⃗⃗⃗⃗𝑖 ):
𝑥⃗. ⃗⃗⃗⃗
𝑑𝑖
𝑠𝑖𝑚(𝑥⃗, ⃗⃗⃗⃗
𝑑𝑖 ) = 𝑐𝑜𝑠(𝑥⃗, ⃗⃗⃗⃗
𝑑𝑖 ) =
‖𝑥⃗ ‖. ‖𝑑 ⃗⃗⃗⃗𝑖 ‖
- bj: là ngưỡng phân loại của chủ đề cj được tự động học sử dụng một tập văn bản
hợp lệ được chọn ra từ tập huấn luyện.
- Để chọn được tham số k tốt nhất cho thao tác phân loại, thuật toán cần được chạy
thử nghiệm trên nhiều giá trị k khác nhau, giá trị k càng lớn thì thuật toán càng
ổn định và sai sót càng thấp.

Ưu điểm của KNN


- Độ phức tạp tính toán của quá trình huấn luyện là bằng 0;

8
- Việc dự đoán kết quả của dữ liệu mới rất đơn giản;
- Không cần giả sử gì về phân phối của các lớp.

Nhược điểm của KNN


- KNN rất nhạy cảm với nhiễu khi 𝑘 nhỏ;
- KNN là một thuật toán mà mọi tính toán đều nằm ở khâu huấn luyện. Trong đó
việc tính khoảng cách tới từng điểm dữ liệu trong dữ liệu huấn luyện sẽ tốn rất
nhiều thời gian, đặc biệt là với các cơ sở dữ liệu có số chiều lớn và có nhiều điểm
dữ liệu. Với 𝑘 càng lớn thì độ phức tạp cũng sẽ tăng lên. Ngoài ra, việc lưu toàn
bộ dữ liệu trong bộ nhớ cũng ảnh hưởng tới hiệu năng của KNN.

1.3.2. Support Vector Machine (SVM)


Máy sử dụng vector hỗ trợ (SVM) được Cortess và Vapnik giới thiệu năm 1995,
là phương pháp tiếp cận phân loại hiệu quả để giải quyết vấn đề nhận dạng mẫu 2 lớp
sử dụng nguyên lý Cực tiểu hóa Rủi ro có Cấu trúc (Structural Risk Minimization) [23].
Trong không gian vector cho trước một tập huấn luyện được biểu diễn trong đó
mỗi tài liệu là một điểm, thuật toán SVM sẽ tìm ra một siêu mặt phẳng h quyết định tốt
nhất có thể chia các điểm trên không gian này thành hai lớp riêng biệt tương ứng lớp (+)
và lớp (–). Chất lượng của siêu mặt phẳng phân cách này được quyết định bởi khoảng
cách (gọi là biên) của điểm dữ liệu gần nhất của mỗi lớp đến mặt phẳng này. Khoảng
cách biên càng lớn thì mặt phẳng quyết định càng tốt và việc phân loại càng chính xác.
Mục đích thuật toán SVM là tìm được khoảng cách biên lớn nhất (Hình 1.3).

Hình 1.3 Siêu mặt phẳng h phân chia dữ liệu huấn huyện thành 2 lớp + và - với khoảng
cách biên lớn nhất. Các điểm gần h nhất (được khoanh tròn) là các vector hỗ trợ -
Support Vector

Phương trình siêu mặt phẳng chứa vector di trong không gian:
𝑑⃗𝑖 ⋅ 𝑤
⃗⃗⃗ + 𝑏 = 0

9
+1, 𝑑⃗𝑖 ⋅ 𝑤
⃗⃗⃗ + 𝑏 > 0
Đặt ℎ(𝑑⃗𝑖 ) = 𝑠𝑖𝑔𝑛(𝑑⃗𝑖 ⋅ 𝑤
⃗⃗⃗ + 𝑏) {
−1, 𝑑⃗𝑖 ⋅ 𝑤⃗⃗⃗ + 𝑏 < 0

Từ đó, ℎ(𝑑⃗𝑖 ) biểu diễn sự phân loại của 𝑑⃗𝑖 vào hai lớp nói trên.
Có 𝑦𝑖 = {±1} thì với𝑦𝑖 = +1, văn bản 𝑑⃗𝑖 𝜖 lớp “-”. Lúc này muốn có siêu mặt
phẳng h, ta sẽ giải bài toán sau:
Tìm min ‖𝑤 ⃗⃗⃗‖, trong đó 𝑤
⃗⃗⃗ và b thỏa mãn điều kiện:

1, 𝑛: 𝑦𝑖 (𝑠𝑖𝑔𝑛(𝑑⃗𝑖 ⋅ 𝑤
∀𝑖 ∈ ̅̅̅̅̅ ⃗⃗⃗ + 𝑏)) ≥ 1

Khi đó ta có thể sử dụng toán tử Lagrange biến đổi thành dạng thức để giải bài
toán.
Ở phương pháp SVM, mặt phẳng quyết định chỉ phụ thuộc vào các điểm gần nó
1
nhất (vector hỗ trợ - support vector) mà có khoảng cách đến nó là: ‖𝑤
. Khi các điểm
⃗⃗⃗‖
khác bị xóa đi thì vẫn không ảnh hưởng đến kết quả ban đầu.
Ưu điểm:
- Xử lý trên không gian số chiều cao: SVM là một công cụ tính toán hiệu quả trong
không gian chiều cao, trong đó đặc biệt áp dụng cho các bài toán phân loại văn
bản và phân tích quan điểm nơi chiều có thể cực kỳ lớn;
- Tiết kiệm bộ nhớ: do chỉ có một tập hợp con của các điểm được sử dụng trong
quá trình huấn luyện và ra quyết định thực tế cho các điểm dữ liệu mới nên chỉ
có những điểm cần thiết mới được lưu trữ trong bộ nhớ khi ra quyết dịnh;
- Tính linh hoạt: phân lớp thường là phi tuyến tính. Khả năng áp dụng Kernel mới
cho phép linh động giữa các phương pháp tuyến tính và phi tuyến tính từ đó khiến
cho hiệu suất phân loại lớn hơn.

Nhược điểm:
- Bài toán số chiều cao: trong trường hợp số lượng thuộc tính (p) của tập dữ liệu
lớn hơn rất nhiều so với số lượng dữ liệu (n) thì SVM cho kết quả khá tồi;
- Chưa thể hiện rõ tính xác suất: việc phân lớp của SVM chỉ là việc cố gắng tách
các đối tượng vào hai lớp được phân tách bởi siêu phẳng SVM. Điều này chưa
giải thích được xác suất xuất hiện của một thành viên trong một nhóm là như thế
nào. Tuy nhiên hiệu quả của việc phân lớp có thể được xác định dựa vào khái
niệm margin từ điểm dữ liệu mới đến siêu phẳng phân lớp mà chúng ta đã bàn
luận ở trên.

10
1.3.3. Naïve Bayes (NB)
Phương pháp Naive Bayes là sử dụng xác suất có điều kiện giữa từ và chủ đề để
dự đoán xác suất chủ đề của một văn bản cần phân loại. Điểm quan trọng của phương
pháp này chính là ở chỗ giả định rằng sự xuất hiện của tất cả các từ trong văn bản đều
độc lập với nhau. Giả định đó làm cho việc tính toán Naive Bayes hiệu quả và nhanh
chóng hơn các phương pháp khác vì không sử dụng việc kết hợp các từ để đưa ra phán
đoán chủ đề [8][9][14][15].
Nếu tập dữ liệu huấn luyện nghèo nàn và các tham số dự đoán (như không gian
đặc trưng) có chất lượng kém thì sẽ dẫn đến kết quả tồi. Tuy nhiên, nó được đánh giá là
một thuật toán phân loại tuyến tính thích hợp trong phân loại văn bản nhiều chủ đề với
một số ưu điểm: cài đặt đơn giản, tốc độ nhanh, dễ dàng cập nhật dữ liệu huấn luyện
mới và có tính độc lập cao với tập huấn luyện, có thể sử dụng kết hợp nhiều tập huấn
luyện khác nhau. Thông thường, người ta còn đặt thêm một ngưỡng tối ưu để cho kết
quả phân loại khả quan.
Mục đích chính là tính được xác suất P(𝐶𝑗| 𝑑 ′ ), xác suất để văn bản d′ nằm trong
loại văn bản Cj. Theo Bayes, văn bản d’ sẽ được gán cho loại văn bản nào có xác suất
hậu nghiệm cao nhất nên được biểu diễn bằng công thức:


𝑃(𝐶𝑗)∗𝑃(𝑑 |𝐶𝑗 )
Loại văn bản của d’ = arg max {𝑃(𝐶𝑗|𝑑′} = 𝑎𝑟𝑔 max
1≤𝑘≤𝑁 1≤𝑘≤𝑁 𝑃(𝑑′ )

trong đó N là tổng số tài liệu

Công thức sau dùng để tính P(𝐶𝑗| 𝑑 ′ ):


𝑃(𝑑′|𝐶𝑗)
P(𝐶𝑗| 𝑑 ′ ) = 𝑃(𝐶𝑗) ∗
𝑃 (𝑑′)
Trong đó:
- 𝑃(𝐶𝑗| 𝑑 ′ ) là xác suất mà văn bản d′ có khả năng thuộc vào lớp Cj
- d′ là tài liệu cần phân loại
- Cj là một tài liệu bất kì
- 𝑃(𝑑 ′ |𝐶𝑗) được tính toán từ tần suất xuất hiện của các từ (𝑤𝑗 ) trong tài liệu d’:
𝑃(𝑑 ′ |𝐶𝑗) = ∏ 𝑃(𝑤𝑗 |𝐶𝑗)
𝑖<𝑗<𝑙
trong đó l là tổng số từ w trong tài liệu D

- P(𝐶𝑗) là tỷ lệ phần trăm của số văn bản mỗi lớp tương ứng trong tập dữ liệu
luyện:

11
‖𝐶𝑗 ‖ ‖𝐶𝑗 ‖
𝑃(𝐶𝑗 ) = =
‖𝐶 ‖ ∑𝐶 ′ ∈𝐶‖𝐶 ′ ‖

P(wi|Cj) sử dụng phép ước lượng Laplace:


1 + 𝑇𝐹(𝑤𝑖 , 𝐶𝑗 )
𝑃(𝑤𝑖 |𝐶𝑗 ) =
|𝐹 | + ∑𝑤∈|𝐹| 𝑇𝐹(𝑤 ′ , 𝐶𝑗 )

Naive Bayes là một phương pháp rất hiệu quả trong một số trường hợp. Nếu tập
dữ liệu huấn luyện nghèo nàn và các tham số dự đoán (như không gian đặc trưng) có
chất lượng kém thì sẽ dẫn đến kết quả tồi. Tuy nhiên, nó được đánh giá là một thuật toán
phân loại tuyến tính thích hợp trong phân loại văn bản nhiều chủ đề với một số ưu điểm:
cài đặt đơn giản, tốc độ nhanh, dễ dàng cập nhật dữ liệu huấn luyện mới và có tính độc
lập cao với tập huấn luyện, có thể sử dụng kết hợp nhiều tập huấn luyện khác nhau.
Thông thường, người ta còn đặt thêm một ngưỡng tối ưu để cho kết quả phân loại khả
quan.
Phân tích các phương pháp phân loại văn bản trên, có thể so sánh như bảng 1.1:
Bảng 1.1 Bảng so sánh các phương pháp phân loại văn bản
Phương pháp phân Đơn giản Phân loại Dễ cài đặt Kết quả tốt với đa
loại văn bản nhanh nhãn lớp
K-Nearest Neighbor 
Support Vector 
Machine
Naïve Bayes    
Bảng so sánh phương pháp phân loại văn bản nêu trên cho thấy rằng phương pháp
phân loại văn bản Naïve Bayes đáp ứng yêu cầu nhiều hơn đối với vấn đề đặt ra trên.

1.4. Kết luận


Chương 1 tác giả đã trình bày tổng quan về công trình phân loại văn bản, bài toán
phân loại văn bản tiếng Lào, cho biết các phương pháp phân loại văn bản như K-Nearest
Neighbor, Suport Vector Machine, Naive Bayes và lựa chọn phương pháp Naive Bayes
để xây dựng hệ thống tự động phân loại văn bản tiếng Lào.

12
CHƯƠNG 2
MÔ HÌNH PHÂN LOẠI VĂN BẢN
TIẾNG LÀO
Trong chương này sẽ trình bày về mô hình tổng quan phân loại văn bản tiếng
Lào, những đặc trưng của tiếng Lào, mô hình tách từ áp dụng Regular Expression và mô
hình phân loại văn bản tiếng Lào dựa trên phương pháp Naive Bayes.

2.1. Mô hình phân loại văn bản tiếng Lào


Vấn đề phân loại văn bản tiếng Lào dựa trên kiểu học có giám sát được đặc tả
bao gồm 2 giai đoạn: giai đoạn huấn luyện và giai đoạn phân loại.
Một cách tổng quát, giải quyết bài toán phân loại văn bản gồm các bước (Hình
2.1):
- Tiền xử lý văn bản đầu vào và biểu diễn văn bản theo mô hình vector từ khóa,
mỗi văn bản được biểu diễn bằng một vector của các từ khóa;
- Trích chọn đặc trưng, loại bỏ từ dừng;
- Huấn luyện;
- Phân loại văn bản.
Giai đoạn huấn luyện Naïve Bayes

Dữ liệu
huấn luyện Huấn luyện

Trích chọn đặc


Tiền xử lý
trưng
Giai đoạn phân loại

Phân loại
Văn bản
tiếng Lào

Loại văn bản

Hình 2.1 Mô hình tổng quan phân loại văn bản tiếng Lào
Giai đoạn huấn luyện có các bước:

13
- Dữ liệu huấn luyện: dữ liệu huấn luyện thu thập từ các trang web tiếng Lào, lưu
trữ dưới dạng văn bản thuần nhất với mã hóa Unicode và nhãn lớp xác định;
- Tiền xử lý: Biểu diễn các dữ liệu văn bản tiếng Lào thành một vector từ khóa, áp
dụng biểu thức chính quy kết hợp với khuôn mẫu từ đơn để tách ra từ đơn và
ghép lại từ đơn thành từ phức dựa trên từ điển từ phức;
- Trích chọn đặc trưng: loại bỏ những từ dừng (stop-words) không mang thông tin,
thường thì không có ích gì trong việc phân biệt nội dung của các tài liệu, nhằm
nâng cao hiệu suất phân loại và giảm độ phức tạp của thuật toán huấn luyện.
Ví dụ, từ chỉ dùng để phục vụ cho biểu diễn cấu trúc chứ không biểu đạt
nội dung của nó như là “ໃນ” (giới từ), “ແຕ່” (liên từ), động từ phổ biến có dạng
“ແມ່ນ”, “ໄດ້”, và một số trạng từ và tính từ đặc biệt cũng được xem là những từ
dừng (stop-words). Vì đặc điểm của từ dừng nên chúng được loại bỏ mà không
ảnh hưởng đến các công việc biểu diễn văn bản.
- Huấn luyện: hay thuật toán huấn luyện thủ tục huấn luyện bộ phân loại để tìm ra
họ các tham số tối ưu dựa trên phương pháp Naive Bayes sử dụng xác suất có
điều kiện giữa từ và chủ đề để dự đoán xác suất chủ đề của một văn bản cần phân
loại.

Giai đoạn phân loại có các bước:


- Văn bản tiếng Lào: đưa vào bất kỳ văn bản tiếng Lào với mã hóa Unicode;
- Tiền xử lý: Thực hiện như giai đoạn huấn luyện, biểu diễn văn bản theo mô hình
vector từ khóa;
- Trích chọn đặc trưng: Thực hiện như giai đoạn huấn luyện nêu trên;
- Phân loại văn bản: Sau khi biểu diễn văn bản tiếng Lào thành một vector từ khóa
và trích trọn đặc trưng, sẽ tính xác suất của Vector từ của văn bản đang xét với
xác suất của mỗi nhóm trên bộ huấn luyện từ giai đoạn huấn luyện và chọn nhóm
có số cao nhất là loại của văn bản.

2.2. Biểu diễn văn bản tiếng Lào


Trong luận văn này, mỗi văn bản đưa vào hệ thống tự động phân loại văn bản
tiếng Lào dựa trên phương pháp Naive Bayes được biểu diễn trên mô hình vector, các
văn bản được thể hiện trong một không gian có số chiều lớn, trong đó mỗi chiều của
không gian tương ứng với một từ trong văn bản. Mỗi văn bản D được biểu diễn dưới
dạng 𝑥⃗. Trong đó 𝑥⃗ = (𝑥1 , 𝑥2 , … , 𝑥𝑛 ), và n là số lượng đặc trưng hay số chiều của vector
văn bản, 𝑥𝑛 là trọng số của đặc trưng thứ i (với 𝑖 ≤ 𝑖 ≤ 𝑛).

14
Ví dụ:
VB1: ຂ້ອຍມັກອ່ານປຶ້ມ ແລະ ຂຽນປຶ້ມ (tôi đọc sách), được tách từ ຂ້ອຍ|ມັກ|ອ່ານ|ປຶ້ມ|ແລະ|ຂຽນ|ປຶ້ມ
VB2: ຂ້ອຍຂຽນໜັງສື (tôi viết bài), được tách từ ຂ້ອຍ|ຂຽນ|ໜັງສື

Với 2 văn bản trên, áp dụng mô hình vector ta có biểu diễn như sau:
Bảng 2.1 Ví dụ biểu diễn văn bản trên mô hình vector từ khóa
Từ Vector_VB1 Vector_VB2
ຂ້ອຍ 1 1
ອ່ານ 1 0
ຂຽນ 1 1
ໜັງສື 1 1
ມັກ 1 0
ປຶ້ມ 2 0

2.3. Tách từ tiếng Lào


Trong quá trình xử lý bài toán phân loại văn bản, trước hết văn bản phải được xử
lý và rút ra những thuộc tính cần thiết cho việc phân loại văn bản đó là những từ xuất
hiện trong văn bản, rồi biểu diễn từng văn bản theo một mô hình như: mô hình phân tích
cú pháp, mô hình vector, mô hình boolean, mô hình tần suất… cho phù hợp với yêu cầu
của mỗi phương pháp phân loại văn bản. Để có thể lấy được những từ trong văn bản
phải qua bước tiền xử lý cơ bản như tách từ.
Bài toán tách từ (Word Segmentation) hay cũng gọi là tách các thuật ngữ
(Tokenizer), là một quá trình xử lý nằm ranh giới các từ trong câu. Về mặt ngôn ngữ là
sẽ xác định từ đơn, từ ghép có mặt trong câu. Trong lĩnh vực xử lý ngôn ngữ tự nhiên
bài toán tách từ có vai trò quan trong nhất trong việc xác định cấu trúc ngữ pháp trong
câu.
Tách từ quen thuộc, đơn giản với con người do tính trực quan, nhưng trong xử lý
ngôn ngữ tự nhiên sẽ gặp rất nhiều khó khăn đối với ngôn ngữ nằm ở vùng Đông Á như
tiếng Thái, tiếng Nhật, tiếng Trung Quốc, tiếng Kmer kể cả tiếng Lào.
Đến hiện nay, đối với phương pháp tách từ của tiếng Anh, tiếng Trung, tiếng
Nhật, tiếng Việt… đã có nhiều công trình nghiên cứu và cải tiến với hướng tiếp cận khác
nhau, đạt được kết quả khả quan. Đối với tiếng Lào đến hiện nay, Vẫn chưa có một
phương pháp tiếp cận nào có kết quả khả quan, một số phương pháp tách từ tiếng Lào
đã được nghiên cứu, có như sau:

15
- Tách từ tiếng Lào sử dụng trường xác suất có điều kiện CRF (Conditional
Random Field) [11];
- Tách từ dựa trên so khớp tối đa của âm tiết [4];
- Hỗn hợp tiếp cận tách từ sử dụng phương pháp so khớp tối đa cấp độ âm
tiết với sự công nhận của các đặt tên [10];
- Phân âm tiếng Lào cho tách dòng [23];
- Tách từ tiếng Lào dựa trên phương pháp so khớp tối đa với kho từ vựng
(gồm có từ đơn đã nhận từ máy suy diễn kết hợp với cơ sở luật, từ ghép
và cụm từ) và xử lý khứ bỏ nhập nhằng [1].

Do đó, tác giả đề xuất mô hình tách từ tiếng Lào dựa trên cơ sở Regular
Expression kết hợp với khuôn mẫu cấu trúc câu, cấu trúc từ đơn.

2.3.1. Đặc trưng tiếng Lào


Lào là một đất nước có ngôn ngữ và chữ viết riêng của mình có tên gọi là ngôn
ngữ Lào và chữ Lào. Đối với tiếng lào nó sinh ra và hình thành song song cùng với sự
xuất hiện của đất nước Lào là một trong những ngôn ngữ đã từng có từ lâu đời trong
Châu Á.
Ngữ pháp Lào được chỉnh sửa nhiều lần cho đến thời kỳ giải phóng đất nước và
xây dựng Cộng hòa Dân chủ Nhân dân Lào như hiện nay được sử dụng phương pháp
tiếng Lào theo ngữ pháp do Ông Phoumy Vongvichith là Bộ Giáo dục công nhận sử
dụng hiện nay, cũng có thể vì đã có nhiều lần chỉnh sửa phương pháp tiếng Lào mà làm
cho cách viết, cách nói tiếng Lào của người Lào khác nhau không có sự hòa hợp nhau
cho lắm nhất là những từ câu hình thành ra từ câu ngôn ngữ Bali Sansakit hay là các từ
câu hình thành từ câu ngoại ngữ, hay câu của Lào.

2.3.1.1. Tổng quan về đặc trưng của văn bản tiếng Lào
Cấu trúc một văn bản tiếng Lào thường gồm một Chủ đề, các mục (có chữ số ở
phía trước tuân theo với ký tự dấu chấm) và nội dung. Nội dung là tập hợp của nhiều
đoạn, một đoạn là tập hợp của nhiều câu, một câu là tập hợp của một cụm/nhóm từ, một
cụm từ là tập hợp của hai từ đơn trở lên ghép sát nhau (không có rảnh giới giữa các từ)
và một từ đơn gồm hai ký tự trở lên.
Đặc trưng của cách viết một đoạn và câu tiếng Lào không khác với hệ chuẩn của
tiếng Anh như khi kết thúc câu phải có các ký tự dấu chấm câu (dấu chấm, dấu hai chấm,

16
dấu phẩy, dấu than, ...), khi bắt đầu một đoạn phải có thụt lề hay ký tự đặc biệt (\t) và
khi kết thúc đoạn phải xuống bắt đầu dòng mới hoặc ký tự (\n).
Về đặc trưng của từ đơn trong tiếng Lào là một tập hợp các ký tự tiếng Lào (gồm
có phụ âm, nguyên âm và dấu thanh), một từ đơn ít nhất phải có 2 ký tự gồm 1 ký tự
phụ âm và 1 ký tự nguyên âm. Trong hệ viết từ tiếng Lào không có chữ hoa.
Trong hệ viết tiếng Lào, ký tự khoảng trống sử dụng để tách ra hai câu hoặc cụm
từ có đủ ý nghĩa của từng câu cho dễ dàng đọc và tránh biến nghĩa của câu. Khoảng
trống thường dùng để tách ra tên riêng (tên người, tên công ty, tên quốc gia, chữ viết tắt)
và chữ số (số ngày, số năm, số tiền, …) ra khỏi câu/cụm từ.

2.3.1.2. Cấu trúc từ tiếng Lào


Ngôn ngữ tiếng lào có ký tự viết và đọc tương tự với ngôn ngữ trong quốc gia
khác. Bảng chữ cái tiếng Lào gồm 3 nhóm: phụ âm, nguyên âm và dấu thanh.
Cách tạo một từ tiếng Lào phải dùng ít nhất 2 ký tự gồm ít nhất 1 phụ âm và 1
nguyên âm ghép lại với nhau, các ký tự đó phải nằm đúng vị trí theo ngữ pháp tạo từ
của tiếng Lào thì mới phát âm được và có nghĩa trong tiếng Lào.

2.3.1.3. Bảng chữ cái tiếng Lào


Chữ cái tiếng Lào mà sử dụng trong giao tiếp là có nguồn gốc từ tiếng Sanskrit
(Bắc Phạn) và chữ cái sử dụng trong phật giáo là có nguồn gốc từ tiếng Pali (Nam Phạn).
Bảng chữ cái tiếng Lào gồm 3 nhóm: phụ âm, nguyên âm và dấu thanh. Tiếng
Lào cũng có chữ số Lào nhưng ít sử dụng hiện nay.

Phụ âm
Có 33 phụ âm được chia ra 2 loại: phụ âm đơn (trung tâm) và phụ âm ghép.
Các 27 phụ âm đơn:
ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢຣລສຫອຮ
Các 6 phụ âm ghép:
ຫງ ຫຍ ຫນ(ໜ) ຫມ(ໝ) ຫລ(ຫຼ) ຫວ
Nguyên âm
Có 28 nguyên âm trong đó gồm nguyên âm dài, nguyên âm ngắn, nguyên âm đặc
biệt (không thể ghép với phụ âm cuối vần), có như sau:
- Nguyên âm dài: xະ xີ xຶ xຸ ເxະ ແxະ ໂxະ ເxາະ ເxິ ເxັຍ xົວະ ເxຶອ
- Nguyên âm ngắn: xາ xີ xື xູ ເx ແx ໂx xໍ ເxີ ເxຍ xົວ ເxືອ
- Nguyên âm đặc biệt: ໄx ໃx ເxົາ xໍາ

17
Trong các 24 nguyên âm (trừ nguyên âm đặc biệt) nó có thể ghép với phụ âm
cuối từ để trở thành nguyên âm với phụ cuối vần. Phụ âm cuối từ hoặc phụ âm cuối vần
là phụ âm đơn vừa làm phụ âm đầu vần vừa làm phụ âm cuối vần gồm có 8 phụ âm (ກ ງ
ຍ ດ ນ ບ ມ ວ) cần đặt sau các 24 nguyên âm và không thể xếp sau các nguyên âm đặc biệt.
Có một số nguyên âm sau khi ghép lại với phụ âm cuối vần sẽ thay đổi dạng. Sau đây là
bảng nguyên âm ghép với 8 phụ âm cuối vần:

Bảng 2.2 Nguyên âm ghép lại với phụ âm cuối vần

Nguyên Phụ âm cuối vần


âm
ກ ງ ຍ ດ ນ ບ ມ ວ

xະ xັກ xັງ xັຍ (ໄx) xັດ xັນ xັບ xັມ (xໍາ) xັວ (ເxົາ)

xາ xາກ xາງ xາຍ xາດ xານ xາບ xາມ xາວ

xິ xິກ xິງ - xິດ xິນ xິບ xິມ xິວ

xີ xີກ xີງ - xີດ xີນ xີບ xີມ xີວ

xຶ xຶກ xຶງ xຶຍ xຶດ xຶນ xຶບ xຶມ xຶວ

xື xືກ xືງ xືຍ xືດ xືນ xືບ xືມ xືວ

xຸ xຸກ xຸງ xຸຍ xຸດ xຸນ xຸບ xຸມ -

xູ xູກ xູງ xູຍ xູດ xູນ xູບ xູມ -

ເxະ ເxັກ ເxັງ - ເxັດ ເxັນ ເxັບ ເxັມ ເxັວ

ເx ເxກ ເxງ - ເxດ ເxນ ເxບ ເxມ ເxວ

ແxະ ແxັກ ແxັງ - ແxັດ ແxັນ ແxັບ ແxັມ ແxັວ

ແx ແxກ ແxງ - ແxດ ແxນ ແxບ ແxມ ແxວ

ໂxະ xົກ xົງ xົຍ xົດ xົນ xົບ xົມ -

ໂx ໂxກ ໂxງ ໂxຍ ໂxດ ໂxນ ໂxບ ໂxມ ໂxວ

ເxາະ xັອກ xັອງ xັອຍ xັອດ xັອນ xັອບ xັອມ -

xໍ xອກ xອງ xອຍ xອດ xອນ xອບ xອມ -

ເxິ ເxິກ ເxິງ ເxິຍ ເxິດ ເxິນ ເxິບ ເxິມ ເxິວ

ເxີ ເxີກ ເxີງ ເxີຍ ເxີດ ເxີນ ເxີບ ເxີມ ເxີວ

18
ເxັຍ xັຽກ xັຽງ - xັຽດ xັຽນ xັຽບ xັຽມ xັຽວ

ເxຍ xຽກ xຽງ xຽຍ xຽດ xຽນ xຽບ xຽມ xຽວ

xົວະ xັວກ xັວງ xັວຍ xັວດ xັວນ xັວບ xັວມ -

xົວ xົວກ xົວງ xົວຍ xົວດ xົວນ xົວບ xົວມ -

ເxຶອ ເxຶອກ ເxຶອງ ເxຶອຍ ເxຶອດ ເxຶອນ ເxຶອບ ເxຶອມ -

ເxືອ ເxືອກ ເxືອງ ເxືອຍ ເxືອດ ເxືອນ ເxືອບ ເxືອມ -

2.3.1.4. Dấu thanh


Dấu thanh trong tiếng Lào sử dụng để biến phát âm của nguyên âm cho nó thành
cao, thấp, ngắn, dài. Từ trong tiếng Lào nếu thay đổi dấu thanh của một từ thì nghĩa của
từ đó cũng thay đổi.
Tiếng Lào có 4 dấu thanh: x່, x້, x໋, x໊
Ví dụ: ປາ / pa, ປ່າ / pà, ປ້າ / pá, ປ໋າ / pạ, ປ໊າ / pã

2.3.1.5. Chữ số


Có 10 chữ số tương ứng với các số từ 0 đến 9. Cách viết số Lào tuân theo hệ
thống số chuẩn thông thường như: ໐ ໑ ໒ ໓ ໔ ໕ ໖ ໗ ໘ ໙
Ví dụ: 2017 = ໒໐໑໗, 1991 = ໑໙໙໑, -20.17 = -໒໐,໑໗

2.3.1.6. Ký tự đặc biệt


Có 3 ký tự: ໆ, ຯ và x໌
- Ký tự ໆ sử dụng để lặp lại từ ở phía trước. Ví dụ: ຫຼາຍໆ = ຫຼາຍຫຼາຍ (nhiều nhiều)
- Ký tự ຯ đặt vào phía trước và sau phụ âm ລ trở thành ຯລຯ màng nghĩa trong tiếng
Việt là “vân vân”.
- Ký tự x໌ đặt vào phía trên của một phụ âm mà phụ âm đó nằm ở cuối của một từ
khi viết từ của từ tiếng nước ngoài để làm cho từ đó phát âm theo dòng nói theo
tiếng đó. Ví dụ viết tiếng Anh sang tiếng Lào: Star = ສະຕາຣ໌

19
2.3.1.7. Hệ thống từ vựng tiếng lào
Tiếng Lào là ngôn ngữ đơn âm một từ có một âm tiết. Cách tạo từ cũng tương tự
với tiếng Thái và tiếng Việt, mỗi từ được tổ hợp từ các chữ cái phụ âm, nguyên âm và
dấu thanh.
Ví dụ:
- Từ có 1 phụ âm ປ và 1 nguyên âm xາ: ປາ / pa / cá
- Từ có 1 phụ âm ອ, 1 nguyên âm xາຍ và dấu thanh x້: ອ້າຍ / ái / anh trai
Từ vững tiếng Lào có hai loại là từ đơn (giản) và từ phức (hợp). Từ phức hợp
gồm từ ghép và từ láy).

Từ đơn

Một từ đơn có một âm tiết ít nhất phải có 2 ký tự gồm có một phụ âm và một
nguyên âm. Ví dụ phụ âm ດ ghép với nguyên âm xີ: ດີ / đi / tốt.

Âm tiết dài nhất của từ đơn có thể tạo được là 7 ký tự gồm phụ âm (ghép), nguyên
âm và dấu thanh. Ví dụ phụ âm ghép ຫງ ghép với nguyên âm ເxືອ ghép với phụ âm cuối
vần ນ và dấu thanh x່: ເຫງື່ອນ / ngườn / dỡ

Từ ghép

Từ ghép được tạo từ 2 từ đơn trở lên, mang một nghĩa đó xác định. Gồm có dạng
ghép: ghép hai từ đơn có nghĩa khác nhau, ghép nhiều từ đơn có nghĩa tương đương,
ghép hai từ đơn có nghĩa giống nhau, ghép nhiều từ đơn (cụm/nhóm), ghép các từ của
tiếng Pali và Sanskrit.
Ví dụ:
- Từ ghép hai từ đơn có nghĩa khác nhau (2 âm tiết):
ໄຟຟ້າ (điện) / fai fá / ໄຟ (lửa) + ຟ້າ (trời)
- Từ ghép (3 âm tiết):
ຄອມພິວເຕີ (máy vi tính) / ຄອມ + ພິວ + ເຕີ
- Từ ghép (4 âm tiết):
ວິທະຍາໄລ (trường cao đẳng) / ວິ + ທະ + ຍາ + ໄລ
- Từ ghép hai cụm từ (6 âm tiết):
ມະຫາວິທະຍາໄລ (trường đại học) / ມະຫາ (đại) + ວິທະຍາໄລ (trường cao đẳng)

20
Từ theo phát âm tiếng nước ngoài
Để viết từ cho đúng phát âm của tiếng nước ngoài đặc biệt là Tiếng Anh thường
có âm cuối mà trong tiếng Lào không có âm cuối, âm cuối này gồm hai ký tự (phụ âm
theo âm cuối của từ và ký tự đặc biết ີ). Ví dụ như: Stars (ສະຕາສ໌), Paster (ປາສ໌ເຕີຣ໌)…
Những từ này viết theo phát âm của từ tiếng đó, cách viết này chưa có chuẩn
thống nhất mà trong thực tế như trên bài báo hay tạp chí người ta thường viết theo cách
này.

2.3.1.8. Cấu trúc câu tiếng Lào


Tiếng Lào có hai loại câu: câu đơn và câu ghép

Câu đơn
Tương tự quan điểm ngữ pháp tiếng Việt, trong ngữ pháp tiếng Lào, câu đơn gồm
ba phần: chủ ngữ (danh từ hay đại từ), vị ngữ (động từ) và bổ ngữ.
Ví dụ câu đơn:
ຂ້ອຍກໍາລັງສຶກສາຢູ່ ມະຫາວິທະຍາໄລຊັບພະວິຊາ ທີ່ ນະຄອນ ດານັງ.
Tôi đang học ở Trường Đại Học Bách Khoa tại thành phố Đà Nẵng.

Câu ghép
Câu ghép được tạo ra với nhiều câu ghép lại với nhau để mở rộng ý nghĩa của
câu. Về câu trong câu ghép thường có cấu tạo giống câu đơn (là cụm chủ ngữ - vị ngữ).
Giữa các câu trong câu ghép có những quan hệ nhất định để nối với nhau. Tương tự với
tiếng Việt, có ba cách nối:
- Nối bằng từ ngữ có tác dụng nối ແລະ, ví dụ:
ມື້ວານນີ້ໄປຕະຫຼາດ, ຂ້ອຍໄດ້ຊື້ເສື້ອໃໝ່ ແລະ ນ້ອງຂ້ອຍຊື້ໝາກບານໜຶ່ງໜ່ວຍ.
Hôm qua đi chợ, tôi đã mua áo mới và em trai tôi đã mua một quả bóng đá.

- Nối trực tiếp, không dùng từ ngữ có tác dụng nối, giữa các vế câu phải dùng dấu
phẩy, dấu chấm phẩy hoặc dấu hai chấm, ví dụ:
ມີສາມຄົນຢູ່ໃນຫ້ອງ, ຄົນໜຶ່ງເບິ່ງໂທລະພາບ, ຄົນໜຶ່ງຫຼິ້ນໂທລະສັບ ແລະ ຄົນໜຶ່ງນັ່ງໄຫ້.
Có ba người trong phòng, một người xem ti vi, một người chơi điện thoại, một
người ngồi khóc lóc.

- Nối bằng quan hệ từ (Vì … nên …; Do … nên ...), ví dụ:

21
ເນື່ອງຈາກ ທ້ອງຟ້າແຈ່ມໃສ ດັ່ງນັ້ນ ພວກເຮົາຈຶ່ງໄປຫຼິ້ນທະເລ.
Vì trời đẹp nên chúng ta đi chơi biển.

2.3.2. Phương pháp tách từ tiếng Lào sử dụng Regular Expression
Với những đặc trưng và nguyên tắc trên, cho phép tác giả xây dựng được tập
khuôn mẫu biểu thức chính quy (Regular Expression) biểu diễn cho các cấu trúc câu,
cấu trúc từ đơn dựa trên đặc trưng hệ viết tiếng Lào phục vụ cho quá trình tách từ trong
văn bản tiếng Lào.
Áp dụng so khớp của Regular Expression kết hợp với khuôn mẫu đã xây dựng
tách ra câu và tách ra từ đơn trong câu theo hướng trái qua phải. Sau lấy được tất cả từ
đơn trong một văn bản tiếng Lào dưới dạng mảng vector từ đơn, sẽ ghép từng phân tử
duyệt trái qua phải của mảng tìm và so sánh với từ điển từ phức tiếng Lào cho lấy được
từ trong từ điển có âm tiết dài nhất, có mô hình như sau:

Văn bản
tiếng Lào Tách câu Khuôn mẫu câu

S = [s1, s2, ..., sn]

Tách cụm từ Khuôn mẫu cụm từ

C = [c1, c2, ..., cn]

Tách từ đơn Tập khuôn mẫu từ


đơn

T = [t1, t2, ..., tn]

Xử lý từ chứa phụ âm ghép

Ghép từ đơn Từ điển từ phức

V = [w1, w2, ..., wn]

Hình 2.2 Mô hình tách từ tiếng Lào


Quá trình này cho phép tách ra nhiều từ tiếng Lào có thể nhất mà không cần quan
tâm đến ngữ nghĩa của từ. Và sắp xếp lại vị trí của từ trong văn bản theo thứ tự ban đầu
dưới dạng một vector.
Ví dụ:
Đầu vào cụm từ c: c = ‘ຂ້ອຍກໍາລັງໄປໂຮງຮຽນ’

22
Tách được từ đơn: Vtừ đơn = [‘ຂ້ອຍ’, ‘ກໍາ’, ‘ລັງ’, ‘ໄປ’, ‘ໂຮງ’, ‘ຮຽນ’]
Ghép lại từ đơn dựa trên từ điển từ ghép: Vtừ = ['ຂ້ອຍ', 'ກໍາລັງ', 'ໄປ', 'ໂຮງຮຽນ']
Một vấn đề thường gặp trong quá trình phân loại văn bản, khi tách từ sẽ lấy được
nhiều từ thừa đó là những từ mà chứa phụ âm ghép (ຫນ, ຫມ và ຫລ tương đương với ໜ, ໝ
và ຫຼ lần lượt), đặc điểm của nó là có hai dạng viết mà cùng một nghĩa, đối với máy tính
nó hiểu là cặp từ đó là hai từ khác nhau thì nên xử lý những từ đó để giảm chiều dài của
vector từ đặc trưng khi phân loại văn bản.
Ví dụ: ຫລານ = ຫຼານ, ຫມາ = ໝາ, ຫນຶ່ງ = ໜຶ່ງ…
Theo mô hình (hình 2.2), tác giả sẽ cung cấp module tách từ tiếng Lào dựa trên
biểu thức chính quy (Regular Expression) trên ngôn ngữ Python 3 phục vụ cho phương
pháp phân loại văn bản Naive Bayes. Riêng module biểu thức chính quy không thể áp
dụng trực tiếp được và không đủ chức năng để tách ra từ trong văn bản tiếng Lào cho
chính xác và hiệu quả, nên phải xây dựng khuôn mẫu từ đơn đơn tiếng Lào, cải tiến chức
năng là kiểm tra từ mới tách được có nằm ở giửa từ tiếp theo hay không, sau đó ghép lại
những từ đơn đã tách được thành từ phức dựa trên phương pháp ghép và so sánh tìm
kiếm trong từ điển từ phức.

Ưu điểm của module tách từ đề xuất là:


- Tốc độ tách từ nhanh vì không quan tâm đến ngữ nghĩa của từ;
- Có thể tách được tất cả từ đơn theo tập khuôn mẫu từ đơn đã xây dựng và
tách được con số, ký tự đặc biệt như dấu chấm, dấu thăng, dấu ngoặc, …;
- Xử lý được những từ có hai cách viết nhưng nghĩa giống nhau, là những
từ chứa phụ âm ghép như ຫລ, ຫມ, ຫນ sửa thành ຫຼ, ໝ, ໜ lần lượt, để giảm
độ phức tạp và số lượng từ đặc trưng;
- Tách được từ trong văn bản thỏa mãn cho phương pháp phân loại văn bản
Naive Bayes.

Nhược điểm:
- Ghép từ đơn thành từ phức còn có hạn chế dựa trên số lượng của từ vững
trong từ điển từ phức;
- Nếu gặp từ viết sai chính tả đặc biệt là không viết theo thứ tự thì sẽ tách
ra thành ký tự.

2.3.2.1. Regular Expression


Trước đây việc xử lý chuỗi trong mọi ngôn ngữ lập trình rất là khó khăn bởi vì
hàm xử lý chuỗi không cung cấp nhiều lắm và những hàm đó không có một chuẩn chung
để kiểm tra định dạng của chuỗi. Sau khi nó ra đời việc xử lý chuỗi trở thành dể dàng

23
hơn. Regular Expression được sử dụng phổ biến trong thế giới UNIX và hiện nay nó
được hỗ trợ bởi hầu hết các ngôn ngữ lập trình như Perl, Java, Javascript, C#, C/C++,
PHP, Python, …
Regular Expression (hay còn gọi là biểu thức chính quy, RegEx, RegExp, ...) là
một chuỗi miêu tả một bộ các chuỗi khác theo những quy tắc cứ pháp nhất định, nó được
dùng để tìm kiếm, so sánh, cắt ghép, hoặc là xử lý chuỗi nâng cao thông qua biểu thức
riêng của nó, những biểu thức này sẽ có những nguyên tắc riêng và phải tuân theo nguyên
tắc đó thì biểu thức mới hoạt động được. Nguyên tắc hoạt động của biểu thức chính quy
(Regular Expression) là so khớp dựa vào khuôn mẫu (pattern), khuôn mẫu được xây
dựng từ các quy tắc căn bản của biểu thức chính quy.

Cứ pháp của Regular Expression


Về cơ bản, biểu thức chính quy (Regular Expression) chia ra 2 phần gồm:
- Literal character (ký tự thường) là một biểu thức chứa một hoặc nhiều ký tự từ a
đến z dùng để làm mẫu và so sánh với một chuỗi nào đó. Ví dụ nếu có RegEx
pattern là ‘eph’ và một chuỗi là ‘elephant’, nó sẽ tìm kiếm và so sánh trùng khớp
chữ eph trong chuỗi elephant.;
- Meta character (siêu ký tự) là những ký tự đặc biệt có ý nghĩa như một mệnh lệnh
nhất định.
Dưới đây là một số Meta character thường dùng:
Bảng 2.3 Một số cú pháp thường dùng của Regular Expression

Pattern Miêu tả

^ kết nối vần phần đầu của dòng

$ kết nối vần phần cuối của dòng

. kết nối bất kỳ ký tự nào ngoại trừ newline

[...] kết nối với một ký tự trong [] (dấu … thay thế cho những ký tự nào đó.
ví dụ [êc] sẽ trùng khớp một ký tự ê hoặc c)

[^...] Kết nối với bất kỳ ký tự đơn nào không ở trong []

re{n,m} Kết nối với ít nhất n và nhiều nhất m sự xuất hiện của biểu thức đặt
trước

(re) Nhóm các Regular Expression và ghi nhớ text đã kết nối

24
re* Kết nối với 0 hoặc nhiều sự xuất hiện của biểu thức đặt trước

re+ Kết nối với 1 hoặc nhiều sự xuất hiện của biểu thức đặt trước

re? Kết nối với 0 hoặc 1 sự xuất hiện của biểu thức đặt trước

\w Kết nối các ký tự từ

\s Kết nối với whitespace. Tương đương với [\t\n\r\f]

\d Kết nối với các chữ số. Tương đương với [0-9]

Các hàm thường dùng gồm có hàm so khớp re.match(), hàm tìm kiếm
re.search(), hàm tìm và thay thế re.sub(), hàm tìm và tách ra re.split()… Được mô tả
như sau:
Bảng 2.4 Một số chức năng của Regular Expression

Module Miêu tả

re.match(pattern, text) chỉ so khớp pattern với text ở vị trí ký tự thứ nhất của
text nếu thành công trả về đối tượng match và None nếu
thất bại

re.search(pattern, text) cố so khớp pattern với text bắt đầu từ đầu đến cuối

re.sub(pattern, repl, string) thay thế tất cả sự xuất hiện pattern trong string với repl

re.split(pattern, string) tách ra string thành một mảng với tất cả sự xuất hiện
pattern trong string

Ví dụ cho một chuỗi khuôn mẫu (pattern) là “ສະ.(າ|ະ)” và cụm từ (string) là
“ສະບາຍດີ” vào hàm re.match(pattern, string) hàm này sẽ so khớp pattern với string bắt đầu
từ ký tự thứ nhất của string và đưa ra kết quả thành công là ສະບາ.

2.3.2.2. Mô hình hóa câu tiếng Lào


Theo những đặc trưng của câu tiếng Lào đã trình bày trên cho phép tác giả mô
hình hóa được cấu trúc câu tiếng Lào.
Sau đây là một ví dụ câu trong tiếng Lào gồm 3 cụm từ (clause), từng cụm từ
được tách ra bằng khoảng trống và dấu phẩy, và câu kết thúc với dấu chấm và ký tự
newline (\n) hay khoảng trống.

25
Hình 2.3 Một số cấu trúc câu tiếng Lào
Trong đó:
- Clause1-3 là cụm từ;
- Space là khoảng chống;
- \n | space là xuống dòng hoặc khoảng chống.

Trong văn bản tiếng Lào (text) các câu được tách ra với một chuỗi khuôn mẫu
biểu thức chính quy (pattern) và lưu trữ kết quả trong một vector.
Chuỗi khuôn mẫu sử dụng để tách ra câu trong văn bản có như sau:
pattern=‘(?<!\s[ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢລຣວຫອຮໝໜ]\.)(?<!^[ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢລຣວຫອຮໝ
ໜ]\.)(?<!\s[ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢລຣວຫອຮໝໜ][ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢລຣວຫອຮໝໜ]\.)(?<!\s[A-
Z]\.)(?<!\s[a-z]\.)(?<!\s[A-Z][a-z]\.)(?<!\s[A-z][a-z][a-z]\.)(?<!\w\.\w.)(?<=[.!?;])\s+’
Trong đó:
- (?<=[.!?;])\s+ : có nghĩa là nếu thấy một trong những ký tự trong dấu ngoặc đi
theo với \s+ (là những ký tự đặc biệt như \n \r \t và khoản trống) thì tách ra câu ở
chỗ đó;
- (?<!...) : nếu gặp những pattern ở trong dấu ngoặc này sẽ không tách;
- [ກຂຄງຈສຊຍດຕຖທນບປຜຝພຟມຢລຣວຫອຮໝໜ]: so khớp một ký tự phụ âm

2.3.2.3. Mô hình hóa từ đơn tiếng Lào


Phân tích các đặc trưng trong hệ viết chữ Lào, sử dụng bảng chữ cái, các phụ âm
đơn và ghép, các nguyên âm đơn và ghép và các dấu thanh, đã cho phép tác giả xây
dựng một mô hình cấu trúc từ đơn của tiếng Lào như sau:
Bảng 2.5 Vector từ đơn tiếng Lào

Vector V từ đơn tiếng Lào

v1 v2 v3 v4 v5 v6 v7 v8 v9 v10

Có thể viết là: V = [v1, v2, v3, v4, v5, v6, v7, v8, v9, v10]
Trong mô hình cấu trúc từ đơn này, các ký tự được đánh số theo cách viết truyền
thống hay thứ tự gõ vào từ bản phím của chữ viết tiếng Lào, thứ tự được viết theo hướng
từ trái qua phải.

26
Vai trò chức năng của các thành phần của Vector từ V được trình bày trong bảng
2.7 như sau:
Bảng 2.6 Các thành phần của Vector từ

Thành phần Vai trò chức năng Chữ cái Lào tương ứng

v1 Nguyên âm đứng trước ເແໄໃໂ

v2 ຫ

v3 Phụ âm ກຂຄງຈສຊຍດຕຖທນບປ
(gồm phụ âm đơn, phụ âm ghép) ຜຝພຟມຢຣລສຫອຮໜໝ

v4 ຣ

v5 Nguyên âm ົ ັ ຶ ື ໍ ຸ ູ

v6 Dấu thanh ່ ້ ໊ ໋

v7 Nguyên âm đạt ở phía sau phụ âm ະາຽອຍ

v8 Phụ âm cuối vần ກງຍດນມບວ

v9 phụ âm viết theo phát âm của tiếng ກນທຣຈສຊພຟລ


nước ngoài thường đi cùng với ີ (v10)

v10 Dấu đặc biệt thường đặt ở cuối cùng ໆຯ໌

Từ đơn tiếng Lào được xem là một vector từ với những ký tự chữ cái Lào đúng
vị trí. Ví dụ:

27
Bảng 2.7 Ví dụ cách tạo từ đơn tiếng Lào

Vector V Từ đơn
Nghĩa Tiếng Việt
v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 tiếng Lào

ເ ຫ ງ ື ່ ອ ນ ໆ ເຫງື່ອນໆ dỡ

ຫ ລ າ ນ ຫລານ cháu

ເ ຫ ຼ ົ ້ າ ເຫຼົ້າ rượu

ເ ຫ ມ ັ ້ ນ ເຫມັ້ນ con nhím

ຝ ຣ ັ ່ ງ ຝຣັ່ງ nước Pháp

ຫ ຼ ຸ ດ ຫຼຸດ giảm

ໃ ຫ ຍ ່ ໃຫຍ່ to

ຮ າ ວ ສ ໌ ຮາວສ໌ house (nghôi nhà)

Dựa trên bảng 2.3 và bảng 2.10, cho phép xây dựng tập chuỗi khuôn mẫu biểu
thức chính quy của từ đơn (tập nguyên tác xây dựng một từ theo hệ viết từ tiếng Lào)
gồm tất cả 215 khuôn mẫu của từ đơn.
Ví dụ khuôn mẫu biểu thức chính quy của một từ đơn của nguyên âm xາ:

Chuỗi khuôn mẫu từ đơn này có thể so khớp được tất cả từ đơn chứa các ký tự
phụ âm đơn và ghép, nguyên âm xາ, dấu thanh và phụ âm đặt ở cuối (phụ âm viết theo
phát âm tiếng nước ngoài) lần lượt.
Với một chuỗi khuôn mẫu này so khớp được 3510 dạng viết từ đơn, ví dụ như:
ກາ, ກ້າ, ກວາ, ກວ້າ, ຕຣາ, ຕາຣ໌, …. Tải bản FULL (file word 67 trang): bit.ly/2Ywib4t
Dự phòng: fb.com/KhoTaiLieuAZ
2.3.2.4. Phương pháp tách từ tiếng Lào
Trong phương pháp tách từ có đầu vào là một cụm từ và đầu ra là một mảng từ tiếng
Lào, được chia thành hai bước chính:
- Tách từ đơn dựa trên phương pháp so khớp tối đa với tập khuôn mẫu biểu thức
chính quy của từ đơn.

28
- Ghép lại từ đơn thành từ phức dựa trên từ điển từ phức.
Phương pháp tách từ đơn gồm các hàm sau:
Hàm chính:
- words_split(c)
Hàm con:
- find_first_word(c);
- is_next_is_word(word, c);
- select_best_word(first_word_list).
Trong đó:
- c là cụm từ tiếng Lào;
- word là từ đơn tiếng Lào;
- first_word_list là mảng từ đơn tìm được nhiều nhất có thể từ hàm find_first_word.
Tải bản FULL (file word 67 trang): bit.ly/2Ywib4t
Dự phòng: fb.com/KhoTaiLieuAZ

Hình 2.4 Sơ đồ khối hàm word_split

29
Hàm word_split là một chức năng tách ra các từ đơn trong cụm từ tiếng Lào và
trả lại array từ đơn, gồm các bước như sau:
Bước 1: Cho đầu vào là một cụm từ hay là chuỗi không có khoảng trống
Bước 2: Khai bảo biến array words trống để giữ các từ đơn mà tách được, khai
bảo string word trống.
Bước 3: Kiểm tra đầu vào c là tiếng Lào hay không (tất cả các ký tự trong c có
số Unicode trong khoảng cách từ U+0E80 đến U+0EFF hay không), nếu
có thì qua Bước 4, ngược lại đầu ra là c dưới dạng từ thường
Bước 4: Kiểm tra chiều dài của chuỗi c nếu lớn hơn 0 thì qua Bước 5, ngược lại
qua Bước 9.
Bước 5: Khai bảo biến array first_word_list để giữ những từ đơn mà so khớp
được từ hàm find_first_word
Bước 6: Lựa chọn từ đơn tốt nhất có thể trong biến first_word_list bằng hàm
select_best_word và đặt vào biến word.
Bước 7: Xử lý từ đơn đã đạt được nếu thấy phụ âm ghép ຫລ, ຫນ, ຫມ thì thay thế
băng ຫຼ, ໜ, ໝ lần lượt và đặt lại vào biến word.
Bước 8: thêm giá trị word vào array words, súa bỏ từ đầu (trái qua phải) của
chuỗi c bằng từ word, quay lại Bước 4
Bước 9: Trả lại Vector từ đơn và kết thúc

9897bf32

30

You might also like