Chương 4. Xây dựng mô hình và thực nghiệm
4.5. Mô tả và chuyển đổi dữ liệu diễn đàn
Một số hoạt động chính giữa người dùng và diễn đàn Tuệ Tĩnh liên quan đến luận văn
- Một người dùng muốn đọc, bình luận (comment), gửi (post) nhiều bài tin ở nhiều chủ đề khác nhau thì nên đăng ký một tài khoản. Do đó, thường mỗi khách đến diễn đàn đều có tài khoản trong CSDL.
- Một người dùng có thể chỉ đọc mà không bình luận bài tin nào hoặc có thể bình luận hay đưa (up) bài tin lên các chủ đề cho phép.
- Một bài tin bất kỳ được một người dùng nào đó up lên thì thường được comment, do đó số lượt comment, số người dùng comment là một thông tin quan trọng để dùng cho bài toán.
Mô tả một số bảng trong CSDL diễn đàn Tuệ Tĩnh liên quan đến bộ lọc
Hệ thống CSDL của diễn đàn bao gồm 164 bảng, do yêu cầu bài toán ta phân tích chỉ có 5 bảng liên quan sau: (Sơ đồ liên kết các bảng hình 5.1)
1/ Bảng user_profile
Thể hiện các thông tin hồ sơ cứng của người dùng như ngày sinh (dob_day), tháng sinh (dob_month), năm sinh (dob_year), nơi sinh ( location,) nghề nghiệp (occupation)
Các thông tin này chỉ mang tính chất liệt kê thông tin người dùng cụ thể trong quá trình tư vấn. Nó cũng có thể là dữ liệu quan trọng để làm cơ sở để tìm cộng đồng tương tự áp dụng cho người dùng mới tham gia diễn đàn nhằm giải quyết vấn đề hạn chế „người dùng mới“ trong lọc cộng tác.
2/ Bảng user
Thể hiện các thông tin hồ sơ người dùng liên quan trong quá trình tương tác với trang web. Như message_count là tổng số lượt comment mà người dùng tham gia vào toàn bộ các bài tin của diễn đàn
3/ Bảng xf_thread
Cho biết một bài tin (thread_id) n thuộc chủ đề (node_id) có số lượt được comment là bao nhiêu, số lần đọc (view_count) là bao nhiêu, và do ai (user_id) là người tạo ra. Thông tin này có thể giúp người dùng nhận được tiêu đề các bài tin mà hệ thống tư vấn.
4/ Bảng xf_thread_read
Cho biết user_id A nào đó đã đọc các bài tin nào (thread_id). Vậy từ bảng dữ liệu này ta có thể có một thông tin quan trọng đó là loại tương tác “đọc” giữa một người dùng A với một bài tin i nào đó hay không? Nếu bảng này tồn tại cặp (user_id,thread_id) thì chứng tỏ giữa user_id và thread_id đó tồn tại tương tác “đọc”.
Tương tác này là một trong những tiêu chí quan trọng để tính ra được rate (đánh giá) của người dùng u với bản tin i. Trong luận văn này tôi chỉ định có tồn tại tương tác đọc thì rate được cộng thêm 1 điểm.
5/ Bảng xf_thread_user_post
Cho biết một bài tin (thread_id) đã được comment bởi người dùng nào, với số lượt comment (post_count) bởi họ là bao nhiêu. Đây là tiêu chí quan trọng thứ hai để tính rate giữa người dùng và mục tin. Mỗi lần comment rate được cộng thêm một điểm. Nếu người dùng A comment bài tin i 2 lần (post_count=2) thì điểm mà A đánh
∞
giá cho i được cộng thêm 2. Điểm đánh giá giữa người dùng A và mục tin i được tính là tổng của điểm đọc thông qua bảng xf_thread_read và điểm comment thông qua bảng xf_thread_user_post.
Các bước chuyển đổi dữ liệu
s1 s2 s3 s4 s5 s6 s7 s8 s9 s10 ... sj ... sm
ua 4 1 3 5 2 0 0 1 1 4 ... 0 ... 0 u1 5 2 4 5 1 0 0 0 3 5 … 5 … 1 u2 0 4 5 1 0 0 0 0 2 2 … 2 … 2 u3 0 3 4 1 0 1 0 0 1 0 … 1 … 0 u4 2 0 0 1 1 3 0 1 4 3 … 4 … 3 u5 3 2 1 5 1 0 2 0 2 1 … 2 … 3
…. … … … … … … …
ui 3 2 1 5 1 0 2 0 1 3 … rui,sj … 1 un-1 1 0 1 1 2 3 0 1 0 0 ... 0 ... 1
Hình 4.2. Quá trình chuyển đổi dữ liệu của bộ lọc Dưới đây là chi tiết các bước của quá trình chuyển đổi dữ liệu
B1. Tạo ra bảng dữ liệu bảng user_read chứa user_id (mã user), thread_id (mã bài tin), post_count (số lần comment), thread_read_date (ngày đọc) trích lọc từ hai bảng xf_thread_read và xf_thread_user_post
∞
p item
n user
User item rate ua s1 4 ua s2 1 ua s3 3 ua s4 5
ua … …
u1 s1 5
u1 s2 2
…. …. …
u1 s9 3
… …. ….
Bảng user_read lấy tất cả bài tin ở bảng xf_thread_read có cùng mã thread_id;
user_id với bảng xf_thread_user_post và không cùng mã thì lấy giá trị ở bảng xf- thread_read vì bảng xf_ thread_read có thể chứa xf_thread_user_post hoặc ngược lại.
Tức là một người dùng comment bài tin nào đó mà không đọc hoặc đọc mà không comment hoặc đã đọc thì sẽ comment. Do đó sẽ tồn tại những giá trị NULL thì kết quả sẽ trả lại là 0.
B2. Tạo ra bảng dữ liệu user_rate chứa user_id (mã người dùng), thread_id (mã bài tin), rate. Giá trị rate này được tạo ra theo quy luật vừa mô tả ở trên. Rate là tổng điểm thu được bởi hai loại tương tác đọc và comment.
Vậy với đặc điểm dữ liệu như trên tác giả sẽ xây dựng được bảng rate như hình 4.2. Trong đó, mỗi dòng thể hiện rate của một cặp user-item phản ánh điểm của người dùng dành cho mục tin. Qua đây ta cũng thấy được một người dùng nào đó tương tác với bao nhiêu bài tin, với những bài nào và được hệ thống tính toán ra điểm đánh giá là bao nhiêu. Đây là bảng khá quan trọng được truy vấn từ dữ liệu gốc của diễn đàn Tuệ Tĩnh để từ đây bằng việc dùng code ta chuyển các giá trị thread_id thành một hàng và giá trị cột rate là giao giữa hàng user và cột thread_id thu được ma trận rate cuối cùng bảng 4.1 là đầu vào của thuật toán CF mà luận văn nghiên cứu.