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 l
Trang 1TRƯỜ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
Trang 2Mục Lục
I Bài tố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 tốn lọc thư rác 5
II.1 Thư rác 5
II.2 Bài tố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 tốn phân loại Naive Bayes 7
III.3 Áp dụng thuật tốn Nạ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 Nạ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
Trang 3I 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 = {c1, c2, …, cn}, và tập các văn bản đã được phân lớp sắn D = {d1, d2, …, dm} , 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
Trang 4Trong đĩ, 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ư Nạ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 tồ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 tố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 tốn Tùy thuộc vào từng thuật tố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 = (x1, x2, …, xn) 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, xi là trọng số của đặc trưng thứ i
Trang 5Cĩ 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 Nạ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 Nạ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 tốn Nạ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 tố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ử
Trang 6Bê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
Trang 7tử, 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 Nạ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 Nạve Bayes Do đĩ nhĩm chúng em đã chọn mơ hình xác suất Nạ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 tố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(ci | d) là xác suất mà tài liệu d thuộc vào lớp văn bản ci , và được tính bởi cơng thức sau:
) (
)
| (
* ) ( )
| (
d P
c d P c P d c
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:
Trang 8
) (
)
| (
* )
( max )
| ( max
1
arg 1
arg
* C
d P
c d P c P d
c
n i
i n i
Trong đĩ n là số lớp văn bản
Theo giả thiết của Nạ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|ci) được tính từ tần suất xuất hiện của từng từ đơn wj
(word thứ j) trong tài liệu d
P(d |ci ) = P(w1|ci)*P(w2|ci)*… *P(wn|ci)
Hay: P(d | c ) P(w | )
m j 1
j
Trong đĩ P(wj|ci) là xác suất xuất hiện của từ wj trong lớp văn bản ci , m là tổng số
từ trong tài liệu d
) (
) ( )
| (
m j 1
i
d P
c P d c
III.3 Áp dụng thuật tốn Nạve Bayes vào phân loại thư điện tử
Thuật tố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
w1, w2, …, wn 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:
Trang 9) (
* )
| (
) (
* )
| (
)
| (
* ) (
)
|
(
ham P ham content P
spam P
spam content
P
spam content
P spam P
content spam
P
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(w1 | spam)*P(w2 | spam)*…*P(wn | spam)
P(content | ham) = P(w1 | ham)*P(w2 | ham)*…*P(wn | 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 Nạ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 tố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,…
Trang 10IV 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
Trang 11IV.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
Trang 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
Trang 13IV.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