Cơ sở dữ liệu cho chương trình

Một phần của tài liệu Xây dựng một Email Client với khả năng lọc thư rác tự động bằng việc ứng dụng phương pháp phân loại văn bản Naive Bayes (Trang 55)

5.1.1 Tài khoản người sử dụng

Để thực hiện được chức năng gửi nhận thư chương trình cần một bộ dữ liệu đầu vào đó là thông tin về người sử dụng các thông tin đó bao gồm:

o Tên người sử dụng

o Địa chỉ mail

o Incoming server: đây là địa chỉ của máy chủ nơi chứa các thư điện

tử trong hòm thư có địa chỉ mail tương ứng ở trên (POP3 server)

o Outcoming server đây là tên máy chủ đảm nhận việc chuyển thư

điện tử đến địa chỉ cần gửi (SMTP server)

o Password người sử dụng: mật khẩu đảm bảo tính bảo mật trong hòm

thư của người sử dụng

Các thông tin này trong chương trình thiết kế sẽ yêu cầu người dùng nhập từ bàn phím và được lưu lại trong một file text có tên là user.prf trong đó user là tên của người sử dụng

5.1.2 Bộ dữ liệu mẫu

(Đây là cơ sở để bộ lọc Bayes hoạt động).

Để phân loại thư rác ban đầu người sử dụng cần phải cung cấp một bộ dữ liệu mẫu bao gồm: một số thư điện tử mà họ cho là thư rác và một số thư điện tử coi là thư hợp lệ (những thư điện tử này sẽ được chứa trong hai folder là HAM và SPAM).

Khi chức năng Bayes được kích hoạt thì chức năng phân loại thư rác được áp dụng. Công việc này không đơn giản, ban đầu căn cứ vào bộ dữ liệu mẫu bộ lọc sẽ xây dựng một tập các đặc trưng bao gồm các xác suất hiện của các từ mẫu có trong cả hai lớp mail rác và mail hợp lệ. Từ đó làm cơ sở để phân loại các thư sau. Mỗi lần chức năng Bayes được kích hoạt thì tập các đặc trưng lại được xây dựng lại vì thế hiệu quả phân loại thư rác sẽ lớn dần lên, quá trình

này gọi là khả năng tự học của bộ lọc Bayes.

Việc xây dựng các tập đặc trưng dựa trên tập mẫu ban đầu diễn ra như sau:

o Ban đầu mỗi thư điện tử sẽ được phân tách thành tập các từ (tất nhiên là

đã có sự giảm bớt các từ thường xuyên xuất hiện trong các thư điện tử và những từ có thể coi là tần số xuất hiện thấp). Sau đó sẽ tiến hành xác

định xác suất xuất hiện của mỗi từ đó trên mỗi lớp văn bản ta sẽ tìm được một tập đặc trưng mẫu. Các đặc trưng này sẽ được lưu vào một

file có tên là feature.txt để làm tiêu chuẩn đánh giá các thư điện tử tiếp

theo.

o Các thư điện tử sau cũng được biểu diễn thành vector các từ dựa trên

các tập đặc trưng đó.

o Bước tiếp theo là việc sử dụng công thức Bayes để xác định xác suất

một thư điện tử mới là thư rác hay thư hợp lệ.

o Cuối cùng để xác định thư điện tử là thư rác hay thư hợp lệ ta sẽ định ra

một ngưỡng xác suất nhất định (0.9) chẳng hạn. Nếu xác suất vừa tính được >0.9 thì thư điện tử đó sẽ được coi là thư rác và chuyển vào folder SPAM ngược lại nó sẽ được chuyển vào folder HAM.

Vector biểu diễn thư điện tử

Vector biểu diễn một thư điện tử là một tập các từ hay cụm từ xuất

hiện trong thư điện tử đó với số lần xuất hiện tương ứng. Còn vector đặc

trưng là một tập các từ hay cụm từ xuất hiện trong toàn bộ tập thư. Với xác suất xuất hiện tương ứng của từ hay cụm từ đó trong hai lớp thư hợp lệ và lớp thư rác. Các thư điện tử sau sẽ được biểu diễn thông qua tập đặc trưng này. Sau đó sử dụng luật xác suất Naive Bayes để xác định khả năng thư đó có phải là thư rác hay không.

Quá trình biểu diễn một thư điện tử thành vector :

Thư điện tử khi nhận về từ server có nhiều thành phần khác nhau như tiêu đề, địa chỉ người gửi, phần nội dung của thư… Phương pháp Bayes chỉ sử dụng đến nội dung của thư. Trong chương trình của tôi nội dung của các thư khi nhận về từ server sẽ được lưu vào máy client để là dữ liệu phục vụ cho việc lọc các thư tiếp theo. Ban đầu khi chưa có tập đặc trưng các thư lấy về sẽ được coi là các thư hợp lệ (và lưu cả vào thư mục HamMail trên máy client). Hiển thị trên màn hình qua note HAM của cây thư mục Localhost phía trái màn hình. Người sử dụng sẽ có một lựa chọn Move các thư điện tử (coi là thư rác) sang note SPAM của cây thư mục. Như thế folder SpamMail trong máy client sẽ có thêm một lượng mẫu nhất định. Việc xây dựng tập đặc trưng bắt đầu bằng việc biểu diễn nội dung của một thư điện tử được mô tả như sau:

Biểu diễn loại stopwords đếm spamword

Sau khi biểu diễn các thư điện tử, công việc tiếp theo là đi xây dựng tập các đặc trưng từ các mẫu thư ban đầu. Tập đặc trưng này phụ thuộc rất nhiều vào số lượng mẫu thư có trong hai folder SpamMail và HamMail trong máy client. Và cũng phụ thuộc nhiều vào độ ngắn dài của một bức thư. Vector đặc trưng chứa các từ hay cụm từ được phân tách từ nội dung của các thư điện tử với xác suất xuất hiện tương ứng của các từ đó trên cả hai lớp thư rác và thư hợp lệ. Ví dụ một phần tử trong vector đặc trưng :

Từ (cụm từ)

Xác suất xuất hiện trong lớp thư hợp lệ

Xác suất xuất hiện trong lớp thư rác

Free 0.012 0.25

Khuyến mãi 0.02 0.045

Có thể mô hình hoá quá trinh xây dựng vector đặc trưng từ các vector biểu diễn vector biểu diễn các thư điện tử như sau:

Khoa Công Nghệ Thông Tin

Thư điện tử Xâu kí tự kí tựXâu Tập các Từ spam Tập các từ đơn Vector biểu diễn một thư Vector biểu diễn một thư Vector biểu diễn một thư Vector biểu diễn lớp mail hợp lệ Vector biểu Vector biểu diễn hai lớp mail Vector biểu diễn các đặc trưng Loại bỏ các từ xuất hiện ít

Chương trình mà tôi xây dựng là một ứng dụng desktop chạy trên các máy tính client. Hoạt động phân loại thư rác của nó được diễn ra trước khi các thư điện tử được hiển thị cho người dùng. Có thể mô tả chi tiết như sau: khi thư điện tử được nhận về từ server nó sẽ được bộ lọc Bayes phân loại và phân bổ vào hai thư mục HamMail và SpamMail trên máy client. Trong đó HamMail là thư mục chứa các thư hợp lệ còn SpamMail chứa các thư được coi là thư rác. Mọi hiển thị cho người sử dụng sau đó sẽ dựa trên hai thư mục này. Điều đó có nghĩa là các thư điện tử sẽ được lấy về từ server và nội dung của nó được lưu ngay trên máy client mỗi thư điện tử được lưu dưới dạng một file text. Các thư điện tử được sắp xếp có thứ tự theo thời gian. Nếu thư mới sẽ được xếp sau các thư cũ.

Bộ dữ liệu đính kèm theo chương trình là các file dữ liệu ở dạng text – người sử dụng có khả năng thay đổi lại nội dung của các file này. Các file đó bao gồm:

1. StopwordsDB.txt: Đây là file chứa các từ thông dụng thường xuất hiện trong mọi thư điện tử. Những từ này khi xây dựng các tập đặc trưng sẽ bị loại bớt để giảm bớt kích thước của không gian đặc trưng.

2. SpamwordsDB.txt: Đây là file chứa các từ và cụm từ thường xuyên xuất hiện trong các thư rác (các đặc trưng của thư rác)- nó là một phần quan trọng để phân loại thư rác.

3. SpammerDB.txt: chứa danh sách các spammer mà người sử dụng yêu cầu. File dữ liệu này phục vụ cho việc kết hợp nhiều tri thức khác nhau để lọc thư rác.

4. SubjectDB.txt: Chứa danh sách các tiêu đề thường xuất hiện trong các thư rác. Đây cũng là một lĩnh vực để kết hợp lọc thư rác có hiệu quả hơn. Với file dữ liệu này người dùng cũng có thể thay đổi thêm bớt bổ sung cho phù hợp với mình.

Nói chung là tiến trình phân loại thư rác của bộ lọc Bayes mà tôi xây dựng diễn ra như sau:

5.3 Giao diện của hệ thống

Giao diện chính của chương trình: Khi người sử dụng đăng nhập thành công vào chương trình bằng tài khoản đã đăng kí giao diện chính của chương trình sẽ có dạng như sau:

Cây thư mục bên trái màn hình:

- INBOX : đây là một note chứa tất cả các thư điện tử của người dùng có ở trên server. Kích đúp vào note này để xem danh sách các thư điện tử có trong hòm thư của mình. Các thao tác trên INBOX được ánh xạ trực tiếp lên server không liên quan đến client.

- LocalFolder : là một cây thư mục trong client bao gồm các folder nhỏ chứa các thư điện tử sau khi đã được phân loại. Trong đó note SPAM chứa các thư điện tử được coi là thư rác. Note HAM chứa các thư điệnt tử được coi là thư hợp lệ. Khi nhấn đúp vào SPAM hay HAM ta cũng sẽ có một danh sách các thư điện tử

Các trình đơn menu:

Chương trình có bốn menu chính, mỗi menu chứa một tập các lệnh giúp người dùng thao tác với hệ thống..

- Menu File tích hợp các chức năng login logout và khả năng import hay

export một thư điện tử thành một file tùy chọn.

- Menu Parameters tích hợp một số chức năng thao tác với thư mục và tạo

số địa chỉ, lọc thư điện tử theo địa chỉ người gửi.

- Menu Mail tích các chức năng thao tác với thư điện tử bao gồm chức

- Menu Look &feel cho phép thay đổi giao diện của chương trình theo môi trường.

- Menu help trợ giúp người dùng cách cấu hình và sử dụng chương trình

Popup menu :

Khi click chuột phải vào một thư điện tử bên phải màn hình thì sẽ hiện một popup menu. Mục đích giúp người sử dụng thao tác nhanh trên các thư chọn lựa.

Menu Parameters:

Chứa một tập các thao tác trên folder chứa mail. Các chức năng trong menu này dùng cho dịch vụ truy cập thư mục đơn có trong các dịch vụ mail sử dụng IMAP. Bao gồm các thao tác: copy, move, xoá thư mục. Nếu dịch vụ mail của bạn sử dụng POP3 thì các chức năng sẽ bị mờ đi.

Menu Mail:

Người dùng có thể thao tác trên các thư điện tử thông qua menu Mail. Các thao tác gửi thư, reply hay forward một thư điện tử được thực hiện trong menu này. Ngoài ra nó còn chứa menu kích hoạt khả năng tự học của bộ lọc Bayes và một tuỳ chọn lọc thư theo địa chỉ và theo tiêu đề. Giao diện của menu Mail như sau:

Menu Help:

Trợ giúp người dùng cách sử dụng chương trình và cung cấp thông tin về tác giả. Có hai sự trợ giúp tiếng Anh và tiếng Việt người dùng có thể tùy chọn một trong hai trợ giúp này. Đặc biệt người sử dụng có thể đến thăm website của trường Đại Học Thủy Lợi thông qua mục Visit mySite

4.3 Một số chức năng tiêu biểu

Chức năng tạo tài khoản

Đầu vào

+ Tên người sử dụng

+ Địa chỉ Email người sử dụng + Password

+ Incoming server

+ Outcoming server (SMTP server) Đầu

ra

+ Giao diện login vào chương trình (nếu thành công) + Thông báo lỗi nếu việc tạo tài khoản gặp vấn đề Mô

tả - Người dùng bắt buộc phải tạo một tài khoản riêng thì mới có thể sửdụng được chương trình

- Điền các thông tin theo mẫu

Màn hình

Chức năng login vào hệ thống:

Đầu vào Tài khoản người dùng đã được khởi tạo thành công

Đầu ra + Giao diện chính của chương trình (nếu thành công)

+ Thông báo lỗi nếu đăng nhập thất bại

Mô tả Người sẽ lựa chọn một trong các tài khoản mà minh đã khởi tạo và

Màn hình

Chức năng soạn thảo và gửi thư:

Đầu vào

+ Địa chỉ email của người nhận thư (bắt buộc phải có) + chủ đề của bức thư (tùy chọn)

+ File dữ liệu đính kèm nếu cần thiết(tùy chọn) Đầu ra

+ Thông báo message được gửi (nếu thành công) + Lỗi gây ra nếu message không được gửi

Mô tả Người dùng bắt buộc phải đăng nhập địa chỉ email của người

nhận thư thì mới có thể gửi thư được thư. Trong quá trình soạn thảo thư người sử dụng có thể sử dụng thêm các chức năng copy, paste để việc soạn thảo thư diễn ra nhanh chóng hơn. Có thể gửi kèm theo thư các file dữ liệu với kích thước phù hợp Màn

Chức năng configure

Đầu vào + thông tin người dùng muốn thêm, sửa, xóa …

Đầu ra +File dữ liệu sau khi được update

Mô tả Nếu muốn thêm, sửa xóa hay cập nhật các thôn tin về Spammer

hay thêm vào tập mẫu spam các từ cần thiết có thể sử dụng chức năng này

Màn hình

Chức năng tạo sổ địa chỉ:

Đầu

vào + Tên + Địa chỉ Mail Đầu

ra Danh sách các user trong addressbook

Màn hình

Chức năng lọc thư theo địa chỉ:

Đầu vào Tên và địa chỉ mail của người muốn lọc thư

Đầu ra Danh sách các uer cần lọc

Màn hình

Việc kết hợp lọc thư rác theo nhiều cách khác nhau giúp cho việc lọc thư rác có hiệu quả hơn. Đó là sự kết hợp giữa thuật toán Naive Bayes với việc lọc thư qua địa chỉ người gửi, qua tiêu đề của thư. Mà cơ sở dữ liệu của nó người dùng có thể tùy chọn cấu hình lại cho phù hợp qua chức năng “configures”. Đây cũng là một kết quả đáng kể mà chương trinh đã đạt được

Giao diện mô tả việc lọc thư rác qua địa chỉ người gửi và tiêu đề của thư như sau:

Đầu vào Lựa chọn của người sử dụng

Đầu ra Kết hợplọc thư rác theo tùy chọn đã nhấn

Màn hình

5.5 Sử dụng chương trình

Chương trình có tổng cộng ba gói: Mail.jar, activation.jar và MailClient.jar

- Mail.jar: đây là gói của hãng sun đi kèm theo trong trình dịch java, ứng

dụng của gói này là dùng để hỗ trợ cho việc đọc mail và gởi mail dựa vào gói này người lập trình viên có thể viết một chương trình client như đọc mail và gởi mail một cách dễ dàng thông qua các lớp sẵn có trong gói tin.

- activation.jar: gói này chủ yếu là sử lý các biến cố liên quan tới mail như

khi đọc mail thì gói này làm nhiệm vụ phân tích mail đó có file đi kèm không hay mail được định dạng theo kiểu nào, cò khi gởi mail thì cần gọi các thủ tục trong gói tin này ra để định dạng mail theo một dạng chuẩn rồi tiến hành gởi đi. Ngoài ra còn nhiều tính năng khác tuỳ theo mục đích sử dụng trong chương trình.

- MailClient.jar: là gói chứa cả source code của chương trình đã được biên

dịch thành các file .class.

5.5.1 Cài đặt và chạy chương trình

Vì chương trình được viết bằng ngôn ngữ Java mã nguồn mở, nên để chạy được chương trình thì điều kiện cần trước tiên là hệ điều hành dùng để chạy chương trình phải hiểu Java nghĩa là trên máy phải có máy ảo Java đang chạy. Để có được máy ảo Java tốt nhất nên cài đặt JDK mọi phiên bản của hãng Sun, (khuyến cáo nên sử dụng JDK 1.5.0) khi cài đặt xong JDK chỉ cần copy các gói trên vào một thư mục trên ổ đĩa cứng và chạy File run.bat thì chương trình MailClient sẽ được thực thi.

5.5.2 Hướng dẫn sử dụng:

Để sử dụng mail client này người dùng phải có một tài khoản nhất định. Khi khởi động chương trình yêu cầu người dùng chọn tài khoản (nếu đã cõ sẵn một số tài khoản nhất định) nếu không sẽ phải tạo một tài khoản mới. Để tạo cho mình một tài khoản kích hoạt nút “create” rồi làm theo chỉ dẫn để tạo tài khoản. Nếu thành công sẽ đăng nhập vào chương trình theo tài khoản đã lập. Tất cả các hướng dẫn cụ thể đều có trong mục Help vietnamese. Các bạn có thể sử dụng chức năng này để xem chi tiết hơn.

5.6 Kết luận và định hướng phát triển

5.6.1 Những kết quả đạt được

Nhìn chung chương trình được thực hiện khá hoàn thiện cho một MailClient trên desktop và đạt được những kết quả đáng kể sau:

- Các chức năng của một chương trình Email

Một phần của tài liệu Xây dựng một Email Client với khả năng lọc thư rác tự động bằng việc ứng dụng phương pháp phân loại văn bản Naive Bayes (Trang 55)

w