Các yêu cầu chung

Một phần của tài liệu Mô hình hóa người dùng và ứng dụng bộ lọc cộng tác trong hệ thống gợi ý tin tức (Trang 33)

3.1.1. Môi trƣờng tích hợp bộ lọc cộng tác

Môi trường tiến hành cài đặt thử nghiệm bộ lọc cộng tác là hệ thống gợi ý tin tức tiếng Việt xenoNews, một hệ thống gợi ý tin tức tiếng Việt. Chi tiết về hệ thống xenoNews được mô tả trong luận văn có chủ đề “Chọn lọc thông tin dựa trên nội dung ứng dụng xây dựng hệ thống gợi ý tin tức theo nhu cầu người dùng” của tác giả Nguyễn Thạc Huy – học viên trường Đại học Công nghệ - Đại học Quốc Gia Hà Nội.

Cụ thể, xenoNews là hệ thống có nhiệm vụ thu thập tin tức từ các báo điện tử Việt Nam như Dantri, Vnexpress, Vietnamnet… sau đó tạo gợi ý tin tức cho người dùng theo đánh giá sở thích cá nhân của người dùng. Hệ thống có cấu trúc 3 tầng ứng với 3 phần chính: lõi xử lý (backend), tầng trung gian (middle-level), giao diện người dùng (front- end).

Hình 3.2: Kiến trúc 3 tầng của hệ thống xenoNews[23]

- Phần lõi xử lý (back-end): đây là phần chịu trách nhiệm xử lý chính trong hệ thống, thực hiện hầu hết các nhiệm vụ: thu thập tin tức từ các báo điện tử, xử lý nội dung tin, cập nhật mô hình người dùng, tính toán và gợi ý tin tức, … Lõi xử lý phiên bản đầu có trung tâm là một bộ lọc thuộc loại gợi ý dựa theo nội dung (content-based) đã trình bày ở phần 2, phân tích đưa gợi ý dựa trên các từ khóa trong nội dung các bản tin người dùng đã đọc.

- Giao diện người dùng (front-end): là một trang web để người dùng truy cập, đọc tin. Chức năng chính của giao diện gồm có: hiển thị các bản tin và kết quả gợi ý từ lõi xử lý tới người dùng; nhận yêu cầu từ người dùng ví dụ: muốn xem bản tin nào, tìm kiếm tin tức; đồng thời thu thập thông tin phản hồi từ người dùng: ẩn bản tin hoặc khai báo từ khóa theo dõi.

- Tầng trung gian (middle-level): bao gồm một cơ sở dữ liệu tập trung và một bộ phận xử lý yêu cầu từ phía giao diện. Bộ xử lý yêu cầu làm các nhiệm vụ: cập nhật tương tác của người dùng vào cơ sở dữ liệu, chuyển dữ liệu đã tính toán trước từ lõi xử lý tới người dùng thông qua giao diện web.

Luận văn sẽ xây dựng bộ lọc như một thành phần bổ sung trong lõi xử lý của hệ thống xenoNews, hoạt động nối tiếp bộ lọc nội dung đã có sẵn trên xenoNews, sử dụng và lưu trữ thông tin cùng vào cơ sở dữ liệu tập trung.

3.1.2. Yêu cầu chức năng

Các chức năng cơ bản mà bộ lọc cộng tác trong hệ thống gợi ý tin tức cần đạt được gồm có:

- Thu thập, tiền xử lý tin tức và ghi nhớ lịch sử truy cập: Đây là các chức năng cơ bản của một hệ thống tổng hợp tin tức nói chung. Với hướng xây dựng ghép bộ lọc thành module của xenoNews, các chức năng này đã được tiến hành từ trước. - Phân chia nhóm người dùng một cách tự động theo sở thích đọc tin. Sở thích đọc

tin của từng người dùng được tính toán dựa trên lịch sử truy cập của họ và cách khai báo thể loại tin cho trước. Do trên hệ thống xenoNews đã tiên hành tiền xử lý và phân chia tin tức theo thể loại nên bộ lọc coi đó như bộ thể loại tin tiêu chuẩn. Mỗi nhóm người dùng ứng với một thể loại tin trên hệ thống.

- Đưa gợi ý theo số lượng lượt xem tin trong từng thể loại, bao gồm thống kê đưa ra những bản tin trong thể loại có số lượng người dùng truy cập nhiều nhất.

- Tìm danh sách tin truy cập bởi những người dùng có độ tương đồng về lịch sử truy cập trong cùng nhóm sở thích sắp xếp thành danh sách gợi ý.

- Kiểm tra điều kiện đầu vào (nếu có) từ hệ thống chung và đảm bảo danh sách gợi ý không trùng với các tin đã đọc trong lịch sử truy cập của người dùng.

3.1.3. Yêu cầu phi chức năng

Ngoài các yêu cầu về chức năng, bộ lọc xây dựng cũng cần thỏa mãn một số yêu cầu phi chức năng như sau:

- Mô hình giải thuật không quá phức tạp để có thể triển khai và vận hành nhanh chóng. Ngoài yêu cầu cài đặt thử nghiệm trên hệ thống xenoNews, có thể tiến tới

xây dựng bộ lọc cộng tác thành một thư viện độc lập áp dụng cho các hệ thống khác.

- Có tính thích nghi, thay đổi theo thời gian phù hợp với sự thay đổi sở thích và xu hướng đọc tin của người dùng. Đây là yêu cầu chung đối với bộ lõi xử lý của hệ thống xenoNews.

- Đáp ứng các yêu cầu phi chức năng của hệ thống chung như cơ chế bảo mật người dùng, chuẩn giao tiếp với các thành phần khác.

- Hoạt động mang tính độc lập tương đối so với hệ thống chung. Điều này phù hợp với việc coi bộ lọc cộng tác là một phần của tổng thể hệ thống gợi ý tin tức, đảm bảo rằng quá trình hoạt động của bộ lọc cộng tác không gây ảnh hưởng đáng kể tới các thành phần khác như hệ thống thu thập tin, tiền xử lý, cơ sở dữ liệu và cả các bộ lọc khác.

3.2. Thiết kế tổng quát

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. (adsbygoogle = window.adsbygoogle || []).push({});

- 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

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

D (u , t)=(N

N1,N

N2,..., N

Nn)(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 Chính Tài chính – trị - Xã Kinh doanh hội Pháp Chứng khoán luật

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

D (u , t)=(N

N1,N

N2,..., N

N17 ) (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. (adsbygoogle = window.adsbygoogle || []).push({});

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à

D(u1)=( x1, x2,..., xp)

. D(u2 ) = ( y1 , y2 ,..., 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)

similarity (u1

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à

I (u j , s ) * similarity (u , u j )

r (u , s)=

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

Một phần của tài liệu Mô hình hóa người dùng và ứng dụng bộ lọc cộng tác trong hệ thống gợi ý tin tức (Trang 33)