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

báo cáo đề tài phân loại thư, lọc thư rác áp dụng giải thuật naive bayes.

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 (485.98 KB, 14 trang )

1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
─────── * ──────







BÀI TẬP LỚN MÔN HỌC
XỬ LÝ NGÔN NGỮ TỰ NHIÊN
Đề tài: Phân loại thư, lọc thư rác áp dụng giải thuật Naive Bayes.
Giảng viên hướng dẫn:
PGS TS Lê Thanh Hương
Sinh viên thực hiện:
Đặng Văn Oai 20081948
Đào Văn Long 20081576
Đinh Văn Đức 20080723
Đào Quang Đức 20080720
Lã Hữu Thành 20082375
Lớp: Hệ thống thông tin K53

Hà Nội, tháng 5/2012
2

Mục Lục

I. Bài toán phân loại văn bản. 3


I.1. Tổng quan về phân loại văn bản. 3
I.2. Tiến trình phân loại văn bản. 3
I.2.1. Trích chọn các đặc trưng của văn bản. 4
I.2.2. Biểu diễn văn bản. 4
I.2.3. Các phương pháp phân loại văn bản. 5
II. Thư rác và bài toán lọc thư rác. 5
II.1. Thư rác. 5
II.2. Bài toán phân loại thư rác. 6
III. Phương pháp phân loại văn bản Naive Bayes. 7
III.1. Cơ sở lý thuyết. 7
III.2. Thuật toán phân loại Naive Bayes. 7
III.3. Áp dụng thuật toán Naïve Bayes vào phân loại thư điện tử. 8
III.4. Quá trình xây dựng một bộ lọc thư rác, sử dụng giải thuật Naïve Bayes. 9
IV. Cài đặt chương trình. 10
IV.1. Kiến trúc tổng quan 10
IV.2. Tạo lập bộ dữ liệu mẫu. 10
IV.3. Giao diện chương trình. 11
IV.4. Công cụ lập trình. 13
V. Kết luận, phân chia công việc trong nhóm. 13

3

I. Bài toán phân loại văn bản.
I.1. Tổng quan về phân loại văn bản.
Bài toán phân loại văn bản là một bài toán quan trọng trong xử lý ngôn ngữ
tự nhiên. Có rất nhiều bài toán phân loại trong xử lý ngôn ngữ tự nhiên như gán
nhãn từ loại, khử nhập nhằng nghĩa từ vựng , mỗi bài toán đều có những đối
tượng thao tác khác nhau và mục tiêu phân loại khác nhau. Cụ thể trong bài toán
phân loại văn bản thì đối tượng thao tác là tài liệu văn bản.
Có nhiều định nghĩa khác nhau về phân loại văn bản, nhưng đơn giản nhất

có thể hiểu phân loại văn bản là sự phân loại các tài liệu văn bản dựa trên một tập
hợp các văn bản đã được phân loại trước đó để gán cho văn bản cần phân loại
thuộc một lớp nào đó, công việc này sẽ được thực hiện tự động bởi một chương
trình máy tính. Ứng dụng đáng kể nhất của phân loại văn bản là trợ giúp cho việc
tìm kiếm và lọc thông tin, làm tăng tốc độ truy cập thông tin. Phân loại văn bản
cũng đóng vai trò quan trọng trong việc quản lý thông tin như việc sắp xếp, phân
loại thư điện tử, hoặc các file trong hệ thống.
Bài toán phân loại văn bản có thể được phát biểu như sau:
Cho một tập các lớp đã định nghĩa C = {c
1
, c
2
, …, c
n
}, và tập các văn bản đã
được phân lớp sắn D = {d
1
, d
2
, …, d
m
} , cho một văn bản mới vào, nhiệm vụ là
phải chỉ ra văn bản đó thuộc vào lớp nào trong số các lớp ban đầu.
Có rất nhiều hướng tiếp cận bài toán phân loại văn bản đã được nghiên cứu
như : dựa trên lý thuyết đồ thị, tiếp cận sử dụng lý thuyết tập thô, cách tiếp cận
thống kê…, và tất cả các phương pháp trên đều dựa vào các phương pháp học máy:
học có giám sát, học không giám sát, học tăng cường. Vấn đề phân loại văn bản
theo phương pháp thống kê dựa trên kiểu học có giám sát và bao gồm hai giai
đoạn: giai đoạn huấn luyện và giai đoạn phân lớp.
I.2. Tiến trình phân loại văn bản.

Ta có thể chia tiến trình phân loại văn bản thành các bước như sau:
i) Trích chọn các đặc trưng của văn bản.
ii) Biểu diễn văn bản.
iii) Học một bộ phân loại văn bản.
iv) Tiến hành phân loại văn bản.
4

Trong đó, lựa chọn đặc trưng của văn bản là quá trình phân tích văn bản thành
các từ hay cụm từ. Biểu diễn văn bản là cách thể hiện một văn bản dưới dạng một
vector mà không gian của nó là tập các đặc trưng đã lựa chọn. Căn cứ vào các đặc
trưng đã chọn, có thể học một bộ phân loại như Naïve Bayes hay k-NN.
I.2.1. Trích chọn các đặc trưng của văn bản.
Quá trình trích chọn đặc trưng văn bản sẽ giúp nâng cao hiệu quả phân loại,
có thể nói khâu này là tiền đề cần thiết cho việc học một bộ phân loại. Do đó hiệu
quả của các bộ phân loại văn bản phụ thuộc rất nhiều vào tập các đặc trưng mà
chúng ta sử dụng.
Trong bước trích chọn đặc trưng văn bản còn có khâu tiền xử lý văn bản, tùy
vào mục đích bộ phân loại mà chúng ta có những phương pháp tiền xử lý văn bản
khác nhau như:
- Chuyển toàn bộ văn bản về dạng chữ thường.
- Loại bỏ các ký tự đặc biệt, các chữ số, các phép toán.
- Loại bỏ các từ dừng, là các từ thường xuyên xuất hiện trong các văn bản.
- …
I.2.2. Biểu diễn văn bản.
Một trong những nhiệm vụ đầu tiên của việc xử lý văn bản là phải chọn
được một mô hình biểu diễn văn bản thích hợp. Một văn bản ở dạng chuỗi thông
thường cần được chuyển sang một mô hình khác để tạo thuận lợi cho việc biểu
diễn và tính toán. Tùy thuộc vào từng thuật toán phân loại khác nhau mà chúng ta
có những mô hình biểu diễn khác nhau. Một trong những mô hình đơn giản và
được sử dụng nhiều là mô hình không gian vector. Mỗi văn bản sẽ được biểu diễn

dưới dạng một vector n chiều.
Theo mô hình này, mỗi văn bản sẽ được biểu diễn trong một không gian
vector 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. Ta ký hiệu vector X = (x
1
, x
2
, …, x
n
) là vector đặc trưng cho văn
bản D, n là số chiều hay số lượng đặc trưng của vector văn bản, x
i
là trọng số của
đặc trưng thứ i.
5

Có nhiều cách khác nhau để tính trọng số cho vector đặc trưng, trong đó có
một cách đơn giản là tính trọng số tần số từ, là số lần xuất hiện của từ đó trong văn
bản đang xét.
I.2.3. Các phương pháp phân loại văn bản.
Dựa trên các đặc trưng của văn bản, đã có nhiều phương pháp phân loại văn
bản được dề xuất và áp dụng trong các tập tài liệu khác nhau. Một số phương pháp
phân loại văn bản cho kết quả tốt và thường được sử dụng như:
 Mô hình xác suất Naïve Bayes.
 Nguyên mẫu.
 Phương pháp SVM.
 Phương pháp cây quyết định.
 Phương pháp mạng neuron.
Trong các phương pháp trên thì kỹ thuật phân hoạch của Naïve Bayes là khá
đơn giản nhưng đem lại hiệu quả phân loại cũng khá cao.Kỹ thuật này phù hợp với

các trường hợp phân loại có kích thước đầu vào lớn. Thuật toán Naïve Bayes sẽ
tính cho mỗi lớp văn bản một xác suất mà tài liệu cần phân hoạch có thể thuộc loại
đó. Tài liệu đó sẽ được gán cho lớp văn bản nào có xác suất cao nhất.
II. Thư rác và bài toán lọc thư rác.
II.1. Thư rác.
Thư rác hay còn gọi là Spam mail là những thư điện tử không cần thiết đối
với người sử dụng cụ thể nào đó, những thư này thường được gửi tới nhiều người
và thường mang nội dung quảng cáo, chất lượng thấp, đôi khi còn mang những
thông tin lừa đảo.Các thư rác có thể vô hại đối với người sử dụng nhưng sẽ gây
cảm giác khó chịu khi những thư này lẫn với những thư cần thiết, và người dùng
phải mất thời gian để xóa, đôi khi có thể xóa nhầm những thư cần thiết.
Ngày nay có rất nhiều công nghệ lọc thư rác. Nó dựa trên các đặc trưng cơ
bản của thư điện tử như: tiêu đề thư, địa chỉ người gửi, hay các cụm từ thường xuất
hiện trong các thư rác. Hoặc cũng có thể so sánh các thư điện tử mẫu với các thư
điện tử nhân được sau đó tìm ra những thư rác. Và một công nghệ nữa là sử dụng
công nghệ học máy để phân loại thư điện tử.
6

Bên cạnh virus, spyware, thì thư rác cũng là một điều rất khó chịu với người
sử dụng máy tính, spam mail đã trở thành một hình thức quảng cáo chuyên nghiệp
phát tán virus, ăn cắp thông tin, Do đó việc lọc thư rác trước khi đến với người
dùng là rất cần thiết.
II.2. Bài toán phân loại thư rác.
Yêu cầu của bài toán là ngăn chặn thư rác bằng cách phân loại một email gửi
đến là spam hay non-spam (Ham mail), hiệu quả phân loại phải khả quan, và giảm
thiểu lỗi sai phân loại Ham mail thành Spam mail.
Phân loại thư rác chính là bài toán phân loại văn bản hai lớp, hai lớp văn bản
là Ham(thư hợp lệ) và Spam (thư rác). Tập tài liệu mẫu ban đầu là các thư đã được
phân thành thư rác và thư hợp lệ, văn bản cần phân lớp là các email nhận được. Ta
có thể dựa vào một số đặc điểm hoặc thuộc tính nào đó của email để tăng hiệu quả

phân loại. Các đặc điểm của một email như: tiêu đề, địa chỉ gửi, nội dung thư, thư
có tệp đính kèm hay không…Khi càng tận dụng được các thông tin như vậy thì khả
năng phân loại càng chính xác, và kết quả phân loại cũng phụ thuộc rất nhiều vào
kích thước của tập mẫu huấn luyện.
Mô hình phân loại thư rác có thể biểu diễn như hình dưới đây:


Vì bài toán phân loại thư rác cũng là bài toán phân loại văn bản, do đó các
thuật toán áp dụng để phân loại văn bản đều có thể áp dụng để phân loại thư điện
7

tử, hiện nay có nhiều phương pháp đã được kiểm chứng là cho kết quả cao như:
SVM, k-NN. Phương pháp Naïve Bayes cho hiệu quả tuy nhỏ hơn nhưng giải thuật
khá đơn giản, được áp dụng khá phổ biến, và được cải tiến thành máy lọc thư rác
Naïve Bayes. Do đó nhóm chúng em đã chọn mô hình xác suất Naïve Bayes để cài
đặt giải thuật phân loại thư rác trong bài tập lớn môn học.

III. Phương pháp phân loại văn bản Naive Bayes.
III.1. Cơ sở lý thuyết.
Cơ sở lý thuyết của phương pháp là định lý Bayes về xác suất có điều kiện:

Hay


III.2. Thuật toán phân loại Naive Bayes.
Phương pháp phân loại Naive Bayes coi các từ xuất hiện trong một văn bản
là độc lập thống kê. Giả thuyết Bayes gán cho mỗi tài liệu văn bản một giá trị xác
suất, P(c
i
| d) là xác suất mà tài liệu d thuộc vào lớp văn bản c

i
, và

được tính bởi
công thức sau:
)(
)|(*)(
)|(
dP
cdPcP
dcP
ii
i


Tài liệu d sẽ được gán cho lớp văn bản nào có xác suất hậu nghiệm cao nhất:
Lớp c* là lớp của văn bản d:
8

 
)(
)|(*)(
max
)|(
max
1
arg
1
arg *C
dP

cdPcP
dcP
i
i
ni
i
ni





Trong đó n là số lớp văn bản.
Theo giả thiết của Naïve Bayes thì xác suất của mỗi từ trong tài liệu di là
độc lập với ngữ cảnh xuất hiện của các từ đồng thời cũng độc lập với vị trí của các
từ trong tài liệu, xác suất P(d|c
i
) được tính từ tần suất xuất hiện của từng từ đơn w
j
(word thứ j) trong tài liệu d.
P(d |c
i
) = P(w
1
|c
i
)*P(w
2
|c
i

)*… *P(w
n
|c
i
)
Hay:
)|P(w )c|P(d
mj1
ji i
C




Trong đó P(w
j
|c
i
) là xác suất xuất hiện của từ w
j
trong lớp văn bản c
i
, m là tổng số
từ trong tài liệu d.
Do đó : )|P(w
)(
)(
)|(
mj1
j i

i
i
c
dP
cP
dcP




III.3. Áp dụng thuật toán Naïve Bayes vào phân loại thư điện tử.
Thuật toán bắt đầu bằng việc học nội dung của các thư điện tử hợp lệ và nội
dung của những thư rác. Khi nhận được một thư mới, dựa vào thông tin có sẵn từ
tập mẫu, quá trình xử lý sẽ được áp dụng trên nội dung của các thư điện tử.
Giả sử:
 Nội dung của thư gửi đến là content.
 Lớp thư rác ký hiệu là spam.
 Lớp thư hợp lệ kí hiệu là ham.
 Ta cần tính P(spam | content), là xác xuất thư điện tử là thư rác.
 w
1
, w
2
, …, w
n
là các từ đặc trưng xuất hiện trong nội dung của thư.
Khi đó xác suất email này là thư rác được tính như sau:
9

)(*)|()(*)|(

)|(*)(
)|(
hamPhamcontentPspamPspamcontentP
spamcontentPspamP
contentspamP



Trong đó :
 P(spam) = (tổng số thư rác)/(tổng số thư)
 P(ham) = (tổng số thư hợp lệ)/(tổng số thư)
 P(content | spam) = P(w
1
| spam)*P(w
2
| spam)*…*P(w
n
| spam)
 P(content | ham) = P(w
1
| ham)*P(w
2
| ham)*…*P(w
n
| ham)

Sau khi tính được P(spam | content), nếu xác suất này lớn hơn giá trị ngưỡng t
nào đó thì email này là thư rác.
III.4. Quá trình xây dựng một bộ lọc thư rác, sử dụng giải thuật Naïve Bayes.
i) Tạo cơ sở dữ liệu cho các thư hợp lệ: Ta sẽ dùng một file để lưu trữ danh

sách các thư hợp lệ của người dùng, file dữ liệu này là khác nhau đối với
những người sử dụng khác nhau.
ii) Tạo cơ sở dữ liệu cho các thư rác: Ta sẽ dùng một file để lưu trữ danh
sách các thư mà người dùng đánh dấu là thư rác, file dữ liệu này là khác
nhau đối với những người sử dụng khác nhau. File này phải bao gồm một
mẫu lớn để hểu về thư rác và thường xuyên được cập nhật những thư rác
mới nhất. Điều này giúp cho bộ lọc Bayes có khả năng nhận biết được
các thủ thuật của những thư rác gần đây nhất và cho kết quả tìm kiếm thư
rác lớn nhất.
iii) Tạo file lưu trữ danh sách các từ và kèm với nó là số lần xuất hiện trong
tập thư rác và thư hợp lệ.
Khi một thư mới được chuyển đến, nội dung của nó sẽ được phân tách thành
các từ, căn cứ vào các từ này, bộ lọc Bayes sẽ tính toán xác xuất nó là thư rác, nếu
xác suất đó lớn hơn một ngưỡng t nào đó đặt ra thì thư này sẽ được gán là thư rác,
ngược lại thì là thư hợp lệ. Như ta đã biết, khi phân loại một email, có thể sẽ xảy ra
hai lỗi: phân loại nhầm thư rác thành thư hợp lệ và phân loại nhầm thư hợp lệ
thành thư rác, trong đó lỗi thứ hai là nghiêm trọng hơn nên ta cần phải xác định
một ngưỡng t để phân loại.
t = n/(n + 1) với n = 1,2,…100,…
10


IV. Cài đặt chương trình.
IV.1. Kiến trúc tổng quan.
Chức năng lọc thư rác của chương trình được mô tả như sau:


Các email được lấy về từ server sẽ thông qua bộ lọc Bayes, và được phân
loại thành spam mail và ham mail, nếu là spam mail thì sẽ không hiển thị cho
người dùng.

IV.2. Tạo lập bộ dữ liệu mẫu.
Việc tạo lập bộ dữ liệu mẫu là rất quan trọng, là cơ sở để bộ lọc Bayes hoạt
động, người dùng sẽ phải cung cấp những thư điện tử mà họ cho là thư rác, những
thư này sẽ được lưu trong file SpamMail.txt, còn lại những thư hợp lệ sẽ được lưu
trong file HamMail.txt. Căn cứ vào bộ dữ liệu mẫu để xây dựng một tập các đặc
trưng bao gồm các từ và số lần xuất hiện từ đó trong tập thư rác và thư hợp lệ.Từ
đó làm cơ sở để phân loại các thư về sau. Mỗi lần phân loại thì tập các đặc trưng
lại được cập nhật, đây là khả năng tự học của bộ lọc Bayes.
11

IV.3. Giao diện chương trình.
 Giao diện đầu tiên: Tại đây người dùng có thể chọn các chức năng gửi và
nhận email.


 Giao diện gửi mail: tại đây người dùng có thể thay đổi thông tin Outgoing
Mail Server, có thể nhập địa chỉ email người gửi, mật khẩu, địa chỉ người
nhận và gửi email đi.
12



 Giao diện chính, nhận thư: Tại đây người dùng sẽ nhập thông tin địa chỉ
email và mật khẩu của mình, sau đó kết nối đến server và nhận thư về, trong
danh sách những thư được hiển thị người dùng có thể chọn một thư nào đó
và thông báo đó là thư rác. Để xem chi tiết nội dung của thư, người dùng sẽ
click chuột vào thư đó trên danh sách thư đến.

13




IV.4. Công cụ lập trình.
- Ngôn ngữ lập trình Java.
- IDE : Netbeans 7.0.1.
- Thư viện sử dụng: Java Mail, giúp lập trình gửi và nhận email.
V. Kết luận, phân chia công việc trong nhóm.
 Những kết quả đạt được:
o Cài đặt được chương trình gửi và nhận thư điện tử.
o Thực hiện được chức năng lọc thư rác tự động.

 Những hạn chế:
o Chương trình chỉ xử lý được những email có nội dung định dạng text
thông thường, không xử lý được những email có file đính kèm.
14

o Việc lọc thư rác mới chỉ dựa trên nội dung của thư, chưa kết hợp được
lọc thư qua địa chỉ người gửi và tiêu đề thư.
 Phân chia công việc trong nhóm:
o Tìm hiểu bài toán, tìm hiểu giải thuật Naïve Bayes: Đào Văn Long,
Đinh Văn Đức, Đào Quang Đức, Lã Hữu Thành.
o Cài đặt chương trình: Đặng Văn Oai.

×