3.2.1. Cơ chế hoạt động
Bộ lọc cộng tác là một module thành phần trong toàn bộ hệ thống gợi ý tin tức nên có tính đóng gói so với các thành phần khác. Các thành phần còn lại trong hệ thống không cần quan tâm tới hoạt động bên trong bộ lọc mà chỉ giao tiếp thông qua việc truyền dữ liệu đầu vào và nhận kết quả đầu ra của bộ lọc.
- Dữ liệu đầu vào: Dữ liệu đầu vào của bộ lọc cộng tác là tất cả thông tin về lịch sử truy cập của người dùng trên hệ thống, lấy từ cơ sở dữ liệu tập trung. Ngoài ra còn có thể là danh sách ràng buộc đối với kết quả gợi ý trả về, ví dụ giới hạn thời gian của bản tin kết quả hoặc danh sách những bản tin cần loại trừ do trùng lặp ở kết quả bộ lọc khác.
- Dữ liệu đầu ra: Dữ liệu đầu ra của bộ lọc cộng tác là một danh sách kết quả gợi ý gồm các cặp người dùng – bản tin, có thể sắp xếp theo độ giảm dần của trọng số đánh giá. Do bộ lọc cộng tác cũng kết nối trực tiếp tới cơ sở dữ liệu chung nên kết quả được lưu trực tiếp vào cơ sở dữ liệu để làm đầu vào cho bước tiếp theo trong quá trình gợi ý hoặc sử dụng cho giao diện hiển thị trực tiếp tới người dùng.
Hình 3.3: Bộ lọc cộng tác trong tổng thể hệ thống xenoNews
3.2.2. Các thành phần chính
Bộ lọc cộng tác được xây dựng thành 3 bộ phận chính:
- Bộ phận chia nhóm người dùng: là phần có nhiệm vụ tổng hợp thông tin phân bố thể loại trong lịch sử truy cập của từng người dùng và gán nhóm nội dung quan tâm thích hợp cho người dùng đó. Ví dụ một người dùng có số lượt xem các tin thuộc thể loại “Xã hội” chiếm đa số thì người dùng đó được đánh dấu nằm trong nhóm quan tâm tới thể loại tin “Xã hội”. Số lượng nhóm mà một người dùng quan tâm có thể là tham số thay đổi theo thực nghiệm. Thông tin về nhóm nội dung từng người dùng quan tâm được tính toán định kỳ lưu vào cơ sở dữ liệu nhằm đảm bảo khả năng tương thích với sự thay đổi trong xu hướng đọc tin của người dùng.
- Bộ phận tạo gợi ý: là bộ phận xử lý chính trong bộ lọc cộng tác. Hai phương pháp áp dụng trong bộ tạo gợi ý là gợi ý tin theo lượt truy cập nhiều nhất và theo độ tương đồng lịch sử truy cập với những người dùng khác trong nhóm.
Gợi ý theo lượt truy cập nhiều nhất dựa trên danh sách tin tức được số đông người dùng trên hệ thống hoặc người dùng trong cùng nhóm sở thích.
Gợi ý theo độ tương đồng lịch sử truy cập với người dùng khác trong nhóm dựa vào điểm tương đồng giữa người dùng đang xét và những người dùng khác trong cùng nhóm sở thích
- Bộ phận kiểm tra điều kiện ràng buộc: đảm bảo kết quả trả về từ bộ lọc cộng tác không bị trùng hợp với kết quả của các bộ lọc khác hoặc không gợi ý những kết quả vào dạng người dùng đã đánh dấu bỏ qua.
Hình 3.4: Các bộ phận trong bộ lọc cộng tác
3.3. Xây dựng chi tiết các thành phần bộ lọc cộng tác 3.3.1. Bộ phận chia nhóm ngƣời dùng 3.3.1. Bộ phận chia nhóm ngƣời dùng
Trước tiên ta nêu phương pháp tổng quát để chia nhóm người dùng trong hệ thống theo sở thích. Trong bất kỳ hệ thống cung cấp tin tức nào đều có định nghĩa sẵn một tập gồm các thể loại tin. Mỗi bản tin có thể thuộc vào một hoặc một số thể loại. Ký hiệu tập các thể loại tin đã định nghĩa là C = {c1, c2, … , cn}, giả định rằng các thể loại có tính độc lập tương đối.
Thông tin chính mà bộ lọc cộng tác cần để đưa ra gợi ý là tương tác của người dùng, nói cách khác chính là những dữ liệu về lịch sử truy cập tin. Theo kết quả thực nghiệm do J.Liu và P.Dolan [22] thực hiện trên bộ dữ liệu lịch sử truy cập tin tức của người dùng Google News, sở thích đọc tin của người dùng có sự thay đổi theo thời gian và lịch sử truy cập càng lâu thì càng có ít tác dụng trong việc dự báo sở thích của người dùng. Ta biểu diễn sự phân bố nội dung truy cập của mỗi người dùng u trong khoảng thời gian t bằng vector
1 2
( , ) (N , N ,...,Nn)
D u t
N N N
(3.1)
Trong công thức 3.1, Ni là số lượng bài viết trong thể loại ci mà người dùng đã đọc trong thời gian t, N là tổng số lượng bài viết người dùng đã đọc trong thời gian t, n là số lượng thể loại tin. Tỷ lệ phân bố nội dung truy cập của người dùng ứng với thể loại tin nào càng lớn thì chứng tỏ người dùng dành nhiều sự quan tâm cho thể loại đó. Giá trị tỷ lệ tính theo N nên N phải là giá trị mẫu đủ lớn để các phân số trong D(u,t) mang tính quy luật. Khoảng thời gian t dùng để tính toán vector D(u,t) xác định qua thực nghiệm phải đáp ứng hai yếu tố:
- Đảm bảo biểu diễn sự thay đổi sở thích của người dùng theo thời gian
- Tích lũy đủ số lượng tin tức người dùng truy cập ứng với giá trị N. Ví dụ nếu thời gian t quá ngắn người dùng mới chỉ đọc khoảng 10 bài báo trong đó 4 bài liên quan tới thể thao thì chưa thể dùng tỷ lệ 4/10 để gán người dùng vào nhóm quan tâm tới thể loại thể thao.
Sau khi biết được vector biểu diễn phân bố nội dung truy cập của người dùng, ta chọn ra k phần tử có giá trị lớn nhất trong vector D(u,t). Tham số k biểu diễn số lượng thể loại được đánh dấu quan tâm của mỗi người dùng. Ví dụ chọn k = 2 tức là lấy hai giá trị lớn nhất trong số phần tử của D(u,t), ứng với hai thể loại tin ci, cj, đánh dấu người dùng u có sự quan tâm tới hai thể loại đó.
Áp dụng cách thức phân nhóm đã trình bày vào hệ thống xenoNews, các đối tượng bản tin trên hệ thống xenoNews được thu thập từ nguồn là đường dẫn RSS (Rich Site Summary) của các trang báo điện tử Việt Nam. Từ thông tin trong RSS, hệ thống gán tin tức vào các thể loại khác nhau như trong bảng 3.1.
Bảng 3.1: Bảng mô tả các thể loại tin tức trong hệ thống xenoNews
Thời sự Thị trƣờng Thể thao Công nghệ Phong cách Giáo dục Sức khoẻ Nhà đất
Chính trị - Xã hội Tài chính – Kinh doanh CNTT – Viễn thông
Văn hoá Du học Chăm sóc sức khoẻ
Bất động sản
Pháp luật
Chứng khoán Khoa học Giải trí Tuyển sinh Giới tính Không gian sống
Thế giới Việc làm
Tổng cộng có 8 nhóm thể loại với 17 thể loại nhỏ: chính trị-xã hội, pháp luật, tài chính-kinh doanh, chứng khoán, việc làm, thể thao, cntt-viễn thông, khoa học, văn hóa, giải trí, du học, tuyển sinh, chăm sóc sức khỏe, giới tính, bất động sản, không gian sống. Những thể loại tin này có thể coi như cơ sở phân nhóm tin tức theo sở thích quan tâm của người dùng. Tập hợp thể loại tin có 17 phần tử C = {c1, c2, … , c17} ứng với số lượng thành phần trong vector phân bố nội dung truy cập của mỗi người dùng là n=17
17 1 2 ( , ) (N ,N ,...,N ) D u t N N N (3.2)
Số thành phần trong D(u,t) được chọn để gán nhóm sở thích cho người dùng là 3, có nghĩa hệ thống sẽ đánh dấu rằng người dùng được xét quan tâm tới 3 thể loại tin ứng với 3 phần tử có giá trị cao nhất trong D(u,t).
3.3.2. Bộ phận tạo gợi ý
3.3.2.1. Tạo gợi ý theo mức độ phổ biến của tin
Phương pháp tìm kết quả gợi ý ở mức đơn giản là gợi ý cho người dùng theo số lượt truy cập tin. Hệ thống đưa ra lời gợi mở “nhiều người khác đã đọc bản tin này rồi, bạn có muốn biết không”, kèm theo đó là danh sách những tin tức được đa số người dùng trong hệ thống. Có thể giới hạn kết quả gợi ý bằng cách chỉ xét trong phạm vi những thể loại mà người dùng quan tâm. Vấn đề quan trọng ở phương pháp này là tìm được ngưỡng để xét xem bản tin đã được “đa số” người dùng khác truy cập.
Cách gợi ý này phát huy hiệu quả trong trường hợp người dùng đang sử dụng ẩn danh (không đăng nhập) hoặc số lượng bản tin người dùng đã đọc thuộc thể loại đang xét là ít.
3.3.2.2. Tạo gợi ý theo những ngƣời dùng cùng nhóm sở thích
Phương pháp thứ hai trong bộ lọc cộng tác là sử dụng những thông tin về thể loại tin người dùng quan tâm đã tính toán ở phần 3.3.1.
Để xét sự giống nhau trong sở thích duyệt tin của những người dùng trên hệ thống, biểu hiện trong 1 thể loại tin c, ta sử dụng độ tương đồng lịch sử truy cập định nghĩa như sau. Xét hai người dùng u1 và u2, ký hiệu tập hợp tất cả các bản tin mà 1 trong 2 người
dùng u1 hoặc u2 đã từng truy cập là M = {m1, m2, … , mp} với p phần tử. Vector biểu diễn lịch sử truy cập của người dùng u1 và u2 trong tập M lần lượt là
1 1 2
( ) ( , ,..., p)
D u x x x
.D u( 2)( ,y y1 2,...,yp)
Trong D(u1), phần tử xi có giá trị bằng 1 nếu người dùng u1 đã từng đọc bản tin mi, ngược lại xi có giá trị bằng 0 nếu người dùng u1 chưa từng đọc bản tin mi. Tương tự đối với các phần tử trong D(u2).
Độ tương đồng lịch sử truy cập giữa hai người dùng u1 và u2 dựa theo công thức Cosine giữa vector D(u1) và vector D(u2)
1 1 2 2 2 1 1 ( , ) * p i i i p n i i i i x y similarity u u x y (3.2)
Gọi U là tập hợp những người dùng cùng trong nhóm quan tâm tới thể loại c với người dùng u. Ta tính được độ tương đồng lịch sử truy cập tại thể loại c của u đối với tất cả những người dùng khác trong U. Điểm số đánh giá khả năng người dùng u quan tâm tới bản tin s là , ( , ) * ( , ) ( , ) 1 j j j j u U u u U I u s similarity u u r u s N (3.3)
Trong công thức 3.3, NU là số lượng người dùng trong tập U, I(uj,s) nhận giá trị 1 nếu người dùng uj đã đọc bản tin s và nhận giá trị 0 nếu người dùng uj chưa đọc bản tin s, similarity(u,uj) tính theo công thức 3.2. Việc thêm (NU – 1) ở mẫu số nhằm đảm bảo r(u,s) nằm trong khoảng (0,1) do số lượng thành viên của tập người dùng quan tâm tới các thể loại là khác nhau.
Danh sách bản tin dùng để gợi ý cho người dùng u có thể lấy chính là danh sách bản tin mà những người dùng khác trong nhóm quan tâm tới thể loại c đã đọc nhưng người dùng u chưa đọc. Các bản tin được tính khả năng người dùng u quan tâm theo công thức 3.3 và sắp xếp theo điểm số giảm dần.
Tới đây có thể thấy mô hình người dùng trong bộ lọc cộng tác chính là vector phân bố lịch sử truy cập D(u,t) tại công thức 3.1 và tập hợp điểm số tương đồng lịch sử truy cập của u với những người dùng khác trong những thể loại tin mà người dùng quan tâm.
3.3.3. Bộ phận kiểm tra điều kiện ràng buộc
Từ kết quả của bộ phận tạo gợi ý, bộ phận kiểm tra có nhiệm vụ so sánh đối chiếu với các điều kiện khởi tạo khi bắt đầu tính toán, ví dụ danh sách đã gợi ý theo bộ lọc nội dung để tránh trùng lặp khi đưa ra kết quả.
Với bộ lọc nội dung sẵn có trong hệ thống xenoNews, người dùng còn có thể đánh dấu những bản tin thuộc loại họ muốn “bỏ qua” và hệ thống loại những tin có dạng tương tự ra khỏi kết quả gợi ý. Do đó bộ lọc cộng tác cũng phải tiếp nhận những điều kiện này nhằm đồng bộ với hệ thống chung.
Việc kiểm tra điều kiện có thể tiến hành trực tiếp trong quá trình tạo gợi ý tuy nhiên để cấu trúc bộ lọc một cách rõ ràng ta tách bước kiểm tra thành một phần riêng, nếu tiến hành cài đặt cho hệ thống gợi ý tin tức khác sẽ chỉ cần thay đổi về các điều kiện trong bộ phận kiểm tra, còn thuật toán áp dụng trong bộ tạo gợi ý vẫn làm việc với toàn bộ dữ liệu lịch sử và bản tin.
Chƣơng 4: Thực nghiệm và đánh giá 4.1. Thực nghiệm và đánh giá
Bộ lọc cộng tác được cài đặt trên máy chủ chung của hệ thống xenoNews. Các thông số chi tiết bao gồm:
- CPU: Core™ i5-2430M CPU 2* 2.40GHz - RAM: 4GB
- OS: Windows 7 - Bộ nhớ ngoài: 250GB - Cơ sở dữ liệu: MySQL
Trong quá trình thực nghiệm bộ lọc cộng tác, hệ thống xenoNews được cài đặt thêm chế độ chuyển giữa các bộ lọc. Dữ liệu đánh giá trên hệ thống gồm khoảng 10.000 bản tin thu thập từ các nguồn báo điện tử và khoảng 300 người dùng. Quá trình thực nghiệm chọn ngẫu nhiên 10 người dùng trong hệ thống và theo dõi lịch sử đọc tin của họ trong 3 tuần. Tuần đầu tiên hệ thống hoạt động như một trang thu thập thông tin thông thường, không tính toán các gợi ý. Tuần thứ 2 bật chức năng gợi ý cộng tác và tuần thứ 3 có tính toán lại nhóm sở thích của người dùng. Kết quả số lượng truy cập theo từng thể loại của nhóm 10 người dùng được chọn biểu diễn trong bảng
Bảng 4.1: Số lượng tin truy cập trong quá trình thử nghiệm
Tuần 1 Tuần 2 Tuần 3
Thời sự 413 530 546 Thị trường 340 421 408 Thể thao 406 486 511 Công nghệ 358 416 390 Phong cách 265 310 313 Giáo dục 214 248 256 Sức khỏe 154 140 166
Theo bảng 4.1 ta thấy số lượng lượt truy cập tin của tập người dùng thử nghiệm đã tăng lên khoảng 20% khi sử dụng kết quả gợi ý trong danh sách tin tức hiển thị. Kết quả này chứng tỏ bộ lọc cộng tác đã giúp đưa đến cho người dùng những tin tức đáng quan tâm hơn đối với họ.
Chất lượng của bộ lọc cộng tác được thể hiện qua 3 tiêu chí: độ chính xác (precesion), độ hồi tưởng (recall) và độ đo F1 tổng hợp từ độ chính xác và độ hồi tưởng. Độ chính xác là tỷ lệ số tin được người dùng đọc trên tổng số tin gợi ý mà bộ lọc trả về, độ hồi tưởng là tỷ lệ số tin được người dùng đọc trên tổng số tin mà người dùng đánh giá rằng họ quan tâm. Độ đo F1 cho bởi công thức:
1 2*precision recall* F precision recall (4.1)
Các độ đo ứng với từng thể loại thể hiện theo bảng 4.2. Chỉ số được lấy
Bảng 4.2: Các độ đo theo thể loại
Precision (%) Recall (%) F1 (%) Thời sự 80.5 60.7 69.2 Thị trường 73.4 62.5 67.5 Thể thao 70.2 61.3 65.4 Công nghệ 70.9 63.7 67.1 Phong cách 68.6 57.8 62.7 Giáo dục 76.4 65.3 70.4 Sức khỏe 62.1 58.0 59.0 Trung bình 71.4 61.3 66.1
Theo bảng đánh giá 4.2, độ chính xác đạt giá trị cao ở các thể loại tin mang tính cập nhật, được nhiều người quan tâm như: thời sự, thị trường, giáo dục và giá trị thấp hơn trong các thể loại tin có tính phân loại hướng quan tâm như: phong cách, giáo dục, sức khỏe. Nhìn chung số đo độ chính xác cao hơn số đo độ hồi tưởng vì đa phần xu hướng
bản tin theo sở thích riêng của người dùng chưa đạt đủ ngưỡng trở thành bản tin gợi ý.