Giao diện cuối một tin tức của báo VietNamNet

Một phần của tài liệu (LUẬN văn THẠC sĩ) phản hồi ẩn trong hệ thống gợi ý nội dung (Trang 25)

Với mỗi tin tức, khi người đọc di chuyển để đọc những dòng cuối của tin, VietNamNet sẽ có một cửa sổ nhỏ hiện lên ở phía trái cuối màn hình đang đọc. Cửa sổ này hiển thị một đến hai các bài viết liên quan để gợi ý cho người dùng đọc tiếp về chủ đề đang đọc. Ngoài ra, nếu sử dụng tài khoản để đăng nhập hệ thống và người dùng đã

quan đến chủ đề đang đọc mà lại gợi ý về chủ đề mà người dùng quan tâm (được tính toán từ những chủ đề mà người dùng đã đọc từ trước).

Chương 3: Xây dựng hệ thống gợi ý tin tức sử dụng phản hồi ẩn phản hồi ẩn

3.1. Kiến trúc hệ thống

3.1.1. Mô tả kiến trúc hệ thống

Hệ thống cần xây dựng sẽ được mô tả như sau:

Xây dựng một hệ thống gợi ý tin tức tiếng Việt cho người dùng đã đăng nhập vào hệ thống. Các tin tức được lấy từ nguồn RSS của các trang báo, trang tin điện tử khác nhau (Dân Trí, VnExpress, VietNamNet, Thanh Niên, Tiền Phong, …) thường xuyên, định kỳ. Hệ thống cho phép người dùng bình luận, đọc các tin tức liên quan với tin hiện tại, đánh dấu tin, chia sẻ tin qua các mạng xã hội, gửi email đính kèm liên kết của tin tức cho bạn bè và in tin tức ra giấy. Hệ thống phải tự động đánh giá sở thích của người dùng theo thời gian để đưa ra được các tin tức gợi ý chính xác và không trùng lặp giúp tăng số lượng đọc tin tức. Hệ thống cũng phải có các cơ chế bảo mật giảm thiểu lỗi và tấn công hệ thống.

Dựa vào hệ thống gợi ý tin tức tiếng Việt xenoNews của tác giả Nguyễn Thạc Huy (học viên cao học Trường đại học Công nghệ - Đại học Quốc gia Hà Nội) được mô tả trong luận văn “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” tôi tiến hành cài đặt module phản hồi ẩn của mình lên hệ thống này.

xenoNews là hệ thống gợi ý tiếng Việt cho người dùng. Nguồn thông tin của hệ thống được thu thập tự động từ các báo, trang thông tin điện tử của Việt Nam (Dân Trí, VnExpress, VietNamNet, …) từ các nguồn tin RSS của các trang này. Người dùng đã đăng nhập trên hệ thống khi sử dụng sẽ được hệ thống đưa ra những gợi ý về các tin tức mà người dùng quan tâm theo đánh giá sở thích cá nhân của bản thân mình.

Vì dựa vào xenoNews làm nền tảng hệ thống và tôi chỉ xây dựng module phản hồi ẩn để đưa vào hệ thống này nên hệ thống mới được xây dựng có kiến trúc tương tự như kiến trúc của xenoNews. Hệ thống có cấu trúc 3 tầng ứng với 3 phần chính:

Hình 3.2: Kiến trúc hệ thống của xenoNews

- 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, … - Phần giao diện người dùng (front-end): chính là trang web người dùng truy cập

để đọc tin. Phần này có các chức năng chính sau: hiển thị các tin tức và kết quả xử lý của phần back-end tới người dùng, nhận yêu cầu từ người dùng và thu thập thông tin phản hồi, …

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

3.1.2. Nguyên lý hoạt động của hệ thống

Đầu tiên, người quản trị sẽ cập nhật các nguồn tin RSS từ các trang báo, trang thông tin điện tử vào cơ sở dữ liệu. Module thu thập tin tức truy cập vào cơ sở dữ liệu để lấy các nguồn tin RSS. Với mỗi nguồn tin RSS, module thu thập tin tức truy cập các

trang báo để lấy mã HTML của tin tức đẩy vào module tạo hồ sơ đối tượng để mỗi tin tức sẽ có một hồ sơ đối tượng tin tức. Hồ sơ đối tượng tin tức sẽ được đẩy vào module gợi ý.

Người dùng xem và tương tác với hệ thống qua giao diện hiển thị là website tổng hợp tin tức, website lấy dữ liệu từ cơ sở dữ liệu. Tại giao diện sẽ được cài đặt các công cụ để thu thập thông tin phản hồi ẩn của người dùng vào module phản hồi ẩn. Module phản hồi ẩn xử lý các thông tin này để cập nhật hồ sơ người dùng vào module quản lý hồ sơ người dùng. Module quản lý hồ sơ người dùng sẽ quản lý toàn bộ hồ sơ của người dùng thông qua cơ sở dữ liệu và module phản hồi ẩn để đưa ra hồ sơ người dùng đẩy vào module gợi ý. Module gợi ý dựa vào hồ sơ đối tượng tin tức và hồ sơ người dùng để đưa ra kết quả gợi ý đẩy vào cơ sở dữ liệu và từ đó truyền sang giao diện hiển thị để đưa ra website có những tin tức gợi ý cho người dùng theo đúng sở thích của người dùng đó. Cơ sở dữ liệu Module thu thập tin tức Nguồn RSS Mã HTML của tin tức Module quản lý hồ sơ người dùng Kết quả gợi ý Hồ sơ người dùng Người dùng Giao diện hiển thị Module tạo hồ sơ đối tượng

Module gợi ý Hồ sơ đối tượng tin tức

Tương tác Module phản hồi ẩn Thông tin phản hồi ẩn Cập nhật hồ sơ người dùng

Hình 3.3: Sơ đồ hoạt động của hệ thống

Trong các phần sau tôi sẽ trình bày về việc xây dựng module phản hồi ẩn, được coi là thành phần bổ sung vào hệ thống xenoNews có sẵn. Các thành phần, hệ thống lưu trữ thông tin đều sử dụng tập trung trên máy chủ.

3.2. Hồ sơ đối tượng tin tức

Để xây dựng được hệ thống, điều căn bản nhất với các hệ thống gợi ý tin tức chính là hồ sơ đối tượng tin tức. Chính vì vậy, cần phải có được module thu thập tin tức sau đó mới tạo được hồ sơ của đối tượng tin tức.

Module thu thập tin tức có nhiệm vụ lấy danh sách các nguồn RSS từ cơ sở dữ liệu rồi từ đó kết nối tới trang báo qua các liên kết của RSS, lấy nội dung các tin tức là các đoạn mã HTML được máy chủ các trang báo trả về. Sau đó, module thu thập tin tức sẽ gửi các đoạn mã HTML của tin tức sang module tạo hồ sơ đối tượng.

Các trang báo

Module thu thập tin tức

Lấy mã HTML của URL chứa tin

Cơ sở dữ liệu

Các nguồn RSS

Hình 3.4: Quá trình thu thập tin tức

Như đã trình bày trong chương 2, hồ sơ đối tượng tin tức đại diện được biểu diễn dưới dạng đếm số lần xuất hiện của token: di = {(token1i, count1i), …, (tokenxi, countxi)},

với x là số token của bài báo i.

Quá trình tạo hồ sơ đối tượng tin tức đã được hệ thống xenoNews thực hiện từ trước nên tôi không đi sâu vào quá trình này. Hình 3.5 mô tả quá trình tạo hồ sơ đối tượng tin tức trong hệ thống.

Nội dung HTML của tin

Đẩy ra nội dung HTML từ các báo

Nội dung dạng thô Loại bỏ các tag HTML Nội dung dạng các token Phân đoạn từ Chuỗi các token sạch Loại bỏ các từ dừng

Hồ sơ đối tượng

tin tức

Xây dựng hồ sơ đối tượng tin tức

Module thu thập

tin tức

3.3. Module phản hồi ẩn

Module phản hồi ẩn là một thành phần nằm trong hệ thống. Module phản hồi ẩn gồm hai module con là module thu thập phản hồi ẩn và module cập nhật phản hồi ẩn vào mô hình người dùng.

Module thu thập phản hồi ẩn được nhúng vào trong giao diện hiển thị, chính là website mà người dùng truy cập. Tại mỗi trang tin tức chi tiết mà người dùng đang xem, module thu thập phản hồi ẩn đưa ra thêm các thành phần của hệ thống cho phép người dùng bình luận, đánh dấu tin để sau này đọc lại, chia sẻ tin đang đọc qua các mạng xã hội, gửi email đính kèm liên kết của tin tức cho bạn bè và in tin tức ra giấy. Mỗi khi người dùng sử dụng bất kỳ một sự kiện nào đối với các thành phần trên, module thu thập phản hồi ẩn sẽ được kích hoạt và chuyển dữ liệu phản hồi ẩn của người dùng đến module cập nhật phản hồi ẩn vào mô hình người dùng.

Module cập nhật phản hồi ẩn vào mô hình người dùng sẽ dựa vào các dữ liệu phản hồi ẩn của người dùng để tính toán lại mô hình người dùng. Kết quả thu được là mô hình người dùng đã được cập nhật sẽ chuyển đến module quản lý hồ sơ người dùng.

3.3.1. Phương pháp biễu diễn dữ liệu ẩn

Trong hệ thống gợi ý nội dung sử dụng phản hồi ẩn của người dùng, ta gọi các phản hồi âm là chỉ đánh giá không thích, phản hồi dương là đánh giá thích tin tức nào đó và những tin tức mà người dùng chưa thấy để đọc hoặc chưa có tương tác là các giá trị thiếu thì các hệ thống gợi ý sử dụng phản hồi ẩn thường chỉ chứa dữ liệu quan sát dương S ⊆ U x I. Các tin tức mà người dùng chưa quan sát, tương tác là sự trộn lẫn của giá trị phản hồi âm và những giá trị thiếu. Vì vậy, cách tạo ra tập dữ liệu huấn luyện thường là với những cặp (u, i)∈ S thuộc lớp dương sẽ được gán giá trị 1, còn lại tất cả sẽ được gán giá trị 0 [15]. i1 i2 i3 i4 i5 i1 i2 i3 i4 i5 u1 ? + ? ? + u1 0 1 0 0 1 u2 + ? ? ? + u2 1 0 0 0 1 u3 + + ? ? ? u3 1 1 0 0 0 u4 + ? + ? + u4 1 0 1 0 1 u5 ? ? + + + u5 0 0 1 1 1

Phương pháp này có nhược điểm là trong suốt quá trình huấn luyện, các mô hình sẽ không phân biệt được đâu là phản hồi âm và đâu là giá trị cần dự đoán vì các giá trị thiếu và các phản hồi âm đều được gán là giá trị 0.

Phương pháp so sánh cặp được tôi sử dụng trong hệ thống gợi ý sử dụng phản hồi ẩn thay vì chỉ đưa ra dự đoán xếp hạng cho từng tin tức hoặc chỉ thay thế các giá trị cần xếp hạng bằng một giá trị âm. Phương pháp này được trình bày rất rõ trong tài liệu của Rendle [20].

Từ dữ liệu S đã có, chúng ta thực hiện xây dựng lại tập dữ liệu huấn luyện Ds dựa vào mối quan hệ thích hơn giữa các tin tức cho mỗi người dùng u (>u). Giả sử rằng, mỗi khi người dùng u ((u, i)∈ S) xem một tin tức i thì người dùng u thích i hơn tất cả các tin tức chưa xem khác. u1: i > u1 j i1 i2 i3 i4 i5 j1 + ? ? + i1 i2 i3 i4 i5 j2 - - - ? u1 ? + ? ? + j3 ? + ? + u2 + ? ? + j4 ? + ? + u3 + + ? ? ? j5 - ? - - u4 + ? + ? + … u5 ? ? + + + … u5: i > u5 j i1 i2 i3 i4 i5 j1 ? + + + j2 ? + + + j3 - - ? ? j4 - - ? ? j5 - - ? ?

Phía bên trái hình 3.7 biểu diễn quan hệ thích hơn cho các tin tức của người dùng u1: i2 > u1 i1; i2 > u1 i3; i2 > u1 i4; i5 > u1 i1; i5 > u1 i3; i5 > u1 i4.

Đối với các tin tức mà người dùng chưa đọc (tin tức i1, i3 và i4 trong hình 3.7), hệ thống sẽ không sử dụng quan hệ thích hơn do chưa có thông tin. Đồng thời, hệ thống cũng sẽ không sử dụng so sánh thích hơn đối với các tin tức mà người dùng đã đọc (như trong hình 3.7, các tin tức đó là i2 và i5) do hệ thống đã mặc định rằng người dùng có cùng mức độ thích các tin tức này.

Trong hình 3.7, bên phải là cách biểu diễn dữ liệu được dùng trong hệ thống. Dấu ? là các cặp tin tức cần xếp hạng, dấu + thể hiện người dùng thích tin tức i hơn tin tức j (i và j là như nhau), dấu – thể hiện người dùng thích tin tức j hơn tin tức i. Bài toán của hệ thống ở đây trở thành dự đoán các giá trị ? trong ma trận bên phải hình 3.7, sau khi có giá trị dự đoán, sắp xếp các giá trị này từ cao xuống thấp và đưa ra một số lượng N tin tức cần gợi ý.

Ta biểu diễn Ds dưới dạng:

{( , , ) || u ^ \ u}

Dsu i j iIjI I (3.1)

Trong hệ thống gợi ý sử dụng phản hồi ẩn, các phản hồi ẩn của người dùng sẽ được tự động ghi nhận lại bởi hệ thống thông qua các tương tác của người dùng đối với hệ thống. Người dùng sẽ không phải đánh giá thích hay không thích hoặc đánh giá từ 1 sao đến 5 sao cho mỗi tin tức như các hệ thống khác. Các phương pháp thu thập phản hồi ẩn từ hệ thống là:

1. Đánh dấu tin tức 2. Bình luận tin tức

3. Chia sẻ tin tức qua mạng xã hội 4. In tin tức

5. Gửi thông tin tin tức qua email cho bạn bè

Mỗi khi người dùng sử dụng một trong các chức năng trên, hệ thống sẽ ghi nhận và cập nhật vào cơ sở dữ liệu. Để thuận tiện cho việc tính toán, tôi coi trọng số của mỗi chức năng trên là 1/5 (tức 0,2), tổng trọng số sẽ là 1. Ban đầu, trọng số trên mỗi tin tức đối với một người dùng là 1/5, cứ mỗi lần người dùng sử dụng một chức năng khác (không tính lặp lại), trọng số sẽ được tăng lên 1/5. Trọng số này chính là thông tin phản hồi của người dùng đối với một tin tức. Tin tức nào được người dùng sử dụng nhiều chức năng hơn, tin tức đó sẽ được người đó thích hơn các tin tức được người đó sử dụng ít chức năng hơn. Như vậy, thông tin phản hồi của người dùng u cho tin tức i được tính theo công thức:

𝑟𝑢𝑖 =𝑠ố 𝑙ượ𝑛𝑔 𝑐ℎứ𝑐 𝑛ă𝑛𝑔 𝑝ℎả𝑛 ℎồ𝑖 ẩ𝑛 𝑚à 𝑢 𝑠ử 𝑑ụ𝑛𝑔 𝑡𝑟𝑜𝑛𝑔 𝑚ụ𝑐 𝑡𝑖𝑛 𝑖

tổng số chức năng phản hồi ẩn của hệ thống (3.2)

3.3.2. Giải thuật sử dụng cho hệ thống gợi ý sử dụng phản hồi ẩn

Module phản hồi ẩn sử dụng giải thuật xếp hạng cá nhân Bayes (Bayesian Personalize Ranking - BPR), đây là tiêu chuẩn dùng để tối ưu hóa hàm mục tiêu. Vì dữ liệu phản hồi của người dùng là ẩn nên tôi đề xuất sử dụng tiêu chuẩn tối ưu BPR cho kỹ thuật phân rã ma trận Matrix Factorization – MF), gọi là giải thuật BPR-MF để cài đặt giải thuật gợi ý tích hợp vào hệ thống.

Hàm mục tiêu của BPR-MF được tính theo công thức: 2 uij ( , , ) ˆ ln ( ) || || S BPR MR u i j D r           (3.3) Trong đó: - ( ) 1 1 x x e    

- rˆuij  rˆui rˆujrˆui, rˆujlà giá trị dự đoán của người dùng u cho tin tức i và tin tức j

- θ đại diện cho các tham số W và H

- 2

|| ||

  là thành phần chuẩn hóa để ngăn chặn vấn đề học vẹt

Chúng ta sử dụng phương pháp xuống đồi (Stochastic Gradient Descent) [21, 22] để triển khai chi tiết giải thuật học trong [20]. Đầu vào là các siêu tham số và tập dữ liệu huấn luyện. Trong hệ thống này, tập dữ liệu đầu vào có các thông tin là id của người dùng, id của tin tức và trọng số của tin tức đối với người dùng).

Các siêu tham số phải được tìm kiếm để phù hợp với từng tập dữ liệu do không gian giá trị của các siêu tham số rất lớn. Dựa vào phương pháp GridSearch [23], chúng ta có các siêu tham số cần tìm như sau:

- K: số nhân tố tiềm ẩn

- N-Repeat: số lần lặp

- α: tốc độ học

- λw: tham số chuẩn hóa nhân tố người dùng - λH+: tham số chuẩn hóa nhân tố tin tức đã xem - λH-: tham số chuẩn hóa nhân tố tin tức chưa xem

- Tìm giá trị các siêu tham số như: K, N-Repeat, α, λw, λH+, λH- bằng một thuật toán heuristic nào đó. Ví dụ α ϵ [0..1] nên ta sẽ tìm trên 4 giá trị (0.2, 0.4, 0.6 và 0.8).

Một phần của tài liệu (LUẬN văn THẠC sĩ) phản hồi ẩn trong hệ thống gợi ý nội dung (Trang 25)