Thiết kế ERD cho tính năng hiển thị báo cáo trong Nhóm

Một phần của tài liệu Xây dựng hệ quản trị đào tạo tích hợp mạng xã hội (Trang 123 - 126)

năng hiển thị báo cáo trong Nhóm

Thiết kế này được nhóm làm đề tài lấy cảm hứng từ mơ hình Star schema thường được sử dụng để phát triển kho dữ liệu (data warehouse). Mỗi một thực thể yếu có quan hệ với thực thể Group có thể được xem như là một chiều dữ liệu của Group, lưu trữ các thông tin hoạt động của Nhóm theo thời gian. Ví dụ, thực thể Group Engagement lưu trữ tổng số lượng post,

comment và vote của tồn bộ thành viên trong nhóm theo từng ngày. Việc thu thập thông tin được thực hiện thông qua việc chạy cron job ngầm ở phía server. Do đó, thời gian thu thập thơng tin (theo ngày) được chọn làm khóa yếu cho thực thể này. Việc lưu trữ như trên cho phép người dùng có thể lọc theo thời gian và biết được tổng số post, comment và vote trong bất cứ khoảng thời gian nào dựa trên hàm tổng hợp SUM. Các thực thể yếu trên cịn có tên gọi khác là dimension table, để phân biệt với các thực thể chính là fact table. Trong trường hợp này, phi chuẩn hóa dữ liệu thực sự cần thiết để đảm bảo hiệu năng cũng như tính đơn giản khi viết các câu lệnh query truy xuất thông tin thống kê theo thời gian.

6.3 Sắp xếp dữ liệu người dùng

Vì hệ thống tập trung vào trải nghiệm của người học là chính. Việc sắp xếp dữ liệu người dùng (user-generated contents) là tối quan trọng để đảm bảo trải nghiệm của người dùng. Đối với mỗi loại dữ liệu, nhóm làm đề tài lại có áp dụng và thử nghiệm một số phương pháp và giải thuật khác nhau.

Đối với các bài viết trong một nhóm thảo luận, nhóm làm đề tài sử dụng cơng thức sau để sắp xếp:

sign(v)×log(max(|v|,1))+

d

1000⌋−pivot

45000

với:

v là tổng số upvote trừ cho tổng số downvote của bài viết.

d là ngày bài viết được tạo (là giá trị thời gian UNIX tính bằng đơn vị milliseconds).

Nhóm làm đề tài chia giá trị này cho 1000 để ra được đơn vị seconds.  pivot là thời điểm bất kỳ nhỏ hơn mọi giá trị d trong hệ thống.

Cơng thức trên có là tổng của hai số hạng. Số hạng thứ nhất chỉ ra rằng, một bài viết có nhiều lượt vote tích cực hơn số lượng vote tiêu cực thì sẽ được đẩy lên đầu. Hàm số log có mặt để đảm bảo rằng việc tăng lượt vote tích cực tuân theo quy luật hiệu suất giảm dần (diminishing returns). Nhóm làm đề tài muốn lượt vote phải đóng góp vào thứ hạng của bài viết, nhưng cũng muốn là nó khơng lấn át q nhiều số hạng thứ hai: sự hao mòn theo thời gian (time decay). Sự hao mòn theo thời gian được tính bằng khoảng thời gian giữa ngày tạo bài viết và một giá trị gốc nào đó (tính bằng giây) chia cho 45000s. Ý nghĩa của cả cơng thức nói lên rằng: một bài viết có v là 100 sẽ có được xếp ngang hàng với một bài viết có v là 1000 nhưng được tạo vào 12 tiếng trước. Sở dĩ chúng ta khơng tính sự hao mịn bằng cách lấy thời điểm hiện tại trừ cho thời gian tạo là bởi khi đó, ta phải tính tốn lại cơng thức mỗi khi query vào cơ sở dữ liệu. Sử dụng công thức trên cho phép chúng ta phi chuẩn hóa, lưu trữ một trường hotness trong bài viết và chỉ tính tốn lại khi có lượt vote mới vì số hạng thứ hai đã được cố định. Ngồi cơng thức trên, bài viết cũng cho phép sắp xếp theo thời gian và theo tổng lượt vote (không bị ảnh hưởng bởi thời gian).

Đối với các bình luận ở bài viết, nhóm làm đề tài sử dụng cơng thức sau để sắp xếp:

^

p+zα2±zα2√[ ^p(1− ^p)+zα2/4n]/n

1+zα2/n

Cơng thức trên chính là giới hạn dưới của khoảng tin cậy điểm Wilson (Wilson Score

Confidence Interval). Giả sử rằng các lượt vote ở một bài bình luận (bao gồm vote tiêu cực và

vote tích cực) đại diện cho thích và khơng thích là một mẫu lấy từ tồn bộ dân số là số lượng người trong nhóm. Khi đó, việc sử dụng cơng thức trên có ý nghĩa là: với mẫu vote có được ở bình luận, thì với độ tin cậy là 95%, tỉ lệ thực sự các số lượng người thích trên tổng số người dùng trong nhóm ít nhất là bao nhiêu? Các kí hiệu trong cơng thức trên là:

 ^p là tỉ lệ số lượng vote tích cực trên tổng số lượng vote. Đây cũng chính là tỉ lệ của tham số mà ta cần tính khoảng tin cậy ở mẫu.

n là tổng số lượng vote (cũng chính là số lượng dữ liệu ở mẫu).

zα là z-score, thường dùng là 1.96 với độ tin cậy là 95%.

Hệ thống sử dụng cơng thức trên để sắp xếp bình luận để đảm bảo các bình luận cần phải có tỉ lệ vote tích cực trên vote tiêu cực lớn. Chúng ta không sử dụng tỉ lệ này trực tiếp làm công thức sắp xếp là bởi nếu như vậy thì các bình luận có ít vote tích cực nhưng tỉ lệ cao sẽ được sắp xếp lên trước các bình luận có nhiều vote tích cực nhưng tỉ lệ thấp hơn đơi chút. Điều này là sai bởi đối với các bình luận có lượng vote ít, thì tỉ lệ này sẽ rất ngẫu nhiên và khơng có khả năng phản ánh lên quan điểm của tồn bộ người dùng trong nhóm về bình luận. Hiện tượng cịn có tên là lời nguyền của kích thước mẫu nhỏ (the curse of small sample size).

Hệ thống không sử dụng công thức Wilson cho bài viết là bởi vì cơng thức này khơng thể đưa vào hiệu ứng suy giảm thời gian. Ảnh hưởng của thời gian đối với bài viết là quan trọng vì hệ thống muốn người dùng ln được tiếp cận với các bài viết mới nhất có thể.

Hệ thống cũng thực hiện việc sắp xếp nhóm mà người dùng đã tham gia và bạn bè của họ. Việc sắp xếp này xảy ra xuyên suốt trong các thành phần: ở hệ thống tìm kiếm (đẩy kết quả bạn bè lên đầu, nhóm mà mình đã tham gia lên đầu), hiển thị nhóm đã tham gia, hiển thị thành viên trong các nhóm được giới thiệu (sắp xếp bạn bè lên đầu), v.v… Hệ thống sắp xếp các nội dung này bằng việc giới thiệu một chỉ số có tên là interactionScore. Chỉ số này thu thập được từ tương tác của người dùng đến nhóm và bạn bè. Đối với nhóm, đó có thể là tạo bài viết, tạo bình luận, tạo vote. Đối với bạn bè, đó có thể là nhắn tin, xem trang thơng tin cá nhân, bình luận hoặc vote vào bài viết, bình luận của nhau. Hệ thống thu thập các tương tác này và tính tổng theo từng ngày (thông qua cronjob chạy cho từng ngày) và cập nhật

interactionScore dựa theo công thức sau:

score=∑ di wiCie−λ(d0−d) với:  i là một loại tương tác

Ci là số lượng của loại tương tác i trong một ngày

wi là trọng số của tương tác i hay mức độ quan trọng của tương tác i đến score cuối cùng.

d là ngày tương tác i được tạo.

e−λ(d0−d) là hệ số phân ra theo cấp số nhân của thời gian. Hệ số lambda sẽ được chọn sao cho sau 30 ngày thì hệ số này gần như bằng 0.

Nói cách khác, interactionScore là tổng phân ra theo thời gian của tổng có trọng số của các tương tác theo từng ngày.

Một vấn đề liên quan đến sắp xếp dữ liệu mà bất kỳ hệ thống nào cũng phải quan tâm đó chính là phân trang. Cách phân trang truyền thống được sử dụng rộng rãi đó là:

Một phần của tài liệu Xây dựng hệ quản trị đào tạo tích hợp mạng xã hội (Trang 123 - 126)

Tải bản đầy đủ (PDF)

(185 trang)