Chức năng của mô hình này là học những đặc điểm thuộc sở thích chung của người dùng về tin tức. Từ đó tính toán để ra quyết định cho các tin mô hình ngắn hạn không thể phân lớp được. Để đạt được mục đích này, tôi đã lựa chọn một thuật toán học máy thống
kê – phân lớp naïve Bayes (naïve Bayes classifier) của tác giả Duda cùng các cộng sự. Thuật toán đơn giản này đã được so sánh và thể hiện là có khả năng cạnh tranh với nhiều thuật toán phức tạp khác, đặc biệt trong phân loại văn bản text (xem thêm các thử nghiệm so sánh của các tác giả Pazzani và Billsus, 1997 [1]).
Sử dụng một tập thuộc tính được tính toán định kỳ, có khả năng đại diện tốt cho các 8 chuyên mục lớn đã đề cập, và dữ liệu về tần suất token trong mỗi bài báo (đã mô tả ở mục 3.3.1), ta có thể chuyển các bài báo thành các vector thuộc tính dạng Boolean. Với mỗi giá trị thuộc tính là để xác định sự tồn tại một token trong bài báo đó (xem ví dụ
Bảng 3.2). Cách thức tính toán tập thuộc tính được trình bày ở cuối mục này.
Bảng 3.2: Ma trận các vector thuộc tính Boolean dùng để xây dựng mô hình dài hạn
token1 token2 token3 … tokenk
QUAN TÂM drel_1 0 1 1 … 1 drel_2 1 1 0 … 0 … … … … … … drel_m 0 0 1 … 1 KHÔNG QUAN TÂM dirr_1 1 1 1 … 1 dirr_2 0 1 0 … 0 … … … … … … dirr_n 1 1 0 … 1
Mỗi hàng trong Bảng 3.2 thể hiện một vector thuộc tính Boolean, đại diện cho một bài báo độc giả quan tâm hay không quan tâm. Từ các vector này, các thông số sau sẽ được định kỳ cập nhật để tạo nên mô hình dài hạn của người dùng:
- Số lượng bài báo người dùng quan tâm – m và không quan tâm – n.
- 2 vector tổng hợp tương ứng cho 2 nhãn lớp: “quan tâm”, “không quan tâm”. Theo công thức (2.8), khi đã biết các giá trị thuộc tính của bài báo, thì xác suất một bài báo được thuộc về lớp Ci, P(Ci | k1j, …, kxj) được xấp bằng công thức
( i) ( xj | i)
x
lượng dễ dàng từ dữ liệu huấn luyện (và đã được lưu trong mô hình thông tin dài hạn vừa đề cập ở trên), và chỉ có 2 nhãn lớp: “quan tâm” (1), “không quan tâm” (0), hay có thể viết là: Ci {0,1}, tương tự kxj {0,1}. Để tránh các xác suất bằng 0 của những token ít xuất hiện, tôi lựa chọn phương pháp làm mịn Laplace. Ví dụ, áp dụng làm mịn Laplace:
1 1 1 # examples with 0, 1 ( 1| 0) # examples with 0 C k P k C m C (3.1)
với m là số lượng giá trị có thể của C, trong trường hợp này ta chỉ có 2 nhãn lớp, vì vậy
m=2.
Hầu hết các ứng dụng sử dụng công thức naïve Bayes đều lấy cả sự xuất hiện
(presence) và vắng mặt (absence) của một thuộc tính làm bằng chứng cho việc tính toán
xác suất. Tuy nhiên, trong hệ thống gợi ý tin tức này, tôi chỉ sử dụng xác suất tương ứng với các từ có xuất hiện trong văn bản (presence-only), tương tự với mô hình naïve Bayes được đề xuất bởi Maron. Điều này giúp tạo ra một bộ phân lớp “bảo thủ hơn”, đòi hỏi tin tức được phân vào lớp c cần phải có độ tương đồng cao hơn với các ví dụ huấn luyện trong lớp đó. Do vậy, để áp dụng cho trường hợp phân lớp trong hệ thống xenoNews, công thức (2.8) được viết lại thành:
: 1 ( ) ( | ) xj i xj i x k P C P k C (3.2)
Để có thể hiểu rõ hơn, tôi lấy ví dụ như sau: giả sử, một tin tức mới, có vector thuộc tính Boolean: d = (k1=1, k2=0, k3=1); và ta cần tính xác suất tin tức d mới này thuộc lớp C=1. - Áp dụng công thức (2.8): 1 2 3 ( 1| ) ( 1) ( 1| 1) ( 0 | 1) ( 1| 1) P C d P C P k C P k C P k C - Áp dụng công thức (3.2): 1 3 ( 1| ) ( 1) ( 1| 1) ( 1| 1) P C d P C P k C P k C . Do thuộc tính k2 vắng mặt trong bài báo d.
Trong thực tế cài đặt thuật toán, tôi còn sử dụng logarit để giải quyết vấn đề under- flow, xảy ra khi giá trị xác suất cuối cùng quá nhỏ và bị máy tính xấp xỉ bằng 0. Khi đó, xác suất P C( 1| )d ở trên được tính bằng tổng của logarit các thành phần tích.
1 3
( 1| ) log ( 1) log ( 1| 1) log ( 1| 1)
Cuối cùng, tôi cũng mong muốn ngăn mô hình dài hạn gợi ý ra các tin tức không chứa đủ một lượng cần thiết các thuộc tính (token). Cụ thể hơn, để một bài báo có thể được chia vào lớp “quan tâm”, từ đó gợi ý cho người dùng, thì vector thuộc tính Boolean cần chứa ít nhất n thuộc tính có giá trị bằng 1, hay nói cách khác, nội dung tin tức cần xuất hiện ít nhất n token khác nhau dùng làm thuộc tính. Trong cài đặt hệ thống hiện tại, tôi chọn n=3.
Cách thức xác định tập từ khoá dùng làm thuộc tính cho các vector của mô hình dài hạn:
Mô hình thông tin dài hạn có mục đích là mô hình hoá thông tin đặc điểm đọc chung của người dùng. Do phần lớn các từ xuất hiện trong tin tức là không hữu ích nhiều cho mục đích này, bộ phận chịu trách nhiệm về Hồ sơ đối tượng tin tức sẽ định kỳ chọn ra các từ khoá (chính xác hơn là các token) từ các chuyên mục tin, sử dụng tập mẫu lớn gồm nhiều bài báo. Sau khi được lựa chọn, tập thuộc tính đó được sử dụng cho tất cả các người dùng. Mục tiêu của quá trình chọn lựa đặc trưng là tìm ra các token có giá trị thông tin cao, xuất hiện nhiều suốt khoảng thời gian dài. Nghĩa là, một token có giá trị là token có khả năng “làm nên sự khác biệt” cho một bài báo, và do đó có thể được sử dụng làm dấu hiệu nhận biết chủ đề trong bài báo. Với từng tài liệu riêng biệt, độ đo TF-IDF có thể được coi là thước đo lượng thông tin mỗi token đóng góp trong nội dung tổng thể của tài liệu. Để xác định n token có giá trị thông tin cao nhất trong mỗi bài báo, tôi sắp xếp các token theo giá trị tf-idf, và chọn n token có điểm cao nhất (hiện tại n được đặt bằng 10) tạo nên danh sách top-n. Nhận xét sau được tổng kết từ thực tế: một từ sẽ có ích cho mô hình dài hạn nếu nó thường xuyên xuất hiện trong danh sách top-n, trong một tập lớn nhiều bài báo cùng một chuyên mục. Tiếp đó, kỹ thuật lựa chọn thuộc tính này sắp xếp tất cả các token xuất hiện trong tập từ khoá tổng hợp (thuộc tất cả các chuyên mục) dựa trên số lần xuất hiện của chúng trong danh sách top-n. Cuối cùng, k token xuất hiện thường xuyên nhất sẽ được chọn (hiện tại, k=250). Hướng tiếp cận này hoạt động tốt trong việc lựa chọn tập từ vựng mong muốn, bởi vì: nó chọn các token xuất hiện thường xuyên trong một chuyên mục tin tức, nhưng các token này vẫn cần phải có giá trị thông tin cao (được đo bằng trọng số tf-idf).