Xây dựng quy tắc lọc tiếng Việt

Một phần của tài liệu Nghiên cứu các phương pháp lọc thư rác tại việt nam và trên thế giới, xây dựng và đề xuất phương án lọc thư rác tiếng việt (Trang 53 - 60)

Chương 3. Đề xuất và Thực nghiệm

3.1. Đề xuất giải pháp lọc thư rác

3.1.3. Xây dựng quy tắc lọc tiếng Việt

Song song với việc sử dụng Nạve Bayes và SVM làm phương pháp lọc thư rác, hệ thống thực nghiệm sử dụng các luật đã có được nghiên cứu sẵn để lọc thư rác nhanh hơn mà không cần phải trải qua quá trình huấn luyện, học của Bayes. Ngồi ra, lọc theo quy tắc cũng tăng thêm tính chính xác của Nạve Bayes vì Nạve Bayes phụ thuộc nhiều vào dữ liệu mẫu, nếu dữ liệu mẫu khơng có độ chuẩn cao trong trường hợp thư điện tử thu thập được không có đủ phổ rộng cao. Việc xây dựng quy tắc dựa trên n-gram hoàn toàn phù hợp với tính chất của Tiếng Việt bao gồm cả từ đơn và từ ghép.

Ngoài, ra quá trình tự động trích xuất tokens sẽ gặp phải rất nhiều cụm từ phổ thông như “dear”, “thân mến”, “kính gửi”, “do not”, “reply”, do đó, để tăng tính chính xác cho bộ lọc, cần có sự can thiệp của con người để loại bỏ các token này. Do đó, luận văn này lấy các token được trích xuất tự động và từ đó xây dựng lên các quy tắc cho các “từ và cụm từ kép” theo thuật toán Generic Algorithm.

Quá trình để tạo ra 1 quy tắc như sau:

1- Thu thập dữ liệu huấn luyện

Đầu tiên ta phải thu thập một tập các thư rác và thư “ham” (không phải thư rác) và cố gắng thu thập nguồn thư đủ chuẩn để bao trùm được nhiều trường hợp và lĩnh vực.

2- Tiền xử lý

Sau đó, các nội dung văn bản sẽ được tiền xử lý để lấy nội dung chính:

4. Giải mã cấu trúc thư MIME

5. loại bỏ các phần không phải văn bản hoặc các phần không được hiển thị cho người xem (chẳng hạn như tệp đính kèm)

6. giải mã văn bản được trích dẫn hoặc mã base64 7. lọc lấy nội dung của trang HTML (nếu có)

8. Chuẩn hóa khoảng trắng, “đây \nlà \ n1 \ nbài” -> “đây là 1 bài”

3- Phân loại và xử lý

Tiếp theo, tệp dữ liệu được xử lý và phân loại bằng thuật toán sau:

Chiết xuất N-gram

Cho chạy tuần từ từng thư điện tử trong tập hợp spam. Mỗi thư được gắn một ID ngắn. Cắt tất cả ngoại trừ 32 kbytes đầu tiên của văn bản (thuật toán này cho rằng nội dung thư của spammers thường không quá 32 KBs, nội dung thể hiện spam chủ yếu ở 32Kbbytes). Lưu bản sao của chuỗi văn bản rút gọn này.

Chia văn bản thành "từ" – là phần ký tự không có khoảng trắng được phân tách bằng dấu cách. Nén mỗi “từ” thành một ID ngắn hơn để tiết kiệm dung lượng:

Ví dụ như:

"Đây là một bài kiểm tra" được nén thành "a b c d".

Sau đó từ điển nén này được chia sẻ cho tất cả các thư để phục vụ tra cứu ngược sau này.

Sau đó chia ra thành đoạn mã 2 từ hoặc 3 từ (còn được gọi là N-gram):

Ví dụ như mã rút gọn sẽ "a b c d" được chia thành các cặp mã như sau ["a b", "b c", "c d", "a b c", "b c d"].

Loại bỏ N-gram trùng lặp, vì vậy mỗi N-gram chỉ xuất hiện một lần trên mỗi thông báo. Đếm và tăng bộ đếm mã (token counter) và thêm ID vào

“message subset hit”.

Tiếp theo, chúng ta sẽ chạy thuật toán cho thư hợp lệ. Thực hiện cùng một thuật toán, tuy nhiên, không cắt gọn văn bản, không cắt ở 32KB và thay vì tăng token counter, khi tìm thấy cụm từ N-gram chỉ cần xóa danh sách trong

“token counter” và “message subset hit”.

Cuối quy trình, sau khi tất cả thư rác và thư hợp lệ được xử lý, chúng ta sẽ có:

a. Bảng thống kê số lần xuất hiện của các văn bản chứa các cụm từ N-gram.

b. Bảng thống kê phụ chứa thông tin chính xác về tập con nào của văn bản chứa N-gram đó.

c. Bảng tra cứu đảo ngược mã (token-to-words).

Sau đó chạy tuần tự bảng hit-counts table để loại bỏ các mục không thường xuyên và một lần (loại bỏ những cụm từ có xác suất xuất hiện thấp).

Tạo một băm ánh xạ các tập con với tập các mẫu N-gram của tập con đó.

Đối với mỗi tập hợp con, hãy chọn một N-gam duy nhất và lưu lại số lần xuất hiện.

Chạy lại cho các tập con tin nhắn, theo số lần xuất hiện của chúng. Lấy tất cả các mẫu của tập con thông báo, giải mã N-gam trong tất cả các mẫu bằng cách sử dụng bảng tra cứu ngược và áp dụng bước sau sau cho tập mẫu đó:

Thu gọn các mẫu

Đầu vào là một mảng các mẫu N-gram, cùng các tập con của văn bản.

Chúng ta cũng có một loạt các chuỗi văn bản rút gọn của tất cả các thư rác đã lưu, từ bước trích xuất N-gram. Do đó, chúng ta có thể áp dụng một dạng của thuật toán BLAST để tra cứu ngược.

Lấy mẫu đầu tiên, sau đó tìm bất kỳ một thư nào từ mảng thư đã lưu so sánh với mẫu này. Tìm ký tự đơn trước mẫu trong thư và thêm ký tự đó vào mẫu. Xem số lần xuất hiện cho mẫu mới này có bằng mẫu cũ không; nếu không, khôi phục lại mẫu cũ và dừng lại. Nếu là đầu văn bản của thư, dừng lại. Sau đó, áp dụng thuật toán tìm về phía sau của ký tự mẫu.

Cuối cùng, bạn đã mở rộng mô hình từ N-gram cơ bản đến mức có thể để đi theo cả hai hướng trước và sau của mẫu cho đến khi chạm đầu hoặc cuối văn bản.

Tiếp theo, loại bỏ tất cả các mẫu trong mảng mẫu được cộng dồn lại (tức là xuất hiện trong) mẫu mở rộng mới này.

Thuật toán này chạy với 3 từ N-gam sẽ cho kết quả nhanh hơn 2 từ N- gam đơn thuần.

Cuối cùng, xuất ra một dòng liệt kê tỷ lệ phần trăm số tin nhắn rác xuất hiện bằng cách tính:

Tỉ lệ = số lần xuất hiện/ tổng số thư rác

và danh sách các mẫu mở rộng cho tập con của tin nhắn đó, sau đó để chuyển sang tin nhắn tiếp theo, có cấu trúc như sau:

Hình 3.11: Tỉ lệ xuất hiện của các cụm từ

Chi tiết về thống kê tỉ lệ phần trăm của các cụm từ tiếng Việt được xuất hiện nhiều nhất trong thư rác được biểu diễn như hình dưới:

Hình 3.12. Thống kê các cụm từ tiếng Việt xuất hiện nhiều nhất trong dữ liệu huấn luyện

Cách tính điểm cho các cụm từ

Để tính điểm cho các cụm từ, luận văn này đề xuất sử dụng thuật toán Perceptron (sử dụng mô hình mạng nơron).

Perceptron là dạng mạng nơron đơn giản nhất. Nó bao gồm một chức năng chuyển và một chức năng kích hoạt. Chúng mô phỏng tốc độ phóng điện của một nơron sinh học theo thời gian.

Hàm truyền là tổng của các trọng số và đầu vào. Nó mô phỏng điện thế màng của một tế bào thần kinh. Khi tích lũy điện tích trên màng vượt quá một ngưỡng nhất định, tế bào thần kinh kích hoạt, gửi một xung điện xuống sợi trục. Việc triển khai này sử dụng hàm chuyển tuyến tính:

=

+

=bias ni wi xi x

f( ) 0 * 7

Trong đó bias là độ biến thiên wi: là trọng số,

xi: bật hoặc tắt bộ lọc (0 là tắt, 1 là bật).

Điều này khá giống với cách thức hoạt động của hệ thống điểm của lọc thư rác nếu đặt biến thiên (bias) là là 0, w_i là điểm cho quy tắc i và x_i là bật hoặc tắt bộ lọc.

Chức năng kích hoạt mô phỏng luồng điện chạy xuống sợi trục. Nó lấy đầu ra của hàm truyền làm đầu vào và biến đổi nó, sử dụng hàm activation sau:

))) ( exp(

1 ( ) 1

(x f x

y = + − 8

Với y(x) là hàm phi tuyến tính.

Hàm phi tuyến tính này hạn chế đầu ra của hàm truyền từ 0 đến 1. Trên biểu đồ, nó trông giống hình chữ S, x thì tiến đến âm vô cùng và 1 khi x tiến tới dương vô cùng. Hệ số góc của hàm lớn nhất khi x = 0 và giảm dần khi tiếp cận đường cong.

Phương pháp phổ biến nhất để huấn luyện mạng nơron được gọi là

‘gradient descent’. Nó liên quan đến việc điều chỉnh lặp đi lặp lại các tham số của mạng để rằng tỷ lệ lỗi trung bình luôn giảm. Điều này được thực hiện bằng cách phương dốc nhất của gradient lỗi, giảm giá trị của hàm lỗi cho lần lặp tiếp theo của thuật toán.

Nếu cả chức năng chuyển và chức năng kích hoạt đều khả vi, gradient lỗi của mạng nơ-ron có thể được tính toán bằng trọng số và độ chệch. Nếu không đi vào giải tích, lỗi gradient cho một perceptron có chức năng truyền tuyến tính. Hàm activation logig và hàm lỗi bình phương trung bình là:

E (x) = y (x) * (1-y (x)) * (ydự kiến - y (x)) 9 Với E(x) là tỉ lệ lỗi trung bình. Với y(x) là hàm phi tuyến tính.

Các trọng số được cập nhật bằng cách sử dụng hàm:

wi = wi + E (x) * xi * rate 10 Với: wi là trọng số

E(x): tỉ lễ lỗi trung bình rate: tỉ lệ học

Vì các lần truy cập quy tắc lọc thư rác không nhiều nên phần dốc xuống cơ bản thuật toán là khó khả thi. Do đó, cần sử dụng một biến thể được gọi là Giảm dần độ dốc ngẫu nhiên.f

Thay vì thực hiện cập nhật hàng loạt, tập huấn luyện được thực hiện một cách ngẫu nhiên, làm tăng dần các bản cập nhật. Ngoài ra, trong việc triển khai này, tỷ lệ học tập là được sửa đổi bởi số lần xuất hiện của quy tắc cho một phiên bản huấn luyện nhất định. Kết hợp với nhau, chúng cho phép tính toán được trọng số tốt cho các quy tắc không thường xuyên xảy ra.

Cuối cùng, trọng số được chuyển đổi thành điểm và xuất ra định dạng tệp quen thuộc. Trọng số (weight) được chuyển đổi thành điểm (score) bằng cách sử dụng chức năng này

score = threshold * weight/bias 11 Với score là điểm số,

threshold: ngưỡng

weight: trọng số bias: độ biến thiên.

Dựa trên thuật toán trên, luận văn này đã xây dựng được 79 quy tắc cho bộ lọc tiếng Việt, có nhiều hơn 79 n-grams, tuy nhiên, chỉ những token được xuất hiện với tỉ lệ cao và có nghĩa sẽ được sử dụng để tạo quy tắc. Quá trình này phải tự sàng lọc cẩn thận nếu các từ ngữ được gọi là “common words”

không phải spam có tỉ lệ xuất hiện cao sẽ dễ dẫn đến kết quả âm tính giả khiến cho nhiều thư điện tử hợp lệ sẽ bị đánh dấu là spam. Các từ ngữ “chung chung”

được sử dụng thường xuyên không có ý nghĩa spam sẽ được loại bỏ, ví dụ như

“Do not”, “thư điện tử”, “sincerely” mặc dù có tần suất xuất hiện cao. Trong

giới hạn của luận văn này, 79 quy tắc đã được xây dựng và áp dụng, giúp cho việc lọc thư rác được nhanh hơn, hiệu quả cao đối với các hệ thống chưa huấn luyện học Nạve Bayes hoặc hệ thống mới xây dựng lại, ví dụ:

Hình 3.13 Các quy tắc tạo ra để ổn định hệ thống lọc

Các quy tắc trên được viết để lọc nội dung thư (body) do chủ yếu nội dung thư rác nằm ở nội dung thư, do nội dung trích xuất để xây dựng quy tắc trên lấy từ nội dung thư.

Sau khi bộ quy tắc được xây dựng, các bộ quy tắc này sẽ được lưu trong tệp tin có tên là myrules.cf trong đường dẫn

/opt/zimbra/data/spamassassin/localrules/ hoặc

opt/zimbra/data/spamassassin/rules/ hoặc lưu trực tiếp lên file cấu hình của hệ thống hoặc lưu ở mục ~/.spamassassin/user_pref, nơi lưu trữ những tùy chỉnh của người dùng.

Khi khởi động hệ thống, Spamassassin sẽ kiểm tra thư theo các quy tắc đã lưu trên các đường dẫn trên, nếu tìm thấy một quy tắc khớp thì điểm sẽ được cộng lại. Điểm cuối cùng là tổng điểm của các quy tắc và điểm được tạo ra bởi thuật tốn Nạve Bayes.

Một phần của tài liệu Nghiên cứu các phương pháp lọc thư rác tại việt nam và trên thế giới, xây dựng và đề xuất phương án lọc thư rác tiếng việt (Trang 53 - 60)

Tải bản đầy đủ (PDF)

(72 trang)