1. Trang chủ
  2. » Luận Văn - Báo Cáo

Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux

80 33 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Nghiên Cứu Và Thiết Kế Hệ Thống Lọc Thư Rác Tiếng Việt Trên Linux
Tác giả Nguyễn Hoài Sơn
Người hướng dẫn ThS. Đỗ Văn Uy
Trường học Khoa Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Phần Mềm
Thể loại Đồ Án Tốt Nghiệp
Năm xuất bản 2008
Thành phố Hà Nội
Định dạng
Số trang 80
Dung lượng 1,3 MB

Cấu trúc

  • CHƯƠNG 1. NGHIÊN CỨU TỔNG QUAN VỀ HỆ THỐNG THƯ ĐIỆN TỬ (11)
    • 1. Hệ thống thư điện tử (11)
      • 1.1. Tổng quan hệ thống thư điện tử (11)
      • 1.2. Các thành phần cơ bản trong hệ thống thư điện tử (13)
        • 1.2.2. Mail Tranfer Agent (13)
        • 1.2.3. Mail Delivery Agent (13)
        • 1.2.4. Mail Client (Mail User Agent) (13)
        • 1.2.5. Mail Acess Agent (13)
        • 1.2.6. Mailstore (13)
        • 1.2.7. Webmail (14)
      • 1.3. Các giao thức (14)
      • 1.4. Máy chủ thư điện tử (17)
      • 1.5. Hoạt động của hệ thống thư điện tử qua mạng Internet (18)
    • 2. Các thành phần cơ bản của một bức thư (20)
      • 2.1. Các thành phần cơ bản (20)
      • 2.2. Phần Header (21)
      • 2.3. Phần Body (22)
      • 2.4. Phần Envelope (23)
    • 3. Chuẩn MIME (23)
      • 3.1. Chuẩn MIME (23)
      • 3.2. Các header của MIME (24)
      • 3.3. Encoded-Word (25)
      • 3.4. Cấu trúc định dạng hỗn hợp trong thư (26)
      • 3.5. Các thư tiếng Việt và các loại mã thông dụng trong thư tiếng Việt (26)
  • CHƯƠNG 2. HỆ THỐNG LỌC THƯ RÁC (2)
    • 1. Tổng quan về các hệ thống lọc thư rác (29)
      • 1.1. Các vấn đề về thư rác (29)
      • 1.2. Các nguyên lý hoạt động của hệ thống chống thư rác (29)
      • 1.3. Vị trí của thành phần lọc thư rác trong hệ thống thư điện tử (31)
        • 1.3.1. Kiểm tra thư tại MTA (31)
        • 1.3.2. Kiểm tra tại MDA (31)
        • 1.3.3. Kiểm tra bằng POP Proxy (32)
        • 1.3.4. Kết hợp các mô hình (32)
    • 2. Phân loại văn bản (32)
      • 2.1. Lý thuyết chung về phân loại văn bản (32)
        • 2.1.1. Bài toán phân loại văn bản (32)
        • 2.1.2. Quá trình phân loại phân loại văn bản (33)
      • 2.2. Phương pháp phân loại dựa trên lý thuyết xác suất Bayesian (33)
        • 2.2.1. Phân loại bằng phương pháp Bayesian (34)
        • 2.2.2. Mô hình học thống kê Naive Bayes (35)
      • 2.3. Bài toán phân loại văn bản tiếng Việt (36)
        • 2.3.1. Một số đặc điểm của tiếng Việt (36)
        • 2.3.2. Phân tách từ trong văn bản tiếng Việt (38)
    • 3. Phương pháp lọc thư rác dựa trên lý thuyết Bayesian (40)
      • 3.1. Cơ sở lý thuyết (40)
        • 3.1.1. Phương pháp phân loại dựa trên lý thuyết xác suất Bayesian (40)
        • 3.1.2. Phân loại Bayesian với các phương pháp tổng hợp xác suất từ từ khóa (41)
      • 3.2. Nguyên lý (44)
        • 3.2.1. Quá trình học (45)
        • 3.2.2. Quá trình quét một thư (46)
        • 3.2.3. Cấu hình cho Bayesian (48)
      • 3.3. Lưu trữ dữ liệu của phương pháp Bayesian (50)
  • CHƯƠNG 3. CẢI TIẾN, CÀI ĐẶT VÀ ĐÁNH GIÁ HỆ THỐNG HỌC BAYESIAN (2)
    • 1. Hệ thống lọc thư rác của SpamAssassin (53)
      • 1.1. Cơ bản về SpamAssassin (53)
        • 1.1.1. Giới thiệu (53)
        • 1.1.2. Các thành phần chính (53)
        • 1.1.3. Cấu hình cơ bản (55)
        • 1.1.4. Tích hợp SpamAssassin với Procmail (56)
      • 1.2. Luật sử dụng trong SpamAssassin (57)
        • 1.2.1. Biểu thức chính quy (57)
        • 1.2.2. Cấu trúc luật của SpamAssassin (57)
        • 1.2.3. Quy tắc tạo các luật (58)
        • 1.2.4. Các tập luật xây dựng sẵn của SpamAssassin (60)
      • 1.3. Whitelist/Blacklist (63)
      • 1.4. Autowhitelist- Danh sách tự động (63)
    • 2. Áp dụng các kỹ thuật phân loại văn bản tiếng Việt vào SpamAssassin (64)
      • 2.1. Các hạn chế của lọc Bayesian với thư tiếng Việt và các giải pháp (64)
      • 2.2. Xây dựng mô đun tách từ (65)
        • 2.2.1. Phân tích (65)
        • 2.2.2. Xây dựng từ điển (66)
        • 2.2.3. Xây dựng mô đun tách từ (67)
        • 2.2.4. Xây dựng mô đun loại bỏ từ dừng (68)
      • 2.3. Xây dựng mô đun tạo luật (69)
    • 3. Quá trình huấn luyện và đánh giá (71)
      • 3.1. Các yêu cầu về môi trường (71)
      • 3.2. Cài đặt và cấu hình (71)
      • 3.3. Chiến lược và công cụ huấn luyện (72)
      • 3.4. Vận hành (73)
      • 3.5. Đánh giá (73)
        • 3.5.1. Tiêu chí đánh giá (73)
        • 3.5.2. Nguồn dữ liệu dùng cho thí nghiệm và đánh giá (75)
  • TÀI LIỆU THAM KHẢO (77)

Nội dung

NGHIÊN CỨU TỔNG QUAN VỀ HỆ THỐNG THƯ ĐIỆN TỬ

Hệ thống thư điện tử

Hệ thống thư điện tử, ra đời cùng với mạng máy tính, đã đáp ứng nhu cầu trao đổi thông tin nhanh chóng giữa mọi người Thư điện tử cho phép gửi thông điệp dưới dạng mã hóa hoặc thông thường qua mạng Internet, có khả năng chuyển thông tin từ một máy nguồn tới nhiều máy nhận cùng lúc Ngoài việc truyền tải các ký tự đơn giản, thư điện tử còn hỗ trợ nhiều dạng thông tin đa phương tiện như hình ảnh, âm thanh và video Đặc biệt, các phần mềm thư điện tử hiện đại còn cho phép hiển thị thư với nhiều ngôn ngữ khác nhau, mang lại trải nghiệm phong phú cho người sử dụng.

1.1 Tổng quan hệ thống thư điện tử

Hệ thống thư điện tử cho phép người dùng gửi và nhận thư qua mạng máy tính, bao gồm nhiều hệ thống con hoạt động trên các nền tảng khác nhau và tuân theo các giao thức chuẩn Để hiểu rõ hơn về hệ thống này, chúng ta sẽ khảo sát quá trình gửi một bức thư điện tử, từ người gửi đến người nhận.

Thư điện tử được tạo ra tại MUA (Mail User Agent) của người gửi, sau đó được chuyển qua các máy chủ mail (MTA - Mail Transfer Agent) trước khi đến MUA của người nhận.

Chúng ta có thể thấy rõ trong ví dụ minh họa sau:

Hình 2 Hoạt động của hệ thống thư điện tử

Hoạt động của hệ thống email hiện nay có thể dược minh họa qua phân tích thí dụ trên như sau:

1 Nguyễn dùng MUA của mình để soạn một lá thư có địa chỉ người nhận là Trần với địa chỉ là Tran@b.org Nguyễn nhấn nút Send và phần mềm thư điện tử của Nguyễn áp dụng SMPT để gửi lá thư đến MTA, hay máy chủ thư điện tử, của Nguyễn Trong thí dụ thì máy chủ này là smtp.a.org được cung cấp từ dịch vụ Internet của Nguyễn

2 MTA này sẽ đọc địa chỉ chỗ nhận (tran@b.org) và dựa vào phần tên miền nó sẽ tìm hỏi địa chỉ của tên miền này, nơi có máy chủ sẽ nhận email gửi đến, qua Hệ thống tên miền (DNS)

3 Máy chủ hệ thống tên miền (DNS Server) của b.org là ns.b.org sẽ trả lời về một bản ghi trao đổi thư từ, đây là bảng ghi chỉ ra cách thức làm thế nào định tuyến cho email này Trong thí dụ thì mx.b.org là máy chủ từ dịch vụ cung ứng Internet của Trần

4 smtp.a.org gửi mẫu thông tin tới mx.b.org dùng giao thức SMTP, điều này sẽ phân phối lá thư đến hộp thư của Trần

5 Khi đọc Trần ra lệnh nhận thư trên máy (MUA) của Trần, điều này tạo ra việc lấy về mẫu thông tin bằng cách áp dụng giao thức POP3, hoặc IMAP hoặc dùng dịch vụ webmail

Nếu Nguyễn chỉ sử dụng Webmail mà không có MUA, thì bước đầu tiên sẽ không được thực hiện, dẫn đến việc MTA của Nguyễn hoạt động trực tiếp Tương tự, trường hợp của Trần cũng vậy khi không sở hữu MUA riêng.

Trước đây, khi một MTA không thể gửi thông tin đến đích, nó có thể tạm dừng gần vị trí nhận để tạo cơ hội cho máy đích nhận thông tin sau đó Nhiều MTA chấp nhận mọi mẫu thông tin từ người gửi và cố gắng chuyển tiếp đến máy đích, được gọi là OMR (open mail relays) Điều này là cần thiết do chất lượng liên lạc của hệ thống Internet lúc bấy giờ còn yếu.

Hiện nay, việc lạm dụng hệ thống thư điện tử đã dẫn đến sự gia tăng các loại thư vô bổ Hệ quả là, rất ít MTA còn chấp nhận OMR, vì những thư này có khả năng cao là thư rác.

1.2.Các thành phần cơ bản trong hệ thống thư điện tử

Bộ phận vận chuyển và nhận thư điện tử trên Server là thành phần quan trọng nhất của Mail Server, có nhiệm vụ tiếp nhận thông điệp từ các MTA, sau đó mua và chuyển tiếp chúng đến MTA khác hoặc chuyển giao cho MDA nếu là thư của người dùng trong Mail Server đó.

MDA (Mail Delivery Agent) là bộ phận chịu trách nhiệm chuyển thư đến từng hộp thư của người dùng trên máy chủ, tương tự như người đưa thư Ngoài ra, MDA còn có khả năng chuyển thư vào các thư mục cụ thể trong hộp thư của người dùng theo các yêu cầu nhất định, được gọi là chương trình lọc thư mức MDA.

1.2.4 Mail Client (Mail User Agent)

Phần mềm thư điện tử cài đặt trên máy tính người dùng được gọi là email client, hay phần mềm thư điện tử cho máy khách Một số phần mềm nổi tiếng trong danh sách này bao gồm Microsoft Outlook, Microsoft Outlook Express, Netscape Communicator, Thunderbird và Eudora Loại phần mềm này còn được biết đến với tên gọi Mail User Agent (MUA).

Người dùng có thể truy cập mail trực tiếp hoặc thông qua Mail Access Agents (MAA) Tuy nhiên, trong nhiều hệ thống, MAA không được sử dụng phổ biến.

Hệ thống lưu trữ email có thể là bằng tệp hoặc cơ sở dữ liệu, với mỗi người dùng có một mailbox riêng Trong mailbox, người dùng có thể tạo các thư mục nhỏ hơn để phân loại email theo tình trạng, giúp quản lý dễ dàng hơn Người dùng có thể tự phân loại thư hoặc sử dụng tính năng phân loại tự động theo cài đặt sẵn.

• Inbox có nghĩa là Hộp thư nhận hay Hộp thư vào: Đây là ngăn đựng các thư mới nhận về

Các thành phần cơ bản của một bức thư

Trong bài viết này, chúng ta sẽ khám phá ba thành phần chính của một bức thư điện tử: Header, Body và Envelope Trước khi đi vào chi tiết, hãy cùng tìm hiểu cách thức chạy Sendmail một cách thủ công.

2.1 Các thành phần cơ bản Ở đây, chúng ta tìm hiểu cách gửi thư bằng sendmail một cách trực tiếp, không dùng MUA Để hiểu rõ hơn, chúng ta sẽ chạy một cách thủ công, cũng như dễ dàng hơn trong khi viết các ứng dụng có liên quan đến việc gửi thư

Thí dụ thứ nhất sẽ là gửi thư cho chính mình với nội dung: This is a one-line message

Bước 1: Tạo tệp text với tên sendstuff chứa dòng sau:

This is a one-line message

Bước 2: Gửi thư tới hòm thư của bạn với dòng lệnh sau, trong đó you là tên đăng nhập của bạn, chẳng hạn nguyenhoaison@runsystem.net

Sử dụng lệnh % /usr/sbin/sendmail để gửi thư, trong đó bất kỳ tham số nào không bắt đầu bằng dấu “–“ sẽ được coi là người nhận Bạn có thể tham khảo thêm để tìm hiểu về các tham số khác liên quan.

Chúng ta sẽ khám phá cấu trúc của thư nhận được, thường sử dụng lệnh mail trên sendmail để xem thư, hoặc trong gói mh dùng lệnh inc và show để nhận và xem thư Thư được nhận dưới dạng tệp văn bản với nội dung cụ thể.

From you@Here.US.EDU Fri Dec 13 08:11:44 2002

Received: (from you@localhost) by Here.US.EDU (8.12.7/8.12.7) id d8BILug12835 for you; Fri, 13 Dec 2002 08:11:44 -0600 (MDT)

From: you@Here.US.EDU (Your Full Name)

Message-Id: 200201011548.d872mLW24467@Here.US.EDU>

To: you might be something else (see NoRecipientAction)

This is a one-line message

Trong thư nhận được, có thêm thông tin trong 7 dòng đầu, được gọi là Header do Sendmail thêm vào Dòng cuối cùng của bức thư là nội dung chính, được tách biệt khỏi Header bằng một dòng trống.

Hình 9 Hai thành phần chính của thư Header và Body

Thông thường, khi chúng ta gửi thư với MUA hoặc Webmail thì MUA thêm Header và cung cấp cả Header và Body cho máy chủ thư điện tử

Phần Header trong email chủ yếu chứa thông tin cho hệ thống xử lý thư, nhưng cũng có nhiều trường quan trọng liên quan đến các kỹ thuật chống thư rác Hãy cùng xem xét chi tiết nội dung của phần Header trong một bức thư.

From you@Here.US.EDU Fri Dec 13 08:11:44 2002

Received: (from you@localhost) by Here.US.EDU (8.12.7/8.12.7) id d8BILug12835 for you; Fri, 13 Dec 2002 08:11:44 -0600 (MDT)

From: you@Here.US.EDU (Your Full Name)

Message-Id: 200201011511.d872mLW24467@Here.US.EDU>

To: you might be something else (see NoRecipientAction)

Lưu ý rằng hầu hết các dòng trong Header bắt đầu bằng một từ và dấu hai chấm, mỗi từ cung cấp ý nghĩa cho thông tin của dòng đó Một số thông tin là bắt buộc, trong khi một số khác có thể có hoặc không Tất cả các thông tin trong Header đều là bắt buộc.

From you@Here.US.EDU Fri Dec 13 08:11:44 2002: Dòng này biểu diễn thông tin về người gửi

Dòng "Received" trong email thể hiện quá trình chuyển giao của nó Mỗi khi email được chuyển qua một MTA trung gian, MTA đó sẽ ghi lại thông tin và thời điểm chuyển giao thư.

Do ở đây chỉ có một MTA nên chỉ có một dòng Received: Nếu thông điệp thư qua nhiều MTA nên có nhiều dòng như sau:

Date: là thời gian thư được gửi đi, nó được bao gồm cả mã múi giờ Ví dụ:

From: dòng hiển thị địa chỉ thư và tên của người gửi

Message-ID là số seri duy nhất của bức thư trong hệ thống, giúp phân biệt và so sánh các bản sao khác nhau của nó.

To: là dòng liệt kê danh sách các người nhận

Trên đây là các thông tin cơ bản, ngoài ra còn rất nhiều các thông khác, tùy thuộc vào từng MTA và giao thức cụ thể:

Content-Type:multipart/mixed;boundary="Boundary- c87ORxAXnTbjfPhCdc7IY"

In-Reply-To:

Message-Id:

Reply-To: Mobmaps@runsystem.net

List-Id:

Trong phần này, chúng ta sẽ khám phá các thông tin liên quan đến kỹ thuật lọc thư rác Ở những phần tiếp theo, chúng ta sẽ cung cấp đầy đủ thông tin chi tiết trong Header.

The header fields in an email include essential components such as "from," "to," "cc," "bcc," "subject," and "date," which are crucial for identifying the sender, recipients, and the message's timestamp Additional fields like "message-id," "in-reply-to," and "references" facilitate tracking conversations, while "content-type" and "content-length" provide details about the message's format Other important headers include "return-path," "reply-to," and "errors-to," which help manage email delivery and responses Understanding these headers is vital for effective email communication and organization.

Các trường có đánh dấu * là được định nghĩa bởi RFC2822

Phần thân của tệp bắt đầu bằng một dòng trống và tiếp tục cho đến hết file Trong ví dụ này, chúng ta chỉ có phần nội dung thư (content), bên cạnh đó còn có phần Subject Để thêm phần Subject, chúng ta cần chỉnh sửa tệp sendstuff như sau: Subject: a test.

This is a one-line message

Dòng Subject là không bắt buộc và cần phải có một dòng trống sau đó Lưu ý rằng dòng trống này phải hoàn toàn trống rỗng, không chứa bất kỳ ký tự space hay tab nào, vì một số trình soạn thảo có thể khó phát hiện ra dòng trống này.

Gửi lại thư trên bằng lệnh:

% /usr/sbin/sendmail you

This is a one-line message

Sendmail áp dụng khái niệm Envelope để đơn giản hóa quá trình gửi và nhận thư, tương tự như cách mà bưu điện sử dụng Ví dụ, nếu bạn muốn gửi hai bản của một tài liệu cho hai người bạn, một ở gần và một ở xa, khái niệm này sẽ giúp bạn quản lý việc gửi thư hiệu quả hơn.

Sau khi photocopy tài liệu thành hai bản, bạn đặt mỗi bản vào một phong thư khác nhau Một phong thư sẽ được giao cho người tạp vụ để chuyển sang phòng bên cạnh, tương tự như việc gửi thư trong cùng hệ thống Phong thư còn lại sẽ được bỏ vào hòm thư bưu điện để gửi đến một thành phố khác, giống như việc gửi thư đến một máy khác.

HỆ THỐNG LỌC THƯ RÁC

Tổng quan về các hệ thống lọc thư rác

1.1 Các vấn đề về thư rác

Thư rác, hay còn gọi là Junk Mail hoặc Bulk Mail, là thuật ngữ trong ngành bưu chính Hoa Kỳ chỉ các loại thư đã được chuẩn bị sẵn với nội dung và được gửi đi với mức cước phí thấp Việc chuẩn bị này bao gồm cả việc lựa chọn mã vùng để gửi, nhằm tối ưu hóa chi phí và hiệu quả truyền tải thông tin.

Thư rác thường được hiểu là các loại thư điện tử chứa nội dung quảng cáo, hàng miễn phí dùng thử, thông tin phản động, văn hóa phẩm không lành mạnh, cũng như các thư lừa đảo và virus.

"Rác" đề cập đến những lá thư thường bị lãng quên hoặc loại bỏ bởi người nhận Các nhà quảng cáo dựa vào cơ sở dữ liệu để xác định loại thư phù hợp cho từng đối tượng, ví dụ như những người yêu thích thể thao có thể nhận nhiều thư rác liên quan đến sản phẩm thể thao Một số người chấp nhận thư rác với hy vọng tìm kiếm sản phẩm hoặc dịch vụ hữu ích, trong khi nhiều người khác lại không ưa thích và gửi trả lại Tại Hoa Kỳ, có luật yêu cầu người gửi thư rác phải nhận lại các thư bị trả lại với chi phí.

Thư rác gây thiệt hại lớn cho cộng đồng người sử dụng Internet, lãng phí tài nguyên mạng và giảm hiệu suất hệ thống thư điện tử Theo nghiên cứu của CipherTrust, 86% thư gửi đến doanh nghiệp là thư rác, ảnh hưởng đến hiệu quả làm việc của người dùng Ngoài việc tiêu tốn thời gian xử lý, thư rác còn là phương tiện phát tán virus và lừa đảo Mỹ dẫn đầu về phát tán thư rác với 25%, tiếp theo là Trung Quốc (22,3%) và Hàn Quốc (9,7%), cho thấy sự gia tăng của thư rác không chỉ bằng tiếng Anh mà còn bằng nhiều ngôn ngữ khác Tại Việt Nam, số lượng thư rác cũng đã tăng đáng kể, chủ yếu từ các trang quảng cáo và văn hóa phẩm độc hại.

Hiện nay, nhiều quốc gia đã ban hành các đạo luật nhằm kiểm soát thư rác, nổi bật là đạo luật CAN-SPAM của Mỹ, giúp giảm thiểu đáng kể lượng thư rác Tuy nhiên, các spammer ngày càng phát triển nhiều kỹ thuật tinh vi để lách luật, như sử dụng Zombie và Open Relay để phát tán thư rác Do đó, bên cạnh việc áp dụng các đạo luật, cần thiết phải xây dựng các hệ thống lọc thư rác mạnh mẽ và thông minh để đối phó với vấn nạn toàn cầu này.

1.2 Các nguyên lý hoạt động của hệ thống chống thư rác

Việc xác định một bức thư có phải là thư rác hay không là một nhiệm vụ khó khăn, vì vậy việc nhận diện các tiêu chí và đặc điểm của thư rác là yếu tố then chốt để đảm bảo hiệu quả của hệ thống lọc thư rác.

• Các thông tin của header có thể kiểm tra theo các chuẩn của Internet

Để kiểm tra sự xuất hiện của các cụm từ thường gặp trong thư rác, bạn có thể xem xét cả phần header và body của email Những cụm từ như “Khuyến mãi lớn” và “Nhanh chân trúng thưởng” thường là dấu hiệu nhận biết của các thông điệp không mong muốn.

Header và Body của bức thư có thể được xác thực thông qua một số cơ sở dữ liệu trực tuyến, nơi lưu trữ các tổng kiểm tra của những thông điệp đã được xác nhận là thư rác.

• Địa chỉ IP của người gửi có thể được kiểm tra thông qua CSDL về các địa chỉ IP đã được sử dụng cho việc gửi thư rác

Một số địa chỉ, host và domain có thể được liệt kê vào danh sách Blacklist hoặc Whitelist Các danh sách này thường được tạo ra tự động dựa trên các thư đã được xác nhận trước đó, giúp hệ thống phân loại và quản lý email một cách hiệu quả hơn.

SpamAssassin có khả năng được huấn luyện để nhận diện các dạng thư rác khác nhau, dựa trên những ví dụ mà bạn xác định là thư rác hoặc thư hợp lệ.

Địa chỉ IP của hệ thống gửi thư có thể được kiểm tra thông qua giao thức Sender Policy Framework (SPF) để xác định tính hợp lệ của việc gửi thư từ người dùng trong hệ thống Điều này giúp đảm bảo rằng chỉ những hệ thống được phép mới có thể gửi thư, góp phần giảm thiểu tình trạng spam Công nghệ này đã được tích hợp từ phiên bản SpamAssassin 3.0.

SpamAssassin cho phép người gửi phân quyền để sử dụng sức mạnh tính toán dưới dạng Hashcash (http://www.hashcash.org) Điều này khiến các spammer không thể thực hiện các phép toán cần thiết và gửi số lượng lớn email một cách nhanh chóng qua hệ thống Tính năng này đã có mặt từ phiên bản SpamAssassin 3.0.

Ngoài ra chúng ta còn có một số hướng tiếp cận sau:

Chúng ta có thể tạo ra một giải pháp toàn diện bằng cách kết hợp các kỹ thuật như kiểm tra định dạng thư, lọc nội dung và sử dụng các Blacklist trên mạng.

Trong hệ thống chặt chẽ, tất cả thư từ của những người gửi chưa xác định sẽ được giữ lại và gửi lại một bức thư có mã đặc biệt hoặc hướng dẫn để người gửi xác nhận rằng địa chỉ thư là của họ và không phải do công cụ sinh thư rác tạo ra Chỉ sau khi xác nhận, thư của người gửi mới có thể được lưu hành bình thường.

Trong một số hệ thống, các máy chủ thư điện tử trả về các gói SMTP lỗi cho những người gửi mới Nếu hệ thống gửi lại bức thư trong khoảng thời gian hợp lý, máy chủ sẽ chấp nhận bức thư và các bức thư tiếp theo từ cùng một host Phương pháp này hiệu quả vì các Spammer thường xem các lỗi tạm thời là lỗi cố định và cố gắng gửi thư liên tục, nhưng những thư này sẽ không được chấp nhận.

Phân loại văn bản

2.1 Lý thuyết chung về phân loại văn bản

2.1.1 Bài toán phân loại văn bản

Phân loại văn bản là quá trình gán văn bản vào các nhóm đã được xác định trước, bao gồm hai dạng chính: phân loại nhị phân và phân loại theo cấp độ Phân loại nhị phân xác định xem văn bản có thuộc về nhóm hay không, trong khi phân loại theo cấp độ gán cho mỗi văn bản một giá trị thể hiện mức độ liên quan của nó với nhóm.

Việc phân loại văn bản truyền thống thường diễn ra thủ công, đòi hỏi người dùng đọc từng văn bản và gán vào nhóm phù hợp, dẫn đến tốn thời gian và chi phí khi số lượng văn bản lớn Do đó, cần thiết phải phát triển các công cụ phân loại văn bản tự động bằng cách sử dụng các thuật toán học máy (Machine Learning) Ngoài ra, còn có những thuật toán chuyên biệt cho các lĩnh vực cụ thể, như phân loại công văn, giấy tờ Hệ thống sẽ xác định đặc điểm của văn bản một cách tự động, ví dụ, khi phát hiện ký hiệu “NĐ” ở lề trên bên trái, hệ thống sẽ phân loại văn bản vào nhóm “Nghị định”, tương tự với các ký hiệu như “CV”.

Hệ thống phân loại văn bản dựa trên thuật toán "QĐ" sẽ phân chia văn bản thành nhóm "Công văn" và "Quyết định" Mặc dù thuật toán này hiệu quả, nhưng chỉ phù hợp với các nhóm dữ liệu đặc thù Đối với các văn bản ít đặc thù hơn, cần xây dựng thuật toán phân loại dựa trên nội dung và so sánh độ phù hợp với các văn bản đã được phân loại bởi con người, đây là nguyên tắc của thuật toán học máy Trong mô hình này, các văn bản đã được phân loại sẵn sẽ giúp hệ thống tìm ra đặc thù của từng nhóm Tập văn bản mẫu để huấn luyện gọi là tập huấn luyện, trong khi quá trình phân loại bằng tay được gọi là quá trình huấn luyện Sau khi máy hoàn tất quá trình học, người dùng có thể đưa vào các văn bản mới, và nhiệm vụ của máy là xác định nhóm phù hợp nhất mà nó đã được huấn luyện.

Phân loại văn bản đóng vai trò quan trọng trong việc tìm kiếm thông tin Từ các tập dữ liệu đã được phân loại, văn bản sẽ được đánh chỉ số theo từng lớp tương ứng Người dùng có thể dễ dàng tìm kiếm chủ đề mong muốn thông qua các truy vấn cụ thể.

Một ứng dụng quan trọng của phân loại văn bản là trong lĩnh vực hiểu văn bản, cho phép lọc ra các văn bản hoặc phần văn bản mà vẫn giữ được sự phong phú của ngôn ngữ tự nhiên.

Trong phân loại văn bản, một văn bản có thể phụ thuộc vào các giá trị rời rạc (đúng hoặc sai) hoặc các giá trị liên tục (số thực) Khi cần xác định xem văn bản thuộc về một nhóm nào đó hay không, giá trị liên tục có thể được chuyển đổi thành giá trị rời rạc bằng cách thiết lập ngưỡng Ngưỡng này được xác định dựa trên thuật toán và yêu cầu của người dùng.

2.1.2 Quá trình phân loại phân loại văn bản

Phân loại văn bản là một phần quan trọng trong khai phá văn bản, bao gồm các bước cơ bản như tiền xử lý văn bản, chuyển đổi văn bản thành dạng có cấu trúc và áp dụng các thuật toán học máy để khai thác thông tin từ những định dạng này Quá trình này bao gồm các giai đoạn cụ thể nhằm tối ưu hóa hiệu quả phân loại.

• Chuẩn bị tập dữ liệu huấn luyện (Training Data) và dữ liệu kiểm tra (Test

• Xử lý tách từ trong văn bản

• Biểu diễn văn bản theo định dạng có cấu trúc

• Áp dụng phương pháp học đối với dữ liệu huấn luyện

• Sử dụng tập dữ liệu kiểm tra để thẩm định lại phương pháp

• Đánh giá hiệu quả của phương pháp học

Một số bài toán đặc thù yêu cầu thuật toán không chỉ dừng lại ở việc đánh giá sau khi kiểm tra dữ liệu, mà còn tiếp tục học khi áp dụng cho các văn bản mới Hệ thống SpamAssassin là một ví dụ điển hình cho việc học liên tục trong quá trình ứng dụng.

2.2 Phương pháp phân loại dựa trên lý thuyết xác suất Bayesian

Các phương pháp phân loại văn bản gồm có:

• Phương pháp cây quyết định

• Phương pháp máy véc tơ hỗ trợ (Support Vector Machine- SVM)

Trong phần này chúng ta sẽ nghiên cứu kĩ về lý thuyết Bayesian áp dụng cho bài toán phân loại văn bản

Lý thuyết Bayes cho rằng xác suất xảy ra của một sự kiện, như việc một lá thư là thư rác, phụ thuộc vào sự kiện khác đã xảy ra, chẳng hạn như lá thư chứa từ khóa đặc biệt Điều này liên quan đến xác suất đồng thời của cả hai sự kiện và xác suất của sự kiện xảy ra trước đó, được thể hiện qua công thức xác suất có điều kiện.

Theo công thức nhân xác suất ta lại có:

Xác suất một thư thuộc lớp thư rác được xác định dựa trên các từ khóa trong nội dung thư, thông qua thống kê từ khóa trong các thư rác đã biết Nguyên tắc này là cơ sở của phương pháp phân loại thống kê, trong đó phân loại văn bản Bayesian là một trong những phương pháp phổ biến nhất được áp dụng trong nhiều ứng dụng phân loại văn bản.

2.2.1 Phân loại bằng phương pháp Bayesian

Trong phương pháp này, mỗi tài liệu được xem như thuộc về một lớp hoặc chủ đề duy nhất Quá trình tạo thành tài liệu được mô hình hóa thông qua các bước cụ thể.

1 Mỗi chủ để hay lớp có một xác suất tiên nghiệm Pr(c), với

Pr( ) 1 c c  Thực chất đây chính là xác suất mà tác giả của tài liệu lựa chọn ngẫu nhiên một chủ đề nào đó

2 Với mỗi lớp c, các tài liệu trong lớp được sinh ra với xác suất Pr(d | c)

Xác suất để tài liệu d được sinh ra từ lớp c được tính bằng công thức Pr(c)Pr(d | c) Điều này cho thấy mối liên hệ giữa lớp và tài liệu, từ đó giúp xác định xác suất hậu nghiệm cho mỗi tài liệu d.

Pr( ) Pr( | ) c d c c d =    d  (2.5) trong đó duyệt qua toàn bộ các lớp của tập mẫu

Pr(d | c) được ước lượng thông qua việc mô hình hóa phân bố có điều kiện giữa thuật ngữ và chủ đề, sử dụng tập các tham số  Việc ước lượng  được thực hiện dựa trên hai nguồn thông tin chính.

▪ Tri thức tiên nghiệm trước khi xem xét bất cứ tập tài liệu mẫu nào cho bài toán hiện tại

▪ Các thuật ngữ trong tập tài liệu mẫu D

Sau khi quan sát tập dữ liệu mẫu D, phân bố hậu nghiệm của là Pr(| D) Dựa trên những phân bố này, ta có được:

2.2.2 Mô hình học thống kê Naive Bayes

Mô hình học thống kê phổ biến nhất là naive Bayes learner nhờ vào tính đơn giản, tốc độ huấn luyện nhanh và khả năng cập nhật hiệu quả Trong mô hình này, các thuật ngữ được coi là độc lập, và phân bố chung của chúng được tính bằng tích của các phân bố thành phần, trong đó các phân bố thành phần phụ thuộc vào mô hình biểu diễn tài liệu Hai mô hình thường được sử dụng là mô hình nhị phân và mô hình đa thức.

Trong mô hình nhị phân, các tham số  c t , là xác suất một tài liệu c chứa thuật ngữ t ít nhất một lần Với định nghĩa này, ta có:

=  − (2.7) với W là tập các đặc trưng Ta không cần tính ,

 cho mỗi tài liệu thử, thay vào đó ta có thể viết lại biểu thức trên như sau:

Tính toán rồi lưu trữ trước tích (1 c t , ) t W

 − cho tất cả các lớp c Nhờ đó, trong thời gian kiểm thử, ta chỉ cần tính phép nhân đầu tiên mà thôi

Trong mô hình đa thức, mỗi lớp được xem như một con súc sắc với |W| mặt, trong đó các tham số  c t được thay thế bằng xác suất  c t cho mặt t W khi reo xúc sắc c Giả sử thuật ngữ t xuất hiện n(d,t) lần trong tài liệu d, độ dài của tài liệu d được tính bằng length d ( , ) l = t n d t Độ dài tài liệu L là một biến ngẫu nhiên tuân theo phân bố của từng lớp.

  là các hệ số đa thức Thông thường, người ta cũng giả thiết phân bố độ dài của tài liệu ở tất cả các lớp là như nhau

CẢI TIẾN, CÀI ĐẶT VÀ ĐÁNH GIÁ HỆ THỐNG HỌC BAYESIAN

Hệ thống lọc thư rác của SpamAssassin

SpamAssassin là một mô đun lọc thư rác mã nguồn mở phổ biến toàn cầu, được phát triển bởi Apache Được ra mắt hơn năm năm trước, SpamAssassin đã liên tục được cập nhật và cải tiến bởi cộng đồng mã nguồn mở.

SpamAssassin là một mô đun mã nguồn mở linh hoạt, được viết bằng Perl và C/C++, cho phép tích hợp dễ dàng vào nhiều hệ thống khác nhau Hiện nay, SpamAssassin đã thành công trong việc tích hợp với các máy chủ thư điện tử như SendMail, Qmail, Poffix, và Exim Bên cạnh đó, SpamAssassin cũng có khả năng hoạt động trên Windows thông qua nền Perl, mở rộng khả năng ứng dụng của nó.

SpamAssassin được hỗ trợ bởi nhiều tổ chức và người dùng toàn cầu, không chỉ phát triển bằng tiếng Anh mà còn có các bộ luật cho nhiều ngôn ngữ khác nhau, phục vụ cho nhu cầu của người dùng ở nhiều quốc gia.

• Tiếng Pháp (http://maxime.ritter.eu.org/Spam/french_rules.cf),

• TiếngĐức (http://zmi.at/x/70_zmi_german.cf),

Tiếng Trung, tiếng Nhật và tiếng Bồ Đào Nha có các tập luật riêng cho nhiều lĩnh vực khác nhau, bao gồm chống quảng cáo thuốc, thư lừa đảo và thư phát tán virus Để tìm hiểu chi tiết về các quy tắc này, bạn có thể truy cập vào các liên kết như [CCERT](http://www.ccert.edu.cn/spam/sa/Chinese_rules.cf) và [Apache Wiki](http://wiki.apache.org/spamassassin/CustomRulesets).

SpamAssassin là công cụ lọc thư rác hiệu quả, sử dụng các phương pháp như Blacklist/Whitelist, hệ thống phân loại Bayesian, danh sách tự động và tập luật cấu hình của người dùng Trong đó, phương pháp lọc Bayesian nổi bật với khả năng áp dụng cho nhiều ngôn ngữ khác nhau trên toàn cầu.

SpamAssassin là một công cụ hiệu quả trong việc lọc thư rác, và trong bài viết này, chúng ta sẽ khám phá cách thức hoạt động của nó, đặc biệt là trong việc phục vụ cho việc lọc thư rác tiếng Việt Để tìm hiểu thêm về các tính năng và cách sử dụng SpamAssassin, bạn có thể truy cập vào các tài nguyên hữu ích từ công cụ này.

• Tài liệu, mã nguồn và các hộ trợ http://SpamAssassin.apache.org

• Dùng CPANhttp://www.cpan.org

• Cài thủ công phải cập nhật các Module:

ExtUtils::MakeMaker, File::Spec, Pod::Usage, HTML::Parser, Sys::Syslog, DB_File, Digest::SHA1, và Net::DNS

Nếu dùng spamd và Spamc thì phải có Net::Ident và IO::Socket::SSL

• SpamAssassin 3.0 có thể sử dụng:

Vipul's Razor (http://razor.sourceforge.net)

Pyzor (http://pyzor.sourceforge.net)

• DCC (http://www.rhyolite.com/anti-spam/dcc/)

Khi cài đặt SpamAssassin chúng ta sẽ có các thành phần:

• Các mô đun viết bằng Perl

SpamAssassin hoạt động chủ yếu thông qua các mô đun viết bằng Perl, trong đó mô đun quan trọng nhất là Mail::SpamAssassin, chịu trách nhiệm gọi các mô đun khác Mô đun Mail::SpamAssassin::Conf chứa tài liệu cho các tệp cấu hình của SpamAssassin Các mô đun này thường được cài đặt trong thư mục như /usr/lib/perl5/site_perl/5.8.1, nhưng người dùng không cần phải biết chính xác vị trí của chúng, vì Perl sẽ tự động tìm kiếm trong thư mục cài đặt khi cần thiết.

SpamAssassin 3.0 giới thiệu một sự khác biệt giữa các mô đun chính của SpamAssassin và các mô đun plug-ins được viết bởi các hãng khác Tên của các mô dun đó được đặt phân cấp theo Mail::SpamAssassin::Plugin (Ví dụ Mail::SpamAssassin::Plugin::URIDNSBL)

SpamAssassin sử dụng các quy tắc để xác định xem một thông điệp có phải là thư rác hay không, và những quy tắc này được lưu trữ trong các tệp cấu hình tại thư mục /usr/share/spamassassin Để tìm vị trí của các tệp này, bạn có thể sử dụng lệnh: spamassassin local debug, và có khả năng thay đổi thư mục nếu cần thiết.

Các tệp cấu hình chung, như local.cf, điều khiển hành vi mặc định của SpamAssassin và spamd khi không có cài đặt riêng cho từng người dùng Tệp này được cài đặt trong thư mục /etc/mail/spamassassin Ngoài ra, các ứng dụng khác sử dụng mô-đun Mail::SpamAssassin cũng thường lưu trữ tệp cấu hình chung tại vị trí này.

Bạn có thể tìm thấy vị trí của các tệp này bằng lệnh : spamassassin local debug và có thể đổi thư mục được

Chương trình SpamAssassin, được phát triển bằng ngôn ngữ Perl, chấp nhận thư dưới dạng chuẩn đầu vào và sử dụng hàm Mail::SpamAssassin để phân tích, trả về thư đã được xử lý cùng với điểm spam, báo cáo và các chỉnh sửa khi phê duyệt Ngoài ra, SpamAssassin còn cung cấp nhiều hàm khác được mô tả trong các phần tiếp theo và thường được cài đặt trong thư mục /usr/bin.

Trong hệ thống xử lý lượng lớn thư, việc chạy mã SpamAssassin cho từng thư là rất tốn kém Do đó, chúng ta sẽ triển khai một dịch vụ (daemon) khởi động cùng hệ thống, hoạt động liên tục trong bộ nhớ để thực hiện kiểm tra thư hiệu quả.

Nó hoạt động trên cả Socket Unix và cổng TCP để tiếp nhận các yêu cầu kiểm tra thư, thực hiện các kiểm tra này và trả về kết quả cho người dùng.

Spamc là một chương trình client dành cho hệ thống Spamd, có chức năng nhận các email theo chuẩn đầu vào, chuyển tiếp chúng đến spamd và nhận lại kết quả dưới dạng chuẩn đầu ra.

Giống như SpamAssassin, công cụ này được viết bằng ngôn ngữ C và được biên dịch, giúp tránh việc phải chạy qua Perl Nó cung cấp các hàm cần thiết tương tự như SpamAssassin Thông thường, spamc và spamd được cài đặt trong thư mục /usr/bin.

Áp dụng các kỹ thuật phân loại văn bản tiếng Việt vào SpamAssassin

SpamAssassin ban đầu chỉ hỗ trợ tiếng Anh, nhưng đã được mở rộng để phù hợp với nhiều ngôn ngữ khác Tuy nhiên, hệ thống học Bayesian không hoàn toàn hiệu quả với các ngôn ngữ có đặc thù như tiếng Việt, do những khác biệt về cụm từ, phân tách ngữ pháp và từ điển từ dừng Điều này dẫn đến một số hạn chế trong việc xử lý thư điện tử tiếng Việt.

• Hạn chế về khả năng tách từ

Hệ thống học Bayesian của SpamAssassin sử dụng phương pháp tách văn bản dựa vào khoảng trắng, tuy nhiên, thuật toán này chỉ hiệu quả với tiếng Anh và các ngôn ngữ tương tự Đối với tiếng Việt, việc tách theo khoảng trắng chỉ cho phép nhận diện các âm tiết, dẫn đến việc lọc thư rác theo nội dung không đạt hiệu quả cao với phương pháp này.

Vì vậy để hệ thống hoạt động tốt, chúng ta phải thực hiện các thuật toán tách từ theo từ điển trong phân loại văn bản tiếng Việt

• Hạn chế về tập các từ dừng

Trong các ngôn ngữ tự nhiên, nhiều từ như giới từ và liên từ thường được sử dụng để cấu trúc câu nhưng lại không mang ý nghĩa nội dung Những từ này xuất hiện phổ biến trong văn bản mà không cung cấp thông tin về nội dung hay chủ đề chính của bức thư.

Từ dừng (stopword) là những từ mang ít ý nghĩa trong xử lý vì nó xuất hiện trong hầu hết các văn bản

Có thể Nếu Vì vậy

Sau khi Thì Nếu không

Trước khi Vì thế Loại trừ

Tất cả Cho nên Một số

Hầu như Là Với lại

Khi mà Không thể Quả thật

Bởi vì Thay vì Tất cả

Bảng 4 Một số từ dừng điển hình trong văn bản tiếng Việt

Hệ thống học Bayesian của SpamAssassin không loại bỏ các từ dừng trong tiếng Việt Phiên bản SpamAssassin 3.1.1 chỉ thực hiện việc loại bỏ một số từ dừng tiếng Anh, và điều này được cố định trong mã nguồn.

Trong quá trình huấn luyện SpamAssassin với văn bản tiếng Việt, sự xuất hiện thường xuyên của các từ dừng có thể gây ra sự sai lệch trong kết quả phân tích của hệ thống.

Việc xây dựng và sử dụng từ điển từ dừng là rất quan trọng để tối ưu hóa hiệu suất của SpamAssassin trong việc xử lý các thư tiếng Việt, như đã được tác giả Quang-Anh Tran trình bày trong nghiên cứu của mình.

Hệ thống Bayesian trong SpamAssassin có hạn chế về khả năng xuất dữ liệu học thành các tập luật để áp dụng cho các hệ thống khác Mặc dù SpamAssassin hoạt động dựa trên các tập luật linh hoạt cho phép người dùng chia sẻ, nhưng việc chia sẻ luật trong hệ thống Bayesian lại mất đi ý nghĩa Điều này là do các quy định của SpamAssassin liên quan đến Bayesian chỉ là các quy tắc chuyển đổi từ không gian xác suất sang không gian điểm, với các thông số chuyển đổi này là cấu hình riêng của từng hệ thống, không thể áp dụng cho các hệ thống khác nhau.

Các luật chia sẻ cần sử dụng từ ngữ có ý nghĩa rõ ràng Ví dụ, luật "body SALE_OFF /^\s*giá ưu đãi đặc biệt\b/i" mô tả về chương trình khuyến mãi, trong khi "score SALE_OFF 0.542" thể hiện mức độ hiệu quả của chương trình này.

Bayesian lưu trữ các từ khóa dưới dạng băm SHA1, nên việc lấy ra các luật có dạng như trên không thể thực hiện được

Vì vậy, việc xây dựng và sử dụng một từ điển vừa sử dụng trong tách từ và trong việc tạo luật là một biện pháp hiệu quả

Giao diện quản trị SpamAssassin chủ yếu là dòng lệnh, tuy nhiên, nhiều tổ chức đã phát triển giao diện Web nhằm cải thiện tính thuận tiện trong việc quản lý và cấu hình.

2.2.Xây dựng mô đun tách từ

Quá trình chuyển một thư về dạng có cấu trúc tổng quan như trong sơ đồ sau:

Hình 16 Quá trình chuyển thư về không gian véc tơ dạng Boolean

SpamAssassin đã thực hiện hiệu quả các bước tiền xử lý trong quá trình xử lý thư nhờ vào khả năng xử lý biểu thức chính quy mạnh mẽ của Perl.

Sau khi thực hiện tiền xử lý, văn bản sẽ được chuyển đổi thành dạng "sạch", chỉ bao gồm các ký tự Tiếng Việt, dấu cách và dấu chấm Văn bản này được định dạng thành các xâu chuẩn, với mỗi xâu được phân cách bởi một dấu chấm.

Vì vậy,chúng ta tập trung vào xử lý hai phần đó là tách từ khóa và loại bỏ từ dừng

Xây dựng và sử dụng từ điển để tách từ là phương pháp hiệu quả cho phân loại văn bản tiếng Việt, với từ điển gồm khoảng 65.000 từ thông dụng Từ điển này được lưu trữ trong cơ sở dữ liệu MySQL, một hệ quản trị cơ sở dữ liệu nguồn mở với hiệu năng cao Việc chọn MySQL cũng nhằm đồng bộ với cơ sở dữ liệu từ khóa (bayes_token) của SpamAssassin.

Chúng ta sử dụng hai từ điển có mã Unicode, đó là từ điển tách từ và từ điển từ dừng với lược đồ như sau:

`value` varchar(40) character set utf 8 collate utf 8_unicode_ci NOT NULL def ault '',

`hash` varbinary(15) NOT NULL def ault '',

`f lag` tinyint(1) NOT NULL def ault '0',

) ENGINE=InnoDB DEFAULT CHARSET=utf 8 COLLATE=utf 8_bin;

2.Tách từ khoá 3.Loại từ dừng

Thư dạng chuẩn Văn bản biểu diễn theo tần suất dạng Boolea n

`value` varchar(60) collate utf 8_bin NOT NULL def ault '',

`hash` varbinary(5) NOT NULL def ault '',

`f lag` tinyint(1) NOT NULL def ault '0',

) ENGINE=InnoDB DEFAULT CHARSET=utf 8 COLLATE=utf 8_bin;

Value dùng để lưu trữ giá trị của từ, Hash ghi lại giá trị của năm byte cuối từ hàm băm sha1 của value, và Flag xác định trạng thái sử dụng của từ.

Với từ điển gồm 70.000 từ, chúng ta có thể lưu trữ vào bộ nhớ bằng cách sử dụng con trỏ Mỗi từ yêu cầu 8 byte cho con trỏ và 5 byte để ghi giá trị băm của từ đó.

Vì vậy, với kích thước từ điển là 1510 KB, chúng ta phải tiêu tốn lượng bộ nhớ:

Hiệu năng của thuật toán phụ thuộc vào yếu tố thời gian của giải thuật, với kết quả tính toán là 2393 KB, điều này cho thấy nó hoàn toàn chấp nhận được trong hệ thống hiện nay.

2.2.3 Xây dựng mô đun tách từ

Quá trình huấn luyện và đánh giá

3.1 Các yêu cầu về môi trường

SpamAssassin là một phần mềm mã nguồn mở có khả năng hoạt động hiệu quả trên cả Windows và các hệ điều hành mã nguồn mở khác Để tích hợp dễ dàng với các máy chủ thư điện tử như Qmail, Sendmail, Postfix và Exim, chúng ta sẽ cài đặt SpamAssassin trên hệ thống mã nguồn mở Cấu hình của chúng ta sẽ tập trung vào việc sử dụng phiên bản mới nhất của SpamAssassin, cụ thể là Mail-SpamAssassin-3.2.4, đã được cải tiến.

• Hệ điều hành: Linux (Fedora, Red Hat,….)

• Máy chủ thư điện tử : Một trong 4 máy chủ Qmail, Sendmail, Postfix, Exim

• Perl: Perl 5.8.8 Đã cài đặt các Mô đun: o HTML::Parser >= 3.24 (from CPAN) o DB_File o DBI o DBD::mysql o Net-DNS o IP-Country o Mail-SPF o Error o Digest-SHA

• Máy chủ CSDL MySQL server

Ngoài ra, các mô đun bằng Perl tùy chọn khác cũng có thể cài đặt để tăng hiệu năng của SpamAssassin

3.2 Cài đặt và cấu hình

Chúng ta thực hiện cài đặt và cấu hình với các yêu cầu trong mục 1 được thỏa mãn Thật vậy, các bước cài đặt được thực hiện như sau:

2 Thêm hai gói cho phần tách từ cho thư tiếng Việt

3 Thay thế Mô đun Mail:SpamAssassin:Bayes của Mail-SpamAssassin-3.2.4 bằng Mô đun đã cải tiến

4 Tạo CSDL cho SpamAssassin trong MySQL và hai b ảng viword và vistopword bằng các câu SQL như trên

5 Cập nhật hai từ điển tiếng Việt, từ điển tách từ và từ điển từ dừng

3.3.Chiến lược và công cụ huấn luyện

Có hai chiến lược huấn luyện cho hệ thống phân loại Bayesian: huấn luyện tất cả và huấn luyện nếu có lỗi Chiến lược huấn luyện tất cả yêu cầu hệ thống phải học từ tất cả các thư, giúp phản ứng với sự thay đổi của thư rác nhưng lại nhạy cảm với những biến đổi xấu và tốn kém tài nguyên Ngược lại, chiến lược huấn luyện khi có lỗi chỉ yêu cầu huấn luyện lại cho các thư bị phân loại sai, tiết kiệm tài nguyên nhưng không đáp ứng tốt với sự thay đổi của thư rác.

Theo nghiên cứu của Greg Louis, một chiến lược hiệu quả là áp dụng huấn luyện toàn bộ trong giai đoạn đầu và chuyển sang huấn luyện khi phát hiện lỗi ở giai đoạn sau Ông đã chỉ ra rằng giới hạn chuyển đổi là 10.000 thư Để đảm bảo độ chính xác của phương pháp này, chúng ta cần cấu hình SpamAssassin chỉ hoạt động dựa trên phương pháp Bayesian.

Mô đun sa-learn là giao diện chính để huấn luyện hệ thống phân loại thư Để bắt đầu, bạn cần thu thập cơ sở dữ liệu gồm thư rác và thư sạch, có thể lưu trữ dưới định dạng maildir (mỗi thư là một tệp) hoặc mbox (mỗi tệp chứa nhiều thư) Đặc biệt, việc thu thập thư rác nên được thực hiện liên tục để đạt hiệu quả tối ưu trong quá trình huấn luyện.

Bước tiếp theo là sử dụng mô đun sa-learn cho từng thư mục thư, với các tham số spam và ham Dưới đây là kịch bản cho quá trình học với thư mục dạng mbox, giả định rằng chúng ta sẽ thực hiện cho từng người dùng.

Ví dụ 1 Huấn luyện qua thư mục thư dạng mbox

$ sa-learn mbox spam Mail/spam

$ sa-learn mbox ham mail/myproject

$ sa-learn mbox ham /var/spool/mail/$LOGNAME

Ví dụ 2: Huấn luyện qua thư mục thư dạng maildirs

$ sa-learn no-rebuild spam mail/spam

$ sa-learn no-rebuild ham mail/INBOX

$ sa-learn no-rebuild ham mail/myproject

Khi sử dụng lần đầu hệ thống phân loại Bayesian, bạn sẽ nhận thấy sự khác biệt trong cách kiểm tra thư Sau khi được huấn luyện với đủ số lượng thư rác và thư sạch, điểm số cho mỗi loại thư sẽ thay đổi theo hai hướng khác nhau.

Trong quá trình phân loại thư rác, bạn sẽ gặp các luật như BAYES_44 và BAYES_80 Các luật này, được thử nghiệm trong tệp 23_bayes.cf, giúp hệ thống phân loại Bayesian xác định xác suất của một bức thư là thư rác Cụ thể, luật BAYES_44 áp dụng khi xác suất thư rác nằm trong khoảng từ 0.44 đến 0.4999, trong khi luật BAYES_80 áp dụng cho xác suất từ 0.80 đến 0.90 Khi xác suất thư rác vượt quá 0.5, điểm số cho giả thuyết thư rác sẽ được tăng cường, và ngược lại.

Hệ thống phân loại Bayesian vượt trội hơn các hệ thống luật cố định do các luật tĩnh không linh hoạt và được gán điểm một cách cứng nhắc Điều này dẫn đến kết quả kém mềm dẻo trong nhiều trường hợp, cho thấy sự hiệu quả của hệ thống phân loại Bayesian.

Việc tiếp tục huấn luyện hệ thống là rất quan trọng để duy trì hiệu suất cao Giống như trong quá trình huấn luyện ban đầu, cần bổ sung các thư đã được xác định là thư rác hoặc thư sạch Nếu điểm số của thư vượt qua ngưỡng tự động học, hệ thống sẽ tự động thực hiện theo cấu hình đã thiết lập Ngoài ra, bạn có thể sử dụng lệnh sa-learn spam và sa-learn ham để thực hiện quá trình này.

Việc thực hiện thủ công có thể thông qua chương trình đọc thư hoặc webmail, và cũng có thể thao tác trực tiếp trên thư mục nếu có đủ quyền Trong hệ thống mà chúng ta đang xây dựng, quy trình này sẽ được tự động hóa, đồng thời các thư rác có thể xuất phát từ phản hồi của người dùng hoặc từ nhiều nguồn khác nhau.

Để đánh giá hiệu năng của hệ thống lọc thư rác, có nhiều tiêu chí quan trọng như độ chính xác, tỷ lệ lỗi, thời gian xử lý và không gian bộ nhớ Tuy nhiên, thường thì các thông số cụ thể được sử dụng để đánh giá hiệu quả của hệ thống này.

• FN (False Negative): Số lượng thư rác được xem là thư sạch, ký hiệu NSH

• FP(False Positive): Số lượng thư sạch bị đánh dấu nhầm là thư rác, ký hiệu

• TN (True Negative): Số lượng thư sạch được xem là thư sạch, ký hiệu NHH

• TP (True Positive):Số lượng thư rác được đánh dấu là thư rác, ký hiệu NSS

Do các tham số không thuận tiện cho việc so sánh giữa các hệ thống và các lần huấn luyện với số lượng dữ liệu mẫu khác nhau, nên cần thiết phải đưa ra các tiêu chí thể hiện tỷ lệ để dễ dàng so sánh Ví dụ, trong nghiên cứu của Tran Anh Quang [13], hai tiêu chuẩn được sử dụng là SR (Spam Recall) và HE (Ham Error).

= + (4.2) Nhưng với 4 thông số độc lập trên thì 2 tỷ lệ trên chưa đánh giá đủ toàn bộ hệ thống

Các phương pháp đánh giá khác nhau thường đi kèm với những công thức đặc thù riêng Chẳng hạn, trong tài liệu [2] ở trang 6, các tác giả đã áp dụng TCR (Tỷ lệ Chi phí Tổng) để đánh giá hệ thống của họ.

Để thuận tiện trong việc so sánh và phù hợp với hệ thống học trong quá trình huấn luyện thử nghiệm, tôi đã tiến hành đánh giá dựa trên các tiêu chí định lượng và không định lượng.

Tiêu chí 1 Sự thay đổi của dữ liệu học khi thực hiện học

3.5.2 Nguồn dữ liệu dùng cho thí nghiệm và đánh giá

Các nguồn thư rác thường đến từ trang rao vặt, các công ty bất động sản, mỹ phẩm, máy tính, và một số tờ báo phản động Ngược lại, nguồn thư sạch là những thư cá nhân được chọn lọc từ các trao đổi thông tin hàng ngày Nếu thư được gửi không đúng đối tượng, có nội dung phản động hoặc quảng cáo, chúng sẽ bị xem là thư rác.

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN

Trong quá trình thực hiện đồ án tốt nghiệp này, em đã đạt được những kết quả sau:

• Tìm hiểu được những kiến thức cơ bản về hệ thống thư điện tử, thành phần của một bức thư điện tử, cách thức hoạt động của hệ thống

• Tìm hiểu về hệ thống lọc thư rác, các phương pháp lọc thư rác, đặc biệt là phương pháp lọc thư rác dựa trên lý thuyết Bayesian

• Tìm hiểu lý thuyết chung về phân loại văn bản

• Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng Việt trên công nghệ của SpamAssassin

Bên cạnh đó, đồ án cần khắc phục một số điểm chưa tốt

• Giao diện dòng lệnh của SpamAssassin còn khó dùng với người chưa thông thạo

• Chưa huấn luyện hệ thống với một bộ dữ liệu mẫu đủ lớn (trên 1000 thư), đa dạng để có kết quả chính xác và ổn định

Hướng phát triển tiếp theo

Trong thời gian tới em dự kiến sẽ tiếp tục nghiên cứu và phát triển hệ thống theo các hướng:

• Xây dựng một giao diện quản trị hệ thống giúp cho việc thao tác, quản lý được dễ dàng, trực quan hơn

• Huấn luyện cho hệ thống với một bộ dữ liện đủ lớn

• Hỗ trợ thêm một số loại mã tiếng Việt khác (VNI Windows, TCVN3, )

• Nghiên cứu thêm các thuật toán tách từ khác hiệu quả hơn cho thư tiếng Việt.

Ngày đăng: 13/06/2022, 21:19

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[2] Quang-Anh Tran, Real-time statistical rules for spam detection, Haixin Duan, Xing Li Network Research Center, Tsinghua University, Beijing 100084 , China Email: qa@ccert.edu.cn Sách, tạp chí
Tiêu đề: Real-time statistical rules for spam detection
[3]Androutsopoulos I., Koutsias, J., Chandrinos, K.V., Paliouras, G., Spyropoulos, C.D., 2000. An evaluation of Naive Bayesian anti-Spam filtering. Proceedings of the Workshop on Machine Learning in the New Information Age, 11th European Conference on Machine Learning, Barcelona, Spain Sách, tạp chí
Tiêu đề: An evaluation of Naive Bayesian anti-Spam filtering
[4] Christian Kaul, Johannes Knabe, Tobias Lang, Volker Sperschneider Filtering Spam E-mail with Support Vector Machines, Publications of the Institute of Cognitive Science Volume 8-2004 Sách, tạp chí
Tiêu đề: Filtering Spam E-mail with Support Vector Machines
[5] Alan Schwartz, SpamAssassin, O'Reilly-July 2004- 0-596-00707-8 [6]RFC2822, Internet Message Format Sách, tạp chí
Tiêu đề: SpamAssassin", O'Reilly-July 2004- 0-596-00707-8 [6]RFC2822
[8]Tống Đình Quỳ, Giáo trình xác suất thống kê toán học, Đại Học Bách Khoa Hà Nội, 2000 Sách, tạp chí
Tiêu đề: Giáo trình xác suất thống kê toán học
[9] Vũ Ngọc Tiệp, Tìm hiểu các giải thuật trích chọn từ khoá , Đồ án Tốt nghiệp đại học Khoa Công nghệ Thông tin, Đại học Bách Khoa Hà Nội, 2004 Sách, tạp chí
Tiêu đề: Tìm hiểu các giải thuật trích chọn từ khoá
[10] Gary Robinson, A Statistical Approach to the Spam Problem , The Original Monthly Magazine of the Linux Community 2003 -03-01 Sách, tạp chí
Tiêu đề: A Statistical Approach to the Spam Problem
[11] Graham, P., Better Baysian Filtering. In Proceedings of Spam Conference (2003). http://spamconference.org/proceedings2003.html Sách, tạp chí
Tiêu đề: Better Baysian Filtering." In "Proceedings of Spam Conference
Tác giả: Graham, P., Better Baysian Filtering. In Proceedings of Spam Conference
Năm: 2003
[13] Eui-Hong (Sam) Han, George Karypis, Vipin Kumar, Text Categorization Using Weight Adjusted k-Nearest Neighbor Classification, 1999 Sách, tạp chí
Tiêu đề: Text Categorization Using Weight Adjusted k-Nearest Neighbor Classification
[14] Sahami, M., Dumais,S., Heckerman, D., and Horvitr E, A Bayesian Apprach to Filtering Junk E-Mail. In Learning For Text Categorization , Papers form AAAI Workshop. Madison Wisconsin. AAAI Techniacal Report WS-98-05,1998 Sách, tạp chí
Tiêu đề: A Bayesian Apprach to Filtering Junk E-Mail
[15] Gary Robinson , A Statistical Approach to the Spam Problem , Linux Journal- http://www.linuxjournal.com/article/6467 Sách, tạp chí
Tiêu đề: A Statistical Approach to the Spam Problem
[1] Jonathan A. Zdziarski, Ending Spam: Bayesian Content Filtering and the Art of Statistical Language Classification, No Starch Press 2005 Khác
[7]RFC2045-RFC2046-RFC2047-RFC2048-RFC2049, Multipurpose Internet Mail Extensions Khác

HÌNH ẢNH LIÊN QUAN

Hình 1. Mơ hình Internet mail - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Hình 1. Mơ hình Internet mail (Trang 11)
Hình 2. Hoạt động của hệ thống thư điện tử - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Hình 2. Hoạt động của hệ thống thư điện tử (Trang 12)
Hình 3. Các giao thức trong hệ thống thư điện tử - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Hình 3. Các giao thức trong hệ thống thư điện tử (Trang 15)
Hình 4. Các bước thực hiện giao thức SMTP - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Hình 4. Các bước thực hiện giao thức SMTP (Trang 15)
Hình 5. Giao thức IMAP - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Hình 5. Giao thức IMAP (Trang 16)
Hình 7. Các thành phần của máy chủ thư điện tử - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Hình 7. Các thành phần của máy chủ thư điện tử (Trang 18)
Hình 8. Hoạt động gửi thư qua mạng sử dụng hệ thống tên miền - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Hình 8. Hoạt động gửi thư qua mạng sử dụng hệ thống tên miền (Trang 19)
Bảng 1.Tên các trường trong header - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Bảng 1. Tên các trường trong header (Trang 22)
Hình 10. Con đường thơng thường của một bức thư điện tử - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Hình 10. Con đường thơng thường của một bức thư điện tử (Trang 31)
Hình 12. Một tình huống nhập nhằng trong phân tách câu - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Hình 12. Một tình huống nhập nhằng trong phân tách câu (Trang 40)
Hình 13. Quá trình học một bức thư của mơđun lọc Bayesian trong SpamAssassin - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Hình 13. Quá trình học một bức thư của mơđun lọc Bayesian trong SpamAssassin (Trang 45)
Hình 14. Quá trình quét một thư bằng phương pháp lọc Bayesian - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Hình 14. Quá trình quét một thư bằng phương pháp lọc Bayesian (Trang 47)
Hình 15. Tích hợp SpamAssassin vào Procmail - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Hình 15. Tích hợp SpamAssassin vào Procmail (Trang 56)
Bảng 2.Các bộ phận của thư và các chỉ thị. - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
Bảng 2. Các bộ phận của thư và các chỉ thị (Trang 59)
Chúng ta cĩ bảng các cờ và ý nghĩa của các cờ: - Nghiên cứu và thiết kế hệ thống lọc thư rác tiếng việt trên linux
h úng ta cĩ bảng các cờ và ý nghĩa của các cờ: (Trang 60)

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w