2. Áp dụng các kỹ thuật phân loại văn bản tiếng Việt vào SpamAssassin
2.2.4. Xây dựng mơđun loại bỏ từ dừng
• Đầu vào:
Biểu diễn khơng gian véc tơ dạng Boolean của bức thư hay đơn giản là mảng các từ cĩ trong thư nằm trong từ điển
• Nhiệm vụ Bao gồm
o Loại bỏ các từ dừng nằm trong từ điển từ dừng Nếu xuất hiện từ dừng mới, thêm vào từ điển.
• Đầu ra:
Đầu ra là biểu diễn khơng gian véc tơ dạng Boolean của bức thư khơng chứa các từ dừng hay đơn giản là mảng các từ cĩ trong thư nằm trong từ điển tách từ mà khơng nằm trong từ điển từ dừng.
• Giải thuật:
o Lấy từ điển dừng tư CSDL, đưa từ điển từ dừng vào bộ nhớ theo thứ tự từ điển
o Đối với mỗi từ tách được trong văn bản, tìm kiếm bằng phương pháp nhị phân
o Nếu từ đĩ xuất hiện trong mảng từ dừng thì loại từ đĩ
Do thuật tốn dùng phương pháp tìm kiếm nhị phân nên độ phức tạp của thuật tốn là O(mlogn) với n là số từ dừng và m là số lượng từ khĩa được tách ra từ một bức thư.
Với các thơng số thơng thường, chúng ta cĩ thể ước lượng độ phức tạp của thuật tốn
N=100 và m=511 ta cĩ độ phức tạp là 100.O(log511)=100 * 9= 900
2.3.Xây dựng mơ đun tạo luật
Như đã trình bày trong phần trên, mơ đun tạo luật dựa vào dữ liệu học được của phương pháp Bayesian để tạo ra các luật dùng cho các hệ thống SpamAssassin khác. Vì vậy, chúng ta cần lấy được giá trị ban đầu của từ khĩa tương ứng với các từ khĩa cĩ MI cao được chọn từ các từ khĩa học được của Bayesian
Dữ liệu của Bayesian được lưu trong bảng bayes_token cĩ những trường như sau:
CREATE TABLE bayes_token (
username varchar(200) NOT NULL default '', token varchar(200) binary NOT NULL default '', spam_count int(11) NOT NULL default '0', ham_count int(11) NOT NULL default '0', atime int(11) NOT NULL default '0',
PRIMARY KEY (username,token) ) TYPE=MyISAM;
Bảng từ điển của chúng ta cĩ lược đồ: CREATE TABLE `viword` (
`hash` varbinary(5) NOT NULL default '', `flag` tinyint(1) NOT NULL default '0', PRIMARY KEY (`value`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin; Vì vậy chúng ta cĩ giải thuật tạo tập luật như sau:
Đầu vào: Dữ liệu về từ khĩa của phương pháp Bayesian, từ điển từ, tập luật
chuyển đổi khơng gian xác suất sang khơng gian điểm (20_bayes.cf)
Đầu ra:
Đưa ra tập luật theo chuẩn SpamAssassin dưới dạng chuẩn Custom RuleSet của Spamassassin.
Ví dụ:
body SALE_OFF /^\s*giá ưu đãi đặc biệt\b/i describe SALE_OFF Giá ưu đãi thường là thư quảng cáo score SALE_OFF 0.542
Giải thuật:
1. Nhận yêu cầu số lệnh của người dùng (n). Độ phức tạp O(1)
2. Lấy ra n giá trị băm của từ khĩa từ bảng bayes_token cĩ MI cao nhất . Độ phức tạp O(n)
3. Tìm kiếm nhị phân các từ cĩ giá trị băm bằng cá giá trị nhận được ở bước 2 để nhận được giá trị thật của từ khĩa. Độ phức tạp n.O(logm)
4. Tính tốn xác suất của từ khĩa đĩ. Độ phức tạp O(1)
5. Chuyển từ khơng gian xác suất sang khơng gian điểm. Độ phức tạp O(1) 6. Đối với mỗi từ khĩa, sinh luật dạng. Độ phức tạp O(n)
body RULE_NAME /^\s*<token> \b/i describe RULE_NAME Chú thích về từ khĩa. score RULE_NAME <score>
Thuật tốn trên cĩ độ phức tạp là n.O(logm) với n là số luật muốn nhận được và m là số từ trong từ điển.
Với các thơng số thơng thường: N=150 và m=70000 ta cĩ:
Giải thuật cần đến 150.O(log70000)=150 * 16= 2414(phép tính cơ bản)