Tải bản đầy đủ (.pdf) (18 trang)

Tiểu luận môn Máy học và ứng dụng THUẬT TOÁN NAÏVE BAYES ỨNG DỤNG BỎ DẤU TIẾNG VIỆT TỰ ĐỘNG CHO VĂN BẢN KHÔNG DẤU

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (788.45 KB, 18 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
o0o


Báo cáo chuyên đề
MÁY HỌC VÀ ỨNG DỤNG




THUẬT TOÁN NAÏVE BAYES
ỨNG DỤNG BỎ DẤU TIẾNG VIỆT
TỰ ĐỘNG CHO
VĂN BẢN KHÔNG DẤU

GV hướng dẫn: PG.TS VŨ THANH NGUYÊN

Học viên thực hiện
Hồ Mạnh Khương – CH1301018
Lớp CH08
Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 2 -
Mục lục

Lời cảm ơn 3
Mở đầu 4
I. Giới thiệu bài toán bỏ dấu tự động cho đoạn văn bản không dấu: 5
1.1 Sơ lược bài toán: 5
1.2 Hướng giải quyết: 5


II. Các chương trình đã có: 5
1. AMPad
[1]
5
2. VietPad.Net
[2]
: 6
III. Phân tích các phương pháp giải quyết bài toán: 7
1. Phương pháp LRMM: 7
2. Thuật toán Naïve Bayes và mô hình đề xuất: 9
2.1 Sơ lược về thuật toán Bayes: 9
2.3 Tiền xử lý: 10
2.4 Tách câu: 10
2.5 Tìm các khả năng đánh dấu của từ: 11
2.6 Tính trọng số để tìm câu thích hợp: 12
2.5 Phương pháp huấn luyện: 13
IV. Chương trình demo: 14
1. Chương trình huấn luyện: 14
2. Chương trình ứng dụng bỏ dấu tự động: 14
3. Hướng cải tiến: 17
V. Tài liệu tham khảo: 18
Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 3 -
Lời cảm ơn

Máy học được ứng dụng rộng rãi trong nhiều lĩnh vực cuộc sống. Nó giúp giải quyết
nhiều bài toán mà đòi hỏi con người hàng trăm hoặc ngàn năm mới giải quyết được. Kiến
thức về máy học là kiến thức thiết yếu và quan trọng trong con đường học tập và nghiên
cứu.


Em xin chân thành cám ơn Thầy, PGS.TS Vũ Thanh Nguyên đã định hướng, giúp
đỡ và hướng dẫn em hoàn thành môn chuyên đề này, mở đầu cho con đường nghiên cứu
chuyên sâu về máy học cũng như khoa học máy tính sau này.

Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 4 -
Mở đầu

Việc xử lý văn bản không dấu tự động đã là bài toán đặt ra từ khi người Việt Nam
bắt đầu sử dụng Internet. Bắt nguồn từ việc những hệ thống email ban đầu không hỗ trợ tốt
tiếng Việt Unicode, cho đến những thông tin trao đổi qua chat do người Việt không sử
dụng được các bộ gõ tiếng Việt trong thời gian làm quen với máy tính.

Qua một thời gian dài gần 10 năm, tình hình trên có khả quan hơn. Tuy nhiên sự
bùng nổ thiết bị di động ngày nay lại một lần nữa đưa người Việt Nam trở về với bài toán
của thập kỉ trước: bài toán bỏ dấu tự động cho các tin nhắn không dấu.
Mặc dù hiện nay, các thiết bị di động hầu hết hỗ trợ bộ gõ tiếng Việt mặc định,
nhưng giới trẻ vẫn sử dụng tiếng Việt không dấu như một cách tiết kiệm thời gian và công
sức, qua đó gây ra những lỗi không đáng có. Chính vì vậy, xây dựng một bộ bỏ dấu tiếng
Việt tự động với tỉ lệ chính xác cao nhằm hỗ trợ cho việc này là một nhu cầu thiết yếu
nhưng ít người còn quan tâm.

Qua nội dung của bài báo cáo này, em xin giới thiệu một số phương pháp đã được
sử dụng và giới thiệu việc ứng dụng phương pháp máy học – cụ thể là thuật toán Naïve
Bayes – vào việc xử lý bài toán trên.
Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 5 -

I. Giới thiệu bài toán bỏ dấu tự động cho đoạn văn bản không dấu:
1.1 Sơ lược bài toán:
Bài toán được phát biểu đơn giản như sau:
- Cho một đoạn văn bản tiếng Việt không dấu, chuyển văn bản này thành có dấu
với độ chính xác càng cao càng tốt.
- Áp dụng thêm các mô hình hỗ trợ ra quyết định bỏ dấu trong trường hợp nhập
nhằng.
- Chỉ xử lý các văn bản Unicode.
1.2 Hướng giải quyết:
Trong nội dung của bài báo cáo sẽ cài đặt và sử dụng mô hình dựa trên công thức
xác suất Bayes làm cơ sở nghiên cứu, được cài đặt dựa trên việc tách cụm 2 từ và 3 từ để
so sánh và đối chiếu.
Sau đây ta sẽ xem qua một số chương trình hiện có và nghiên cứu sơ bộ về cách
hoạt động của chúng.
II. Các chương trình đã có:
1. AMPad
[1]

AMPad (phiên bản cũ là AutoMark) là sản phẩm đầu tiên tiên phong trong lĩnh vực
bỏ dấu văn bản không dấu.


Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 6 -
Chương trình AMPad

Không chỉ đơn thuần hỗ trợ bỏ dấu cho văn bản không dấu, chương trình còn hỗ trợ
bỏ dấu tự động trực tiếp trong khi gõ (bỏ dấu online).
Tuy nhiên, chương trình đã rất lâu không có phiên bản cập nhật.


2. VietPad.Net
[2]
:
Là chương trình hỗ trợ soạn thảo văn bản đơn giản thay thế Notepad với khả năng
hỗ trợ Unicode tốt, VietPad còn hỗ trợ thêm bộ gõ đơn giản và chức năng bỏ dấu tiếng Việt
cho đoạn văn bản không dấu.
VietPad.Net được xây dựng trên nền tảng .Net 2.0 và có cả phiên bản Java hỗ trợ
chạy tốt trên các hệ điều hành khác như Linux và MacOSX.


VietPad phiên bản .NET

VietPad là phần mềm mã nguồn mở, được cung cấp miễn phí tại

Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 7 -
Mô hình bỏ dấu tự động VietPad sử dụng là LRMM, gần giống như AMPad nhưng
dữ liệu được tăng lên và độ chính xác được nâng lên rõ rệt.

Ngữ liệu bỏ dấu tự động của VietPad.NET

III. Phân tích các phương pháp giải quyết bài toán:
1. Phương pháp LRMM:
Mô hình LRMM được sử dụng chủ yếu trong hầu hết các phần mềm bỏ dấu tự động
và cho kết quả khá cao, đồng thời cách triển khai của phương pháp này khá đơn giản, ngữ
liệu tạo ra nhỏ và dễ sử dụng.
[3]


Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 8 -

Mô hình bỏ dấu của VietPad
Vd: với câu “Nhung van de ve giai quyet nguon nuoc sach cho nguoi dan tren
dia ban thanh pho se duoc chu trong trong nam toi” sẽ được VietPad tách thành
Nhung van / de ve / giai quyet / nguon nuoc / sach / cho / nguoi dan / tren dia ban /
thanh pho / se duoc / chu trong / trong / nam toi.
Sau bước so khớp, sẽ điền được câu kết quả: Nhưng vẫn để về giải quyết nguồn
nước sách cho người dân trên địa bàn thành phố sẽ được chú trọng trong năm tới.
Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 9 -
Như vậy, độ chính xác của phương pháp này phụ thuộc nhiều vào phương pháp tách từ.
Tuy nhiên, việc tách từ, nhất là tách từ cho tiếng Việt đến nay vẫn chưa có cách giải quyết
triệt để.
2. Thuật toán Naïve Bayes và mô hình đề xuất:
2.1 Sơ lược về thuật toán Bayes:
Naïve Bayes (NB) là phương pháp phân loại dựa vào xác suất được sử dụng rộng
rãi trong lĩnh vực máy học, được sử dụng lần đầu tiên trong lĩnh vực phân loại bởi Maron
vào năm 1961, sau đó trở nên phổ biến dùng trong nhiều lĩnh vực như trong các công cụ
tìm kiếm, bộ lọc email…
[5]

Thuật toán Naïve Bayes dựa trên định lý Bayes được phát biểu như sau:














Theo định lý Bayes
[4]
:















Theo tính chất độc lập điều kiện:





















Trong đó:
 

 là xác suất thuộc phân lớp i khi biết trước mẫu X.
 

 xác suất là phân lớp i.
 



 xác suất thuộc tính thứ k mang giá trị x

k
khi đã biết X thuộc phân lớp i.
Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 10 -
2.2 Mô hình đề xuất:

Mô hình đề xuất gồm các bước thực hiện: tiền xử lý, tách câu, xác định khả năng bỏ dấu
của cụm từ (cụm 2 hay 3 từ), tính trọng số và lựa chọn câu kết quả.
2.3 Tiền xử lý:
Là giai đoạn xóa các khoảng trắng thừa, lặp, xóa các kí tự không xử lý…
2.4 Tách câu:
Đoạn văn bản được tách thành từng câu và xử lý bỏ dấu trên từng câu này để đảm
bảo tốc độ cho chương trình, vì các đơn vị từ và ngữ giữa các câu là không liên quan đến
nhau trong phương pháp bỏ dấu tự động bằng thống kê.


Văn bản không dấu
Tiền xử lý
Tách câu
Xác định khả năng bỏ dấu
firstmark.txt
Tính trọng số cho các vector từ
(cụm 2 hoặc 3 từ)
Lựa chọn câu có trọng số thích hợp
vector.txt
Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 11 -
Câu không đơn thuần chỉ được xác định bằng các dấu hết câu (như chấm, chấm

than, chấm hỏi, xuống dòng…) mà còn được xác định bằng các kí tự ngắt như phẩy, ngoặc
đơn, dấu nháy…
Vd: ta có câu: Hom nay, troi mua rat to.
Thì đưa vào bộ tách câu, ta sẽ được 2 câu là “hom nay” và “troi mua rat to” và xử lý bỏ
dấu trên 2 câu này.
2.5 Tìm các khả năng đánh dấu của từ:
Tập tin firstmark.txt chứa các khả năng bỏ dấu của 1 từ, qua đó ta sẽ thiết lập được
các cách bỏ dấu có thể có của 1 câu.
VD: ta đưa vào câu: Troi mua rat to.
Tập tin firstmark.txt có các thông tin:
troi|trời
mua|mua,mưa
rat|rát,rất
to|to,tô
Ta sẽ có các cách bỏ dấu:
troi
mua
rat
to
trời
mua
rát
to

mưa
rất

Và có được các khả năng bỏ dấu câu:
- trời mua rát to
- trời mua rát tô

- trời mua rất to
- trời mua rất tô
- trời mưa rát to
- trời mưa rất to
….
Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 12 -
2.6 Tính trọng số để tìm câu thích hợp:
Các câu được tạo sẽ được tra theo từ để tính trọng số vector và chọn ra câu thích hợp nhất.
VD với ví dụ ở trên, ta có một số câu ứng viên:
- trời mua rát to
- trời mua rát tô
- trời mua rất to
- trời mua rất tô
- trời mưa rát to
- trời mưa rất to
Tập tin trọng số dict.txt được bố trí như sau:
trời mưa|0.381067832267509
mưa rất|0.600380292102955
rất to|0.406428366841093
mưa bão|0.449865294270964
thiên tai|0.38932132107303
tai đứt|0.600380292102955
đứt cáp|0.515870488101529
cáp quang|0.485767488535131
Tra theo bảng trọng số, ta có trọng số của câu:
- trời mưa rất to: 0.381067832267509 + 0.600380292102955 + 0 + 0
- trời mưa rát to: 0.381067832267509 + 0 + 0 + 0



Như vậy, câu “trời mưa rất to” có trọng số nhỏ nhất, ta chọn câu này để xuất ra. (mỗi từ
đôi – cụm 2 từ – không có, ta tính là w=0).
Tương tự trên cho cách tính theo cụm 3 từ.

Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 13 -
2.5 Phương pháp huấn luyện:
Dữ liệu được thống kê từ hơn 20.000 file là các bài báo được lấy ngẫu nhiên từ Internet,
được rút trích và tổng hợp thành 2 tập tin:
- Tập tin firstmark: ghi nhận các khả năng bỏ dấu của từng từ.
- Tập tin vector.txt: ghi nhận đặc trưng của vector và trọng số của vector đó
VD: ta có đoạn văn bản “Trợ lý Bộ trưởng Ngoại giao – ông A đã đến thăm và làm
việc với…” thì sau khi tách câu, ta được câu đầu tiên là:
“Trợ lý Bộ trưởng Ngoại giao”
Tập tin firstmark sẽ nhận thêm các giá trị:
tro|trợ
ly|lý
bo|bộ
truong|trưởng
ngoai|ngoại
giao|giao
Tập tin vector (cụ thể là vector với đặc trưng là từng cặp 2 từ) sẽ nhận các giá trị:
trợ lý|[trọng số]
lý bộ|[trọng số]
bộ trưởng|[trọng số]
trưởng ngoại|[trọng số]
ngoại giao|[trọng số]
Trọng số được tính theo công thức Bayes:















Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 14 -
IV. Chương trình demo:
1. Chương trình huấn luyện:
Chương trình nhằm mục đích học từ dữ liệu thô và tạo ra 2 tập tin firstmark.txt và
vector.txt

Thời gian thống kê cho cụm 2 từ là khoảng 5 phút và cụm 3 từ là khoảng 20 phút.

Tập tin tạo ra sau khi thống kê
Với bộ ngữ liệu 27,557 tập tin, ta thống kê được:
Phương pháp
Dung lượng
Số vector
Cụm 2 từ

30MB
1008796
Cụm 3 từ
122MB
3435942

2. Chương trình ứng dụng bỏ dấu tự động:
Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 15 -

Giao diện chương trình bỏ dấu tự động
Chương trình hỗ trợ bỏ dấu tự động theo 2 phương thức chi cụm 2 từ và 3 từ tích hợp.
Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 16 -
3. So sánh và đánh giá:

Thực hiện so sánh và thử bỏ dấu trên 10 văn bản được chọn ngẫu nhiên, ta thu được kết
quả như sau:
(độ chính xác dựa theo số từ đúng/tổng số từ trong văn bản, tính bằng %)

AMPad
VietPad.NET
mAuto
(cụm 2 từ)
mAuto
(cụm 3 từ)
Văn bản 1
74.78

70.35
82.74
98.23
Văn bản 2
90.36
88.21
88.21
99.29
Văn bản 3
88.53
84.71
89.80
99.78
Văn bản 4
85.76
83.50
86.73
99.03
Văn bản 5
87.20
87.25
92.46
98.92
Văn bản 6
84.42
82.76
93.10
96.55
Văn bản 7
79.68

78.46
86.87
97.72
Văn bản 8
89.44
88.80
91.83
98.71
Văn bản 9
80.97
79.85
88.43
96.27
Văn bản 10
85.76
82.04
87.62
98.14
Như bảng so sánh, ta thấy sử dụng thuật toán Naïve Bayes cho kết quả cao hơn hẳn so với
mô hình LRMM.
Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 17 -
3. Hướng cải tiến:
Mặc dù đã đạt được độ chính xác cao và tốc độ chạy không thua kém gì so với phương
pháp LRMM, sử dụng thuật toán Naïve Bayes vẫn còn gặp những vấn đề cần khắc phục:
- Sử dụng tài nguyên quá lớn (60MB Ram khi load các vector cho cụm 2 từ và 400MB
khi sử dụng cụm 3 từ) làm chiếm dụng tài nguyên máy.
- Thời gian chạy lâu nếu gặp từ/cụm từ có quá nhiều khả năng bỏ dấu.
- Phương pháp huấn luyện là không giám sát nên còn nhiều sai sót và không thực sự

chính xác cao.
Trong tương lai, có thể tích hợp thêm một bộ kiểm tra chính tả cơ bản sau khi đã thực hiện
bỏ dấu tự động. Như vậy có thể tăng thêm độ chính xác cho mô mình bỏ dấu tự động này.
Thuật toán Naïve Bayes - Ứng dụng bỏ dấu tiếng Việt tự động cho văn bản không dấu

- 18 -
V. Tài liệu tham khảo:

[1] Trần Khiết Tâm - Phần mềm AMPad
[2] VietPad.NET -
[3] Christopher D.Manning, Hinrich Schutze, Foundations Of Statistical Natural
Language Processing
[4] PGT. TS. Vũ Thanh Nguyên, Bài giảng máy học và ứng dụng, trường Đại học Công
Nghệ Thông Tin, ĐHQG.HCM
[5] Andrew McCallum, Kamal Nigam, A Comparison of Event Models for Naive Bayes
Text Classication

×