Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 58 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
58
Dung lượng
1,8 MB
Nội dung
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Đỗ Thành Trung
Phân tích sở thích người dùng cho dữ liệu tin tức
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
HÀ NỘI - 2014
ĐẠI HỌC QUỐC GIA HÀ NỘI
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ
Đỗ Thành Trung
Phân tích sở thích người dùng cho dữ liệu tin tức
KHÓA LUẬN TỐT NGHIỆP ĐẠI HỌC HỆ CHÍNH QUY
Ngành: Công nghệ thông tin
Cán bộ hướng dẫn: PGS. TS. Nguyễn Việt Hà
Cán bộ đồng hướng dẫn: ThS. Vũ Quang Dũng
HÀ NỘI - 2014
VIETNAM NATIONAL UNIVERSITY, HANOI
UNIVERSITY OF ENGINEERING AND TECHNOLOGY
Do Thanh Trung
Analysis user’s interest for news data
Major: Information Technology
Supervisor: Assoc.Prof. Dr. Nguyen Viet Ha
Co-Supervisor: MSc. Vu Quang Dung
HA NOI - 2014
LỜI CẢM ƠN
Đầu tiên, tôi xin gửi lời cảm ơn và lòng biết ơn vô cùng sâu sắc đến PGS.TS.Nguyễn
Việt Hà, ThS.Vũ Quang Dũng đã tận tình hướng dẫn, giúp đỡ tôi trong suốt quá trình thực
hiện khóa luận tốt nghiệp này.
Tôi xin chân thành cảm ơn các thầy, cô đã tạo cho tôi những điều kiện thuận lợi để tôi
học tập, rèn luyện và nghiên cứu tại trường Đại học Công nghệ.
Tôi cũng xin gửi lời cảm ơn các anh chị và các bạn đã và đang học tập, nghiên cứu tại
phòng thí nghiệm Công nghệ phần mềm Toshiba-UET, anh Nguyễn Bảo Ngọc, bạn Trương
Văn Hưng đã giúp đỡ, hỗ trợ tôi trong quá trình triển khai và thực nghiệm hệ thống.
Tôi xin gửi lời cảm ơn tới các bạn trong lớp K55CC và K55CLC đã ủng hộ, khích lệ,
giúp đỡ và luôn sát cánh bên tôi trong suốt quá trình học tập, rèn luyện tại trường.
Bên cạnh đó, tôi xin cảm ơn báo Dân Việt đã cung cấp các thông tin đầy giá trị phục vụ
cho quá trình xây dựng hệ thống thực nghiệm.
Lời cuối cùng, tôi xin gửi lời cảm ơn vô hạn tới gia đình, người thân và bạn bè - những
người luôn ở bên tôi những lúc khó khăn nhất, luôn động viên tôi, khuyến kích tôi trong cuộc
sống cũng như học tập, cộng việc.
Tôi xin chân thành cảm ơn!
Sinh viên
Đỗ Thành Trung
i
TÓM TẮT
Tóm tắt:
Trong thời đại bùng nổ thông tin hiện nay, lượng dữ liệu là vô cùng lớn, trong đó có cả
dữ liệu tin tức. Khi thói quen truy cập internet và đọc tin điện tử ngày một tăng, việc lọc, phân
loại và có thể đưa ra gợi ý cho người dùng những tin tức nên đọc trong kho dữ liệu khổng lồ
là một việc cần thiết và có ý nghĩa, giúp người dùng tiết kiệm một lượng lớn thời gian cho
việc tìm kiếm và đọc tin.
Hệ thống trình bày trong khóa luận này là là một ứng dụng cho phép người dùng đọc tin
tức và nhận được những gợi ý cho những tin tức nên đọc thuộc mối quan tâm của người dùng
dựa vào chính những gì người dùng đã tương tác với hệ thống.
Để có thể thực hiện được điều đó, hệ thống cần phải làm hai chức năng lớn. Một là phân
tích dữ liệu của người dùng, những dữ liệu được phân tích ở đây chính là người dùng đã đọc
tin gì, người dùng nào đọc tin đó và đọc tin đó trong khoảng thời gian nào. Sau đó có thể xác
định các chủ đề quan tâm của người dùng và gợi ý các tin tức theo các chủ đề đó với mức độ
ưu tiên giảm dần.
Qua quá trình xây dựng và thực nghiệm, hệ thống đã có thể đáp ứng các yêu cầu đặt ra
trước mắt tuy nhiên để có thể đưa vào sử dụng lâu dài và thu hút được sự chú ý của người
dùng thì cần hoàn thiện thêm nhiều chức năng nâng cao hơn cũng như cải thiện hiệu suất tốt
hơn.
Từ khóa: phân loại, sở thích người dùng, tin tức, gợi ý.
ii
ABSTRACT
Abstract:
In this era of information explosion today, the amount of data is huge, specially, news
data. When routine internet access and electronic news reading is rising, a system which can
suggests news for users is necessary and meaningful, it could help users save large amounts of
time for searching and reading .
The system presented in this thesis is an application that allows users to read the news
and get suggestions for what to read based on what the user interacts with systems.
To accomplish this, the system needs to do two major functions. Firstly, analysis of user
behavior, the data analyzed is which news, which user and what time user read. Then system
could identify the category of interest of the user and suggests the news follow categories
with descending priority.
Through the process of building and testing, the system was able to meet the
requirements laid out in front but to be able to put to use long term and attract the attention of
the user, it need more perfection more advanced features as well as improved performance
better .
Keywords: groups, user’s interest, news, suggession.
iii
LỜI CAM ĐOAN
Tôi xin cam đoan các kết quả đạt được trong khóa luận này do tôi thực hiện dưới sự
hướng dẫn của PGS.TS. Nguyễn Việt Hà và ThS.Vũ Quang Dũng.
Tất cả các tham khảo từ những nghiên cứu liên quan đều được nêu nguồn gốc một cách
rõ ràng từ danh mục tài liệu tham khảo trong khóa luận. Khóa luận không sao chép tài liệu,
công trình nghiên cứu của người khác mà không chỉ rõ về mặt tài liệu tham khảo.
Các kết quả thực nghiệm của khóa luận đều được tiến hành thực nghiệm và thống kê từ
kết quả thực tế.
Sinh viên
Đỗ Thành Trung
iv
Mục lục
TÓM TẮT
ii
ABSTRACT
iii
Chương 1.
Mở đầu
1
Chương 2.
Cơ sở lý thuyết và công nghệ
3
2.1. Cơ sở lý thuyết
3
2.1.1.
ABC model (Antecedent-Behavior-Consequence)
3
2.1.2.
Thuật toán Apriori
3
2.2. Cơ sở công nghệ
6
2.2.1.
Model – View – Controller
6
2.2.2.
Data Access Object (DAO)
7
2.2.3.
Python và Django framework
7
2.2.4.
RSS
8
Giải quyết vấn đề
9
Chương 3.
3.1. Phân tích dữ liệu
9
3.1.1.
Mô hình tổng quát
3.1.2.
Thu thập dữ liệu
11
3.1.3.
Tiền xử lý
12
3.1.4.
Phân tích dữ liệu
15
3.2. Dự đoán sở thích người dùng
9
18
3.2.1.
Gợi ý tại trang chủ
18
3.2.2.
Gợi ý khi một tin tức được yêu cầu
20
Phân tích và phát triển hệ thống
22
Chương 4.
4.1. Kiến trúc hệ thống
22
4.2. Cấu trúc cơ sở dữ liệu
23
4.2.1.
Bảng lưu trữ thông tin về các tin tức
23
4.2.2.
Bảng lưu trữ request người dùng
24
4.2.3.
Bảng lưu trữ kết quả phân tích nhóm người dùng, thời gian, chủ đề
24
4.2.4.
Bảng lưu trữ luật
4.3. Cấu trúc các thành phần
25
27
4.3.1.
Model
27
4.3.2.
Controller
27
4.3.3.
View
29
4.4. Biểu đồ tuần tự
32
4.4.1.
Người dùng truy cập trang chủ
32
4.4.2.
Người dùng truy cập một tin tức
34
Thực nghiệm
38
Chương 5.
5.1. Môi trường thực nghiệm
38
5.1.1.
Cấu hình máy chủ
38
5.1.2.
Các package, thư viện sử dụng
38
5.1.3.
Dữ liệu thực nghiệm
39
5.2. Kết quả thực nghiệm
5.3.
Chương 6.
Nhận xét, đánh giá, so sánh
Kết luận và hướng phát triển
40
42
44
6.1. Kết luận
44
6.2. Hướng phát triển
45
TÀI LIỆU THAM KHẢO
46
Danh sách hình vẽ
Hình 2.1: Ví dụ về việc dùng Apriori để tìm tập phổ biến. .............................................5
Hình 3.1: Mô hình tổng quát phân tích dữ liệu .............................................................10
Hình 3.2: Luồng hoạt động thu thập tin tức ..................................................................12
Hình 3.3: Luồng hoạt động của Nhóm chủ đề theo người dùng ...................................15
Hình 3.4: Luồng hoạt động của module Nhóm chủ đề theo thời gian ..........................16
Hình 3.5: Luồng hoạt động của Xác định dấu trang .....................................................18
Hình 3.6: Luồng hoạt động khi người dùng vào trang chủ ...........................................19
Hình 3.7: Luồng hoạt động khi một tin tức cụ thể được yêu cầu ..................................20
Hình 4.1: Mô hình kiến trúc hệ thống ...........................................................................22
Hình 4.2: Bảng lưu trữ thông tin tin tức ........................................................................23
Hình 4.3: Bảng lưu trữ thông tin request của người dùng .............................................24
Hình 4.4: Bảng lưu trữ kết quả phân tích nhóm người dùng, thời gian, chủ đề ............25
Hình 4.5: Bảng lưu trữ luật kết hợp ...............................................................................26
Hình 4.6: Danh sách các lớp trong Model .....................................................................27
Hình 4.7: Danh sách hàm view......................................................................................28
Hình 4.8: Giao diện màn hình hiển thị dữ liệu ..............................................................30
Hình 4.9: Giao diện khi đọc một tin tức của người dùng ..............................................31
Hình 4.10: Biều đồ tuần tự khi người dùng truy cập trang chủ .....................................32
Hình 4.11: Biểu đồ tuần tự khi người dùng truy cập một tin tức ..................................34
Hình 4.12: Biểu đồ tuần tự khi người dùng bấm nút back để quay lại trang chủ .........36
Hình 5.1: Dữ liệu tin tức sử dụng cho thực nghiệm ......................................................39
Hình 5.2: Dữ liệu về request của người dùng cho thực nghiệm ....................................39
Hình 5.3: Trang chủ của ứng dụng ................................................................................41
Hình 5.4: Trang hiển thị một tin tức cụ thể ...................................................................42
Danh sách bảng biểu
Bảng 2.1: Bảng ví dụ các giao dịch .................................................................................4
Bảng 2.2: Các luật kết hợp sinh ra và độ tin cậy tương ứng. ..........................................5
Bảng 3.1: Mô tả các giai đoạn phân tích dữ liệu ...........................................................10
Bảng 3.2: Mô tả luồng hoạt động của thu thập tin tức ..................................................12
Bảng 3.3: Bảng hiển thị tần suất xem tin của từng chủ đề theo các ngày trong tháng ..13
Bảng 3.4: Bảng hiển thị tần suất xem tin theo từng khoảng thời gian trong ngày ........13
Bảng 3.5: Bảng hiện thị tần suất xem tin của mỗi người dùng đối với các category. ...14
Bảng 3.6: Mô tả các bước trong luồng hoạt động của Nhóm chủ đề theo người dùng .15
Bảng 3.7: Mô tả các bước trong luồng hoạt động Nhóm chủ đề theo thời gian ...........16
Bảng 3.8: Mô tả các bước trong luồng hoạt động của Xác định dấu trang ...................18
Bảng 3.9:Vai trò các bước trả về tin tức theo sở thích người dùng ...............................19
Bảng 3.10: Vai trò các bước gợi ý tin tức liên quan......................................................21
Bảng 4.1: Mô tả các thành phần hệ thống .....................................................................22
Bảng 4.2: Ý nghĩa các trường thông tin của tin tức ......................................................23
Bảng 4.3: Ý nghĩa các trường thông tin của request người dùng ..................................24
Bảng 4.4: Ý nghĩa các trường thông tin của kết quả phân tích .....................................25
Bảng 4.5: Ý nghĩa các trường trong bảng AssociationRule ..........................................26
Bảng 4.6: Ý nghĩa các trường trong bảng RuleCause ...................................................26
Bảng 4.7: Mô tả vai trò các hàm trong Controller.........................................................28
Bảng 4.8: Mô tả vai trò các hàm phân tích ....................................................................29
Bảng 4.9: Vai trò các hàm dự đoán ...............................................................................29
Bảng 4.10: Mô tả biểu đồ tuần tự Hình 4.10 .................................................................33
Bảng 4.11: Mô tả biểu đồ tuần tự Hình 4.11 .................................................................35
Bảng 4.12: Mô tả biểu đồ tuần tự Hình 4.12 .................................................................36
Bảng 5.1: Cấu hình máy chủ .........................................................................................38
Bảng 5.2: Các thư viện, package sử dụng .....................................................................38
Bảng 5.3: Thông số thực nghiệm. .................................................................................40
Bảng các kí hiệu, kí tự, chữ viết tắt
STT
1
Kí tự
CSDL
Viết đầy đủ
Cơ sở dữ liệu
Giải thích
Tập các dữ liệu được lưu trữ một
cách có hệ thống trong một hệ quản
trị cơ sở dữ liệu.
2
HTML
Hyper Text Markup
Language
Ngôn ngữ đánh dấu siêu văn bản
được dùng trong việc hiển thị nội
dung web.
3
Category Category
Chủ đề, lĩnh vực phân loại của một
nhóm dữ liệu nào đó.
Một định dạng tài liệu dựa trên XML
dùng trong việc chia sẻ tin tức trên
web.
4
RSS
Really Simple Syndication
5
URL
Uniform Resource Locator Địa chỉ của một server hay một tệp
tin trên Internet.
Chương 1. Mở đầu
Máy tính, các thiết bị số và Internet ngày một trở nên phổ biến. Ngày nay, mọi
người có thể dễ dàng sở hữu một chiếc máy tính cá nhân hoặc một chiếc smartphone
hay tablet cùng với khả năng lướt web cơ bản. Người dùng dần quen hơn với việc tiếp
cận tin tức thông qua các trang web, diễn đàn, blog, ... hơn là qua báo giấy hay phương
tiện truyền thông truyền thống.
Đi cùng với sự phát triển của internet đó là việc lượng thông tin khổng lồ ngày
một tăng. Một người dùng bình thường không thể và không có thời gian để có thể truy
cập hết mọi tin tức được cung cấp. Nhiều thông tin dư thừa có thể gây loãng và mất
thêm thời gian không cần thiết. Vậy vấn đề đặt ra là làm sao giúp người dùng tiết kiệm
thời gian bằng cách chỉ theo dõi các tin tức nổi bật và bản thân quan tâm.
Để đáp ứng yêu cầu đặt ra như vậy, có hai vấn đề chính được đặt ra, một là làm
sao để biết tin tức nào người dùng muốn đọc và hai là sau khi xác định được lĩnh vực
quan tâm của người dùng rồi thì đưa ra gợi ý cho người dùng thế nào.
Xuất phát từ những yêu cầu như vậy, tôi tiến hành xây dựng một ứng dụng cho
phép bắt các tương tác, yêu cầu từ phía người dùng đối với trang web sau đó phân tích
ra được sở thích, nhu cầu để từ đó đưa ra các gợi ý tin bài thích hợp cho người dùng.
Để có thể đưa ra những gợi ý phù hợp với mỗi người đọc, yêu cầu đặt ra là phải
biết được sở thích của mỗi người dùng là gì, loại tin tức người dùng quan tâm đối với
từng người dùng và theo từng khoảng thời gian. Thêm vào đó, cần xác định được
những tin nổi bật đang thu hút nhiều sự quan tâm của người dùng.
Bài toán có thể chia ra làm 2 khối chức năng lớn:
-
Khối phân tích dữ liệu: nhiệm vụ chính là từ các dữ liệu thu thập được, tiến
hành phân tích để đưa ra kết quả cần thiết cho việc dự đoán.
o Đầu vào:
Dữ liệu về các bài báo.
Các tương tác, yêu cầu của người dùng đối với trang web. Cụ thể
là các thông tin về thời gian, tin bài, người dùng yêu cầu.
o Đầu ra:
Các nhóm dữ liệu chia theo người dùng, thời gian, chủ đề.
Tần suất đọc đối với từng tin tức hoặc từng nhóm tin tức.
1
-
Khối dự đoán: Từ kết quả phân tích được, đưa ra các gợi ý phù hợp với sự quan
tâm của người dùng.
o Đầu vào:
Thông tin người dùng.
Các nhóm dữ liệu đã phân tích được.
Tần suất đọc của các tin tức và các nhóm tin tức.
o Đầu ra:
Các tin tức thuộc lĩnh vực ưa thích của người dùng.
Các tin tức nổi bật.
Như vậy trong khóa luận này, tôi đưa phương pháp xây dựng một ứng dụng web
đáp ứng được vấn đề đã nêu ở trên.
Các phần còn lại của khóa luận này có cấu trúc như sau:
Chương 2: Cơ sở lý thuyết và công nghệ, sẽ trình bày về những thuật toán, công
nghệ đã được sử dụng.
Chương 3: Phương pháp giải quyết bài toán, trong chương này sẽ trình bày về
cách thực thi thuật toán, cấu trúc của thuật toán cũng như kĩ thuật để xử lý dữ liệu.
Chương 4: Phân tích và phát triển hệ thống, chương này sẽ có các thiết kế của hệ
thống thực nghiệm bao gồm bao gồm tổng quan hệ thống, cách thiết kế cơ sở dữ liệu,
các biểu đồ tuần tự và giải thích.
Chương 5: Thực nghiệm, trình bày môi trường thực nghiệm cũng như kết quả
thực nghiệm của hệ thống, đánh giá và so sánh với một số ứng dụng tương tự.
Chương 6: Kết luận, tóm lược kết quả mà khóa luận đạt được, những điểm cần
khắc phục, đặc biệt là đưa ra hướng phát triển của hệ thống nhằm đưa hệ thống vào
ứng dụng thực tiễn hơn.
2
Chương 2. Cơ sở lý thuyết và công nghệ
Để có thể giải quyết vấn đề đặt ra, tôi xây dựng một hệ thống dựa trên những cơ
sở lý thuyết và công nghệ sau đây.
2.1. Cơ sở lý thuyết
2.1.1. ABC model (Antecedent-Behavior-Consequence)
ABC model là viết tắt của Antecedent-Behavior-Consequence là một cấu trúc
biểu mẫu cho phép thống kê hành vi người dùng, từ đó có thể dễ dàng phân tích sở
thích người dùng thì các mẫu thống kê đó. Trong đó:
-
Antecedent – Tiền đề: là sự việc, điều kiện gì đó xảy ra trước khi có hành vi. Ví
dụ thời gian, không gian, …
-
Behavior - Hành vi: một hành động được thực thi sau khi đã có tiền đề.
Consequence – Kết quả: kết quả đạt được sau khi hành vi được thực hiện.
Theo ABC model, ta có thể dễ dàng thống kê các sự kiện dưới dạng các bảng
một cách hợp lý, thuận tiện cho việc xử lý và dự đoán.
Ví dụ ta có thể đưa ra mẫu với tiền đề là một khoảng thời gian nào đó trong ngày,
hành vi là người dùng đọc loại tin nào, kết quả là người dùng có thích loại tin đó
không. Việc có người dùng có thích loại tin đó không được kiểm tra bằng số lần đọc
loại tin đó của người dùng. Sau khi thu thập được những thông tin theo mẫu trên với
người dùng, ta có thể dễ dàng tìm ra được mức độ quan tâm của mỗi người dùng đối
với những loại thông tin khác nhau.
2.1.2. Thuật toán Apriori
Thuật toán Apriori tìm kiếm luật kết hợp trong khai phá dữ liệu, nói cách khác là
sự tương quan giữa các phần tử cần xét. Áp dụng apriori vào trong bài toán tìm sự liên
kết giữa các tin tức giúp hệ thống có thể phân tích và dự đoán tin tức nào có độ liên
quan so với tin tức nào và từ đó gợi ý cho người dùng.
Luật kết hợp [3]
Ta có T là tập các giao dịch T={t1, t2, t3, …, tn}. Trong đó mỗi giao dịch ti bao
gồm tập các đối tượng Ik = {i1 ,i2, …,im}. Mục đích của luật kết hợp là tìm ra mối
tương quan giữa các đối tượng có dạng A => B.
-
A là một tập muc. A I. Gọi T chứa A nếu A T.
3
-
Độ hỗ trợ của A (s(A)) là xác suất xuất hiện A trong D: s(A)=|TD, T A}.
Trong đó D là tập các giao dịch.
-
minsup (>0) là độ hỗ trợ tối thiểu. A là phổ biến nếu s(A) minsup.
-
Gọi A B là một “luật kết hợp” nếu A I, B I và AB=.
-
Luật kết hợp AB có độ hỗ trợ (support): s (AB) = s(AB), AB là phổ biến
nếu AB phổ biến. Luật kết hợp A B có độ tin cậy (confidence) c trong D
nếu trong D có c% các giao dịch T A TB: xác suất P(B|A).
-
Support (A B) = P(AB)
: 1 s (A B) 0
-
Confidence (A B) = P(B|A)
: 1 c (A B) 0
-
Luật A B được gọi là đảm bảo độ hỗ trợ s trong D nếu s(A B) s.
-
Luật AB được gọi là đảm bảo độ tin cậy c trong D nếu c(A B) c. Tập
mạnh.
Ta có ví dụ sau. Giả sử ta có tập các giao dịch như Bảng 2.1.
Bảng 2.1: Bảng ví dụ các giao dịch
Ví dụ với bảng bên ta sẽ có độ hỗ
Transaction-id Items
1
A, B, C
2
A, D
3
A, C
4
B, E, F
trợ và độ tin cậy của cặp A, C lần lượt
như sau:
A C (50%, 66.7%)
C A (50%, 100%)
Một thuật toán khai phá luật kết hợp gồm 2 bước:
-
Tìm mọi tập mục phổ biến: theo min-sup.
- Sinh luật mạnh từ tập mục phổ biến.
Nguyên lý tỉa Apriori: Với mọi tập mục phổ biến thì mọi tập bao không cần phải
sinh ra/kiểm tra.
Tư tưởng, phương pháp:
- Sinh các tập mục ứng viên dài (k+1) từ các tập mục phổ biến có độ dài k (Độ
dài tập mục là số phần tử của nó).
- Kiểm tra các tập ứng viên và đưa ra tập phổ biến có độ dài (k+1).
4
Ta có ví dụ [1] sau:
Hình 2.1: Ví dụ về việc dùng Apriori để tìm tập phổ biến.
Ban đầu ta có bảng lưu trữ các phiên giao dịch của người dùng, ta tìm được các
tập phổ biến có độ dài là 1. Từ tập phổ biến đó ta tìm được tập phổ biến có độ dài lớn
hơn là 2, và cuối cùng là 3 khi chỉ còn lại 1 tập mục phổ biến là {B,C,E} với độ hỗ trợ
là 2.
Từ tập phổ biến đó ta sinh được các luật kết hợp như sau
Bảng 2.2: Các luật kết hợp sinh ra và độ tin cậy tương ứng.
Luật kết hợp
Độ tin cậy
B => {C,E}
66.67%
C => {B,E}
66.67%
E => {B,C}
66.67%
{C,E} => B
100%
{B,E} => C
66.67%
{B,C} => E
100%
Từ các luật kết hợp được sinh ra, ta quay lại
bảng giao dịch để tính độ tin cậy, ví dụ độ tin cậy
của luật B=>{C,E} được tính bằng tỉ lệ số lần xuất
hiện B và {C,E} so với số lần xuất hiện B.
Từ độ tin cậy tính được, ta so sánh với độ tin
cậy tối thiểu (min_conf) được đặt ra từ trước và
xác định được luật mạnh. Ở đây ta có thể dễ dàng
thấy 2 luật {C,E}=>B và {B,C}=>E có độ tin cậy
lên tới 100%.
5
Như vậy, nếu áp dụng thuật toán Apriori vào việc xác định mối tương quan giữa
các bài báo, ta có thể xác định được bài liên quan tiếp theo từ các bài người dùng đã
đọc trước đó.
2.2. Cơ sở công nghệ
Bên cạnh những cơ sở mang tính lý thuyết thì vấn đề công nghệ cũng cần được
lưu tâm để cho hệ thống hoạt động với hiệu quả cao. Hệ thống trình bày trong khóa
luận này là một ứng dụng web cho phép người dùng dễ dàng truy cập từ trình duyệt
hoặc từ ứng dụng nào có khả năng hiển thị nội dung từ html và javascript.
2.2.1. Model – View – Controller
MVC (Model-View-Control) là một kiến trúc phần mềm hay mô hình thiết kế
được sử dụng trong kỹ thuật phần mềm. Nó giúp cho các lập trình viên tách ứng dụng
của họ ra 3 thành phần khác nhau Model, View và Controller. Mỗi thành phần có một
nhiệm vụ riêng biệt và độc lập với các thành phần khác.
Hiển thị
Cập nhật
View
Model
Sử dụng
Database
Controller
Thao tác
Hình 2.2: Hình vẽ mô tả kiến trúc model-view-controller
Model: là nơi liên kết, trao đổi với cơ sở dữ liệu.
View: đảm nhận việc hiển thị thông tin, dữ liệu và tương tác với người dùng,
nơi chứa tất cả các đối tượng giao diện như textbox, images…
Controller: điều khiển View và Model làm việc với nhau. Controller nhận
request từ client, gọi hàm thực thi tương ứng, dữ liệu ở CSDL được lấy thông
qua Model và gửi trả dữ liệu lại cho View, View định dạng dữ liệu để hiển thị
cho người dùng.
6
-
Ưu điểm: Thể hiện tính chuyên nghiệp trong lập trình, phân tích thiết kế. Do được
-
chia thành các thành phần độc lập nên giúp phát triển ứng dụng nhanh, đơn giản,
dễ nâng cấp, bảo trì..
Nhược điểm: Đối với dự án nhỏ việc áp dụng mô hình MVC gây cồng kềnh, tốn
thời gian trong quá trình phát triển. Tốn thời gian trung chuyển dữ liệu của các
thành phần.
2.2.2. Data Access Object (DAO)
Dữ liệu từ CSDL được trừu tượng hóa thông qua các class và các thuộc tính, truy
vấn dữ liệu được cung cấp từ các hàm cụ thể. Thường mỗi class sẽ tương ứng với một
bảng trong CSDL và các thuộc tính của lớp đó sẽ tương ứng với các cột của bảng đó.
Việc này giúp nhà phát triển dễ dàng thao tác và sử dụng dữ liệu hơn so với việc viết
các lệnh truy vấn tới CSDL.
Một số ưu điểm của DAO:
-
Có thể sử dụng với phần lớn các ứng dụng.
Thao tác với dữ liệu dễ dàng và hạn chế số lượng ngôn ngữ lập trình phải viết.
Tính hướng đối tượng cao.
-
Dễ dàng chuyển đổi giữa các hệ quản trị cơ sở dữ liệu do không phải viết lệnh
truy vấn cho mỗi lần lấy dữ liệu.
2.2.3. Python và Django framework
Cùng với sự phát triển của nhiều ngôn ngữ lập trình web như PHP, Ruby,
Scheme thì Python là một cái tên đáng chú ý. Python là một ngôn ngữ có hình thái rất
sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới bắt đầu học lập trình. Cấu trúc của
Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu nhất.
Python là một ngôn ngữ lập trình đơn giản nhưng lại rất hiệu quả. Bên cạnh đó, Python
là một ngôn ngữ có tính hướng đối tượng cao.
Ưu điểm:
-
Dễ học, dễ hiểu: Python tăng cường sử dụng từ khóa tiếng Anh, hạn chế các ký
hiệu và cấu trúc cú pháp so với các ngôn ngữ khác.
-
Đa năng: có thể sử dụng cho nhiều mục đích: xây dựng web, xây dựng chương
trình tính toán, xây dựng kịch bản kiểm thử …
-
Đa biến hóa: Python cho phép sử dụng nhiều phương pháp lập trình khác nhau:
hướng đối tượng, có cấu trúc, chức năng hoặc chỉ hướng đến một khía cạnh
nhất định.
7
-
Trình thông dịch: Python không cần phải thực hiện biên dịch, do đó nó giúp tiết
kiệm thời gian phát triển ứng dụng so với các ngôn ngữ khác.
Dựa trên những ưu điểm của Python, một web framework được phát triển và theo
mô hình Model-Control-View là Django. Django cho phép xây dựng những trang web
với hiệu suất cao một cách nhanh chóng. Đó là lí do tại sao Django ngày càng trở lên
phổ biến nhằm triển khai các dự án quy mô lớn nhanh và hiệu quả.
Các điểm mạnh của Django được tận dụng trong khóa luận:
-
Ánh xạ đối tượng – quan hệ: Model trong Django sử dụng DAO, hỗ trợ nhiều
hàm truy vấn dữ liệu cộng thêm tính hướng đối tượng cao của Python giúp việc
-
truy vấn dữ liệu dễ dàng và giảm thiểu độ phức tạp cho việc lập trình.
Tùy biến URL: người phát triển có thể tùy biến các url một cách linh hoạt và
gán cho các hàm cụ thể.
Hệ thống template: việc sử dụng các template giúp phân tách rõ giữa thiết kế,
nội dung và mã Python. Hàm Python có thể gọi đến một template mã HTML và
truyền dữ liệu sang template để hiển thị.
2.2.4. RSS
RSS là một chuẩn định dạng tài liệu dựa trên XML thường được các website và blog
sử dụng để cập nhật thông tin mới cho người dùng. Đặc biệt RSS được sử dụng nhiều
bởi các trang tin tức, nhưng tin tức được tóm lược lại với những thông tin cơ bản như
tiêu đề, mô tả, ngày đăng bài, url. Chữ RSS là viết tắt dùng để chỉ các chuẩn sau:
-
Rich Site Summary (RSS 0.91)
-
RDF Site Summary (RSS 0.9 and 1.0)
Really Simple Syndication (RSS 2.0.0)
-
Nội dung của RSS được thường xuyên cập nhật bởi các trang tin, do đó những tin
trong RSS luôn là những tin mới nhất. Những thông tin này này được cung cấp dưới
dạng một tập tin xml gọi là RSS feed.
8
Chương 3. Giải quyết vấn đề
Như đã đề cập ở phần mở đầu, toàn hệ thống bao gồm 2 chức năng lớn: phân tích
dữ liệu và dự đoán dữ liệu. Phân tích dữ liệu là tiền đề cần thiết cho việc dự đoán và
đưa ra gợi ý ở các phần sau. Dựa vào các cơ sở đã đặt ra tôi xin trình bày lần lượt cách
giải quyết của bản thân cho các vấn đề sau đây.
3.1. Phân tích dữ liệu
3.1.1. Mô hình tổng quát
Phần phân tích dữ liệu tôi chia ra làm 3 module lớn bao gồm:
-
Thu thập dữ liệu: để có thể phân tích dữ liệu thì trước hết cần phải có dữ liệu,
do đó thu thập dữ liệu là việc đầu tiên cần làm. Nguồn dữ liệu đầu tiên tôi dùng
cho khóa luận này được cung cấp bởi báo Dân Việt bao gồm thông tin về các
bài báo và thông tin thống kê mức độ truy cập của người dùng. Ngoài ra hệ
thống cũng có thể tự thu thập dữ liệu trực tiếp từ Internet thông qua RSS của
trang tin tức. Các hành vi, request từ phía người dùng được bắt khi người dùng
đọc tin từ hệ thống.
-
-
Tiền xử lý: Các dữ liệu thu thập được cần phải làm sạch, chuẩn hóa cho đúng
theo một chuẩn chung để có thể dễ dàng phân tích, do đó bước tiền xử lý được
đưa ra để thực hiện các nhiệm vụ: xác định các trường cần thiết cho việc phân
tích, làm sạch các dữ liệu dư thừa, đưa dữ liệu vào các trường đã xác định với
định dạng phù hợp. Bên cạnh đó, tại bước này còn đặt ra các ABC form để làm
chuẩn và làm phương hướng cho việc phân tích phía sau.
Phân tích dữ liệu: Đây có thể coi là phần quan trọng nhất. Tại đây, dữ liệu sẽ
được phân loại thành các nhóm cụ thể, từ các nhóm này có thể dễ dàng xác định
được sở thích người dùng và có thể đưa ra các gợi ý từ kết quả đã phân tích.
Mô hình tổng quát của phần phân tích dữ liệu được thể hiện như Hình 3.1.
9
Internet
Thu thập dữ liệu
Tiền xử lý
Crawl tin tức
Đặt ra ABC form
Phân tích dữ liệu
Phân loại theo
người dùng
Phân tích
dấu trang
Thu thập hành vi
người dùng
Chuẩn hóa
dữ liệu
Phân loại theo
thời gian
Database
Hình 3.1: Mô hình tổng quát phân tích dữ liệu
Bảng 3.1: Mô tả các giai đoạn phân tích dữ liệu
Module
Thu thập dữ liệu
Bước
Mô tả
Thu thập tin tức
Thông tin về tin tức được thu
thập thông qua RSS từ các trang
tin tức. Các thông tin lấy được sẽ
được chuyển cho Tiền xử lý.
Thu thập hành vi người dùng Khi người dùng truy cập hệ
thống để đọc tin tức, các dữ liệu
về việc đọc tin ví dụ như: người
dùng, tin tức được đọc, thời gian
đọc tin sẽ được ghi lại.
Tiền xử lý
Đặt ra các ABC form
Đưa ra các form để xác định
phương hướng phân tích và lưu
trữ, từ đó có thể dễ dàng thực
hiện phán đoán.
10
Chuẩn hóa dữ liệu
Xác định các trường thông tin
cần thiết, làm sạch các dữ liệu
dư thừa, lưu trữ các dữ liệu đã
thu thập được vào cơ sở dữ liệu
với các trường đã xác định.
Phân tích dữ liệu
Phân loại theo người dùng
Phân chia các thao tác người
dùng đã bắt được vào các nhóm
dành riêng cho từng người dùng.
Phân loại theo thời gian
Sau khi đã xác định được người
dùng, dữ liệu bắt được tiếp tục
được phân chia theo thời gian,
theo từng khoảng thời gian trong
ngày và theo từng ngày trong
tháng.
Phân tích dấu trang
Phân tích mối liên kết giữa các
tin tức. Việc phân tích này giúp
cho việc đưa ra gợi ý các bài liên
quan khi người dùng đọc một tin
tức nào đó.
3.1.2. Thu thập dữ liệu
Đây là một trong những bước chuẩn bị cho việc phân tích, hệ thống được xây
dựng thu thập 2 loại dữ liệu: dữ liệu về tin tức và dữ liệu về hành vi của người dùng.
Hành vi của người dùng ở đây chính là những yêu cầu đọc tin từ phía người dùng gửi
cho hệ thống.
Thu thập tin tức
Tin tức được thu thập về qua RSS của các trang tin tức, những dữ liệu này
được dùng để phục vụ cho việc đọc tin của người dùng và phân tích dữ liệu.
Thông tin của RSS được lưu trên CSDL, trong đó có 2 thông tin quan trọng là
link của RSS và chủ đề mà RSS đó mang. Chủ đề này được gán sẵn cho RSS.
11
Lấy RSS link
Phân tách
nội dung
xml
Lấy nội
dung xml
Chuyển
sang cho
Tiền xử lý
Hình 3.2: Luồng hoạt động thu thập tin tức
Luồng hoạt động của thu thập tin tức được mô tả trong Bảng 3.2:
Bảng 3.2: Mô tả luồng hoạt động của thu thập tin tức
Bước
Mô tả
Lấy RSS link
Link của RSS được lấy từ CSDL phục vụ cho việc thu thập
dữ liệu.
Lấy nội dung xml
Sau khi có được link, hệ thống request đến link đó và nhận về
nội dung có định dạng xml chứa thông tin về các tin tức mới
được cập nhật của RSS tương ứng.
Phân tách dữ liệu
Tiến hành phân tách dữ liệu lấy được từ xml thành các
trường riêng biệt.
Chuyển sang Tiền
xử lý
Dữ liệu sau khi phân tách được chuyển cho phần Tiền xử lý.
Thu thập hành vi người dùng
Việc thu thập hành vi người dùng được thực hiện khi người dùng yêu cầu
một tin tức từ hệ thống. Lúc đó các thông tin như người dùng nào yêu cầu, thời
điểm yêu cầu, tin tức yêu cầu, thời gian đọc tin sẽ được hệ thống bắt được và
chuyển cho phần Tiền xử lý chuẩn hóa và làm sạch.
3.1.3. Tiền xử lý
Nhờ có Tiền xử lý, việc phân tích sẽ trở nên đơn giản và nhanh chóng hơn do dữ
liệu đầu vào sẽ được chuẩn hóa và làm sạch. Tại bước này, ta đưa ra các form theo
ABC model để dựa vào đó làm mục tiêu và phương hướng cho việc thống kê và phân
tích ở bước sau. Tiếp đó, dữ liệu sau khi có được từ Thu thập dữ liệu sẽ được chuẩn
hóa và loại bỏ các thành phần dư thừa.
Đưa ra các ABC form
Cụ thể trong khóa luận này, tôi sử dụng một số form như sau:
-
Form hiển thị tần suất truy cập theo từng ngày trong tháng: form này giúp ích
cho việc theo dõi sự thay đổi về sở thích của người dùng theo thời gian. Với
12
việc ghi lại tần suất truy cập của người dùng đối với mỗi chủ đề, ta có thể dễ
dàng biết được trong những thời gian gần đây mối quan tâm của người dùng có
thay đổi hay không và nếu có thì nó chuyển theo hướng nào.
Bảng 3.3: Bảng hiển thị tần suất xem tin của từng chủ đề theo các ngày trong tháng
Category
Time
1
2
3
4
5
…
Category1
…
Category2
…
Category3
…
Category4
…
-
26
27
28
29
Form hiển thị tần suất truy cập theo khoảng thời gian trong ngày: Đối với mỗi
khoảng thời gian trong ngày, người dùng lại có những thói quen đọc tin tức
khác nhau. Trong khóa luận này, tôi chia một ngày ra thành 12 khoảng thời gian
với độ dài 2 tiếng. Theo dõi tần suất truy cập theo từng khoảng thời gian giúp ta
biết được với thời gian nào trong ngày thì người dùng thích đọc loại tin nào
hơn.
Bảng 3.4: Bảng hiển thị tần suất xem tin theo từng khoảng thời gian trong ngày
Time
0-2 2-4 4-6 6-8
8-12
12-14
Category
Category1
Category2
Category3
Category4
13
1416
1618
1820
2022
2224
-
Form hiển thị tần suất truy cập của mỗi người dùng: Do mỗi người dùng lại có
thói quen khác nhau, do đó việc phân tích theo từng người dùng là rất cần thiết.
Bảng 3.5: Bảng hiện thị tần suất xem tin của mỗi người dùng đối với các category.
User
Category
Category1
Category2
Category3
Category4
Category5
User1
User2
User3
User4
Như đã trình bày, các ABC form được đưa ra để làm mẫu và xác định phương
hướng cho việc phân tích. Kết hợp các ABC form lại, ta có thể dễ dàng xác định được
sở thích của một người dùng khi truy cập vào hệ thống.
Chuẩn hóa dữ liệu
Dữ liệu tin tức và hành vi người dùng được chuyển đến thành phần này để
tiến hành chuẩn hóa, làm sạch. Việc này là để thống nhất trong việc sử dụng và
phân tích dữ liệu, giúp giữ liệu không bị phân tán và dư thừa những phần không
cần thiết gây nặng nền cho hệ thống.
Đối với dữ liệu tin tức, các trường cần thiết cho việc được xác định, dữ
liệu được đưa về đúng định dạng theo từng trường đặt ra sau đó lưu trữ vào
CSDL. Phần mô tả và ý nghĩa của các trường được sử dụng, tôi sẽ mô tả kĩ hơn
trong chương 4.
Đối với dữ liệu hành vi người dùng, thông tin về thời gian đọc một tin của
người dùng được kiểm tra có thỏa mãn là người dùng đã đọc tin tức đó hay chỉ
đơn thuẩn là bật lên và lướt qua. Nếu người dùng chỉ yêu cầu nhưng không đọc
thì thông tin về hành vi đó sẽ được xóa để tránh việc dư thừa dữ liệu.
Dữ liệu hành vi người dùng thực chất là những yêu cầu (request) từ phía
người dùng đối với hệ thống. Từ những phần sau, tôi xin phép được sử dụng
cụm từ request người dùng thay cho hành vi người dùng để trình bày rõ ràng và
phù hợp hơn với việc giải quyết vấn đề cũng như kiến trúc hệ thống.
14
3.1.4. Phân tích dữ liệu
Với những ABC form đã đưa ra và các dữ liệu thu thập đã qua tiền xử lý, tiến
hành phân loại dữ liệu vào các nhóm để phục vụ cho việc dự đoán.
Phân loại theo người dùng
Từ dữ liệu request của người dùng, ta có thể biết được người dùng nào request
tin tức nào rồi từ đó phân loại ra được các chủ đề mà người dùng xuyên truy cập. Ta
có sơ đồ luồng hoạt động như Hình 3.3.
Request của
người dùng
Xác định người
dùng và chủ đề
Cặp người dùngchủ đề đã tồn tại
Yes
Tăng số lần truy
cập lên 1
No
Tạo hàng mới
Tính trọng số
Hình 3.3: Luồng hoạt động của Nhóm chủ đề theo người dùng
Bảng 3.6: Mô tả các bước trong luồng hoạt động của Nhóm chủ đề theo người dùng
Bước
Bước 1
Vai trò
Lấy thông tin request của người dùng, bao gồm: định danh người
dùng và định danh tin tức.
Bước 2
Xác định người dùng và chủ đề của request.
Bước 3
Kiểm tra xem hàng có cặp người dùng và chủ đề đó đã tồn tại trong
bảng CSDL hay chưa. Nếu đã tồn tại thì tăng số lần truy cập của hàng
đó lên 1. Ngược lại thì tạo một hng mới với người dùng và chủ đề đã
lấy được cùng số lần truy cập gán là 1.
Bước 4
Tính toán trọng số dựa theo tỉ lệ giữa số lần truy cập của một cặp
người dùng – chủ đề với tổng số lần truy cập của người dùng đó.
15
Phân loại theo thời gian
Ta chia một ngày ra làm 12 khoảng ứng với 24 tiếng. Từ dữ liệu request của
người dùng, ta biết được tin tức request và thời gian request. Từ dữ liệu tin tức, ta biết
được category của bài đó. Tổng hợp lại ta có thể đưa ra số lần truy cập vào từng
category trong từng khoảng thời gian và lưu vào cơ sở dữ liệu như hình 4. Với dữ liệu
phân tích được, ta có thể xác định được khoảng thời gian nào, người dùng thích truy
cập những loại tin nào để đưa ra dự đoán hợp lý. Ta có sơ đồ luồng hoạt động như sau.
Request của
người dùng
Xác định thời
gian và chủ đề
Cặp thời gian chủ đề đã tồn tại
Yes
Tăng số lần truy
cập lên 1
No
Tạo hàng mới
Tính trọng số
Hình 3.4: Luồng hoạt động của module Nhóm chủ đề theo thời gian
Bảng 3.7: Mô tả các bước trong luồng hoạt động Nhóm chủ đề theo thời gian
Bước
Vai trò
Bước 1
Lấy thông tin request của người dùng, bao gồm: định danh tin tức và
thời gian truy cập.
Bước 2
Xác định khoảng thời gian và chủ đề của request.
Bước 3
Kiểm tra xem hàng có cặp thời gian và category đó đã tồn tại trong
bảng cơ sở dữ liệu hay chưa. Nếu đã tồn tại thì tăng số lần truy cập
của hàng đó lên 1. Ngược lại thì tạo một hàng mới với thời gian và
category đã lấy được cùng số lần truy cập gán là 1.
Bước 4
Tính toán trọng số dựa theo tỉ lệ giữa số lần truy cập của một cặp
người dùng – chủ đề với tổng số lần truy cập của người dùng đó.
16
Xác định dấu trang
Ta có tập các phiên truy cập của người dùng, mỗi giao dịch chứa tập các tin tức
đã được người dùng truy cập (một phiên truy cập ở đây được xác định là từ khi người
dùng bắt đầu mở trình duyệt truy cập vào hệ thống đến khi người dùng tắt trình duyệt
hoặc có thể là trong một khoảng thời gian nào đó do người quản trị đặt). Áp dụng thuật
toán Apriori, ta tìm ra các luật kết hợp cùng độ tin cậy và độ hỗ trợ của nó.
Giả sử ta có người dùng trong một phiên truy cập đã đọc các tin A, B, C và hiện
tại đang đọc tin D. Nhiệm vụ đặt ra là tìm ra được độ tin cậy của luật {A,B,C}=>D.
Bằng cách tìm ra được độ tin cậy như thế, lần sau người dùng khác có đọc các tin A,
B, C thì ta sẽ biết được có nên đưa ra gợi ý tin D tiếp theo cho người dùng hay không.
Do có một số yêu cầu riêng của việc đọc tin tức nên tôi xin trình bày một số điểm
cải tiến thuật toán Apriori áp dụng cho hệ thống như sau:
-
-
-
-
Vì ta phải thực hiện với mọi bài tin tức do đó, ta coi tất cả các tập có độ dài là 1
đều phổ biến.
Trình tự truy cập các tin được sắp xếp theo thời gian và liên tiếp, kết quả được
suy đoán luôn là phần tử cuối cùng của tập mục, tập {A,B,C} sẽ chỉ sinh ra luật
theo đúng thứ tự là {A,B}=>C và B=>C, không sinh ra các luật khác như
{A,C}=>B hay {B,C}=>A hay A=>C hay A=>B.
Hệ thống thực thi trong thời gian thực, thời gian có giá trị của một tin tức kéo
dài không lâu, do đó không thể đợi có đầy đủ dữ liệu của các phiên truy cập rồi
mới thực hiện phân tích. Việc phân tích sẽ được thực hiện song song quá trình
đọc tin của người dùng. Các tập mục, luật sẽ được sinh mới, bổ sung và thực
hiện tính số lần xuất hiện ngay khi có một tin tức mới được đọc.
Việc sinh luật thực hiện như sau. Ví dụ ta đang có luật {A,B}=>C sinh ra từ tập
{A,B,C}, người dùng đọc tin D ngay sau tin C, tập bổ sung sẽ là {A,B,C,D} và
các luật mới được sinh ra là {A,B,C}=>D, {B,C}=>D và C=>D.
Do thực thi trong thời gian thực, không phải là tập dữ liệu đã đầy đủ nên các tập
không phổ biến không bị loại bỏ mà vẫn được giữ lại để phục vụ cho việc phân
tích ở những phiên truy cập sau.
17
Người dùng có
request mới
Xác định phiên
truy cập
Sinh tập mục và
sinh luật
Luật đã
tồn tại
Yes
Tăng số lần
xuất hiện
No
Tạo luật mới
Tính độ tin cây
Hình 3.5: Luồng hoạt động của Xác định dấu trang
Bảng 3.8: Mô tả các bước trong luồng hoạt động của Xác định dấu trang
Bước
Bước 1
Vai trò
Người dùng đọc một tin. Thông tin về request tin tức đó của
người dùng được bắt và tiến hành phân tích.
Bước 2
Xác định phiên truy cập hiện tại và tìm các tin đã được đọc
trước đó trong cùng một phiên.
Bước 3
Từ các tập tin tức tìm được, tiến hành sinh các tập mục và sỉnh
các luật theo quy tắc đã trình bày ở trên.
Bước 4
Kiểm tra xem luật sinh ra đã tồn tại hay chưa. Nếu đã có thì tăng
số lần xuất hiện của luật đó lên, nếu chưa thì tạo luật mới trong
CSDL.
Bước 5
Tính toán độ tin cậy của các luật và cập nhật vào CSDL.
3.2. Dự đoán sở thích người dùng
Từ dữ liệu đã phân tích được, ta tiến hành đưa ra các gợi ý cho người dùng. Việc
gợi ý được thực hiện trong 2 trường hợp: khi người dùng vào trang chủ và khi người
dụng đọc một tin tức cụ thể.
3.2.1. Gợi ý tại trang chủ
Khi người dùng vào trang chủ, hệ thống tiến hành xác định người dùng và thời
gian đăng nhập, từ đó đối chiếu với kết quả đã phân tích được để lấy ra các chủ đề phù
hợp với sở thích người dùng.
Sở thích của người dùng bao gồm sở thích ngắn hạn và sở thích dài hạn, sở thích
ngắn hạn là các sở thích trong thời gian một tuần hoặc một tháng gần nhất và sở thích
18
dài hạn là thời gian trong toàn bộ thời gian sử dụng của người dùng. Sở thích ngắn hạn
sẽ có độ ưu tiên cao hơn so với sở thích dài hạn.
Để có thể tính toán được đúng độ ưu tiên của mỗi chủ đề, tôi áp dụng công thức
[6] sau:
Gọi n là độ ưu tiên của một chủ đề, nweek là trọng số của chủ đề đó trong trong 1
tuần gần nhất, nmonth là trọng số của chủ đề đó trong 1 tháng gần nhất và nall là trọng
của chủ đề đó trong toàn bộ khoảng thời gian. Độ ưu tiên n sẽ được tính bằng:
n = µ.nweek + µ2.nmonth + µ3.nall
Trong đó, µ € [0;1]. µ có thể được điều chỉnh riêng cho từng người dùng sao cho
phù hợp. Khi µ gần tới 0 hơn, trọng số sẽ nghiêng về sở thích ngắn hạn hơn, còn khi µ
gần tới 1 hơn, trọng số sẽ dần nghiêng về phía sở thích dài hạn. Trong khóa luận này
tôi xin phép lấy giá trị của µ=0.5
Ta có luồng hoạt động của việc dự đoán sở thích người dùng tại trang chủ như
Hình 3.6.
Xác định người
dùng, thời gian
truy cập
Lấy kết quả đã
phân tích
Tính toán độ
ưu tiên
Đánh giá kết quả
phân tích
Trả về danh sách
sắp xếp
Hình 3.6: Luồng hoạt động khi người dùng vào trang chủ
Sau khi độ ưu tiên của mỗi chủ đề được tính toán, kết quả được đánh giá và các
chủ đề được sắp xếp theo độ ưu tiên giảm dần và trả về cho người dùng dữ liệu của các
chủ đề theo sắp xếp đó. Cụ thể vai trò của từng bước trong luồng hoạt động được trình
bày trong Bảng 3.9.
Bảng 3.9:Vai trò các bước trả về tin tức theo sở thích người dùng
Bước
Vai trò
Bước 1
-
Xác định người dùng và thời gian truy cập.
Nếu người dùng không đăng nhập thì đặt là AnonymousUser
(người dùng nặc danh).
Bước 2
-
Từ người dùng và thời gian đã xác định, lấy kết quả là các
nhóm chủ đề tương ứng từ dữ liệu đã phân tích.
-
Nếu người dùng là nặc danh thì kết quả lấy là kết quả chung cho
toàn bộ người dùng.
19
-
Nếu chưa có dữ liệu về người dùng đã đăng nhập tại khoảng
thời gian đã xác định thì kết quả được lấy cũng sẽ dựa vào kết
quả chung của toàn bộ người dùng.
Bước 3
-
Từ các trọng số lấy được, tiến hành tính toán độ ưu tiên cho
từng chủ đề.
Bước 4
-
Dựa vào độ ưu tiên, sắp xếp các chủ đề theo độ ưu tiên giảm
dần.
Bước 5
-
Dữ liệu các tin tức được sắp xếp theo thứ tự chủ đề đã đưa ra và
trả về cho người dùng.
3.2.2. Gợi ý khi một tin tức được yêu cầu
Khi người dùng truy cập một tin tức cụ thể, tin tức được yêu cầu sẽ được xác
định. Hệ thống tiến hành tìm kiếm trong CSDL các luật đã phân tích được mà có tin
tức nằm ở vị trí cuối của phần nguyên nhân. Ví dụ tin tức được yêu cầu là tin tức D thì
sẽ tìm kiếm tất cả các luật mà có phần nguyên nhân là {D}, {C,D},
{B,C,D},…,{…,D}.
Xác định tin tức
yêu cầu
Tìm kiếm luật
Tìm được luật
Yes
Đánh giá luật
Trả về danh sách
tin tức liên quan
No
Trả về các tin
mới trong cùng
chủ đề
Hình 3.7: Luồng hoạt động khi một tin tức cụ thể được yêu cầu
Sau khi tìm được tất cả các luật liên quan, hệ thống tiến hành đánh giá và sắp xếp
các luật theo độ giảm dần của độ tin cậy. Sau đó, danh sách các tin tức liên quan được
loại bỏ các tin trùng lặp và trả về cho người dùng theo đúng thứ tự.
Trường hợp không tìm được luật nào, các tin mới trong cùng chủ đề sẽ được trả
về. Cụ thể các bước được trình bày trong Bảng 3.10.
20
Bảng 3.10: Vai trò các bước gợi ý tin tức liên quan
Bước
Vai trò
Bước 1
Xác định tin tức được yêu cầu.
Bước 2
Tìm kiếm luật trong CSDL.
Bước 3
Nếu không luật nào được tìm thấy, các tin tức mới trong cùng chủ đề
với tin tức yêu cầu sẽ được trả về.
Bước 4
Nếu tìm được các luật thì tiến hành đánh giá và sắp xếp theo độ tin cậy
của luật.
Bước 5
Loại bỏ các tin tức trùng lặp và trả về danh sách tin tức liên quan.
21
Chương 4. Phân tích và phát triển hệ thống
4.1. Kiến trúc hệ thống
Với phương pháp giải quyết đã đưa ra và dựa và các cơ sở công nghệ tôi xây
dựng hệ thống có kiến trúc như sau.
Server
View
View Request
URL dispatcher
Template
Controller
Model
Database
Hình 4.1: Mô hình kiến trúc hệ thống
Bảng 4.1: Mô tả các thành phần hệ thống
Thành phần
View
Server
Vai trò
View Request
Các yêu cầu được gửi về server dưới dạng các url.
Template
Phần chịu trách nhiệm hiển thị dữ liệu trên trình
duyệt (html, javascript).
Model
Kết nối và trao đổi dữ liệu giữa backend và cơ sở dữ
liệu.
Controller
Các hàm tương ứng với các url, chịu trách nhiệm
phân tích, lấy dữ liệu, đưa vào template để hiển thị
cho người dùng.
URL dispatcher
Một chức năng được Django cung cấp có chức năng
22
phân tích url và gọi đến hàm tương ứng từ danh sách
các url đã được khai báo.
Lưu trữ dữ liệu phục vụ cho quá trình phân tích và dự
Database
đoán.
4.2. Cấu trúc cơ sở dữ liệu
4.2.1. Bảng lưu trữ thông tin về các tin tức
Tin tức sau khi thu thập, được lưu trong cơ sở dữ liệu theo cấu trúc như Hình 4.2:
Hình 4.2: Bảng lưu trữ thông tin tin tức
Bảng 4.2: Ý nghĩa các trường thông tin của tin tức
Trường
Ý nghĩa
id
Định danh tin tức.
title
Tiêu đề tin tức.
description
Mô tả tin tức.
category
Chủ đề của tin tức.
pubdate
Thời gian tin tức xuất bản.
url
URL của tin tức.
image
Ảnh minh họa tin tức.
numberaccess
Số lần truy cập tin tức.
23
4.2.2. Bảng lưu trữ request người dùng
Các request của người dùng được lưu lại để phục vụ cho quá trình phân tích bao gồm
các trường được trình bày như Hình 4.3.
Hình 4.3: Bảng lưu trữ thông tin request của người dùng
Bảng 4.3: Ý nghĩa các trường thông tin của request người dùng
Trường
Ý nghĩa
id
Định danh request
user
Username của người dùng (không thể lưu id vì với người dùng
nặc danh id là None).
article
Định danh tin tức.
request_time
Thời gian yêu cầu tin tức của người dùng.
session
Phiên truy cập của người dùng
4.2.3. Bảng lưu trữ kết quả phân tích nhóm người dùng, thời gian, chủ đề
Việc lưu trữ kết quả phân tích nhóm người dùng, thời gian, chủ đề được chia
thành 2 bảng CategoryTimeUser lưu kết quả phân tích theo từng ngày trong vòng 1
tháng trở lại và CategoryTimeUserAll lưu kết quả phân tích trong toàn bộ thời gian.
24
Hình 4.4: Bảng lưu trữ kết quả phân tích nhóm người dùng, thời gian, chủ đề
Bảng 4.4: Ý nghĩa các trường thông tin của kết quả phân tích
Trường
Ý nghĩa
id
Định danh nhóm phân tích.
user
Username người dùng.
duration
Khoảng thời gian trong ngày.
date
Ngày phân tích.
category
Chủ đề phân tích.
numberaccess
Số lần truy cập phân tích được.
weight
Trọng số của mỗi nhóm
4.2.4. Bảng lưu trữ luật
Luật được chia thành nguyên nhân và kết quả, ví dụ luật {A,B}=>C thì {A,B} là
nguyên nhân và C là kết quả. Phần lưu trữ luật được chia thành 2 bảng chính:
-
Bảng AssociationRule có nhiệm vụ lưu trữ các luật bao gồm: định danh luật, số
phần tử của nguyên nhân, kết quả của luật và độ tin cậy của nó.
Bảng RuleCause có nhiệm vụ lưu các tập nguyên nhân của các luật bao gồm
các trường: định danh luật, phần tử của luật và vị trí trong luật (thứ tự trong
nguyên nhân), ví dụ với luật đã nêu thì vị trí của A là 1 và vị trí của B là 2.
25
Hình 4.5: Bảng lưu trữ luật kết hợp
Bảng 4.5: Ý nghĩa các trường trong bảng AssociationRule
Ý nghĩa
Trường
id
Định danh luật
numbercause
Số phần tử của nguyên nhân của luật
result
Định danh của tin tức kết quả mà luật suy ra được
confidence
Độ tin cậy của luật
numberappear
Số lần xuất hiện của luật. Số lần xuất hiện được lưu lại để
tính toán lại độ tin cậy khi có dữ liệu cập nhật mới.
Bảng 4.6: Ý nghĩa các trường trong bảng RuleCause
Trường
Ý nghĩa
id
Định danh của hàng
rule
Định danh của luật
cause
Định danh của tin tức là phần tử nằm trong nguyên nhân của
luật.
position
Vị trí của phần tử trong nguyên nhân đó
26
4.3. Cấu trúc các thành phần
Việc xây dựng các thành phần chương trình tuân thủ theo mô hinh MVC, được
mô tả chi tiết như sau.
4.3.1. Model
Model là nơi chịu trách nhiệm trao đổi dữ liệu với cơ sở dữ liệu. Mỗi class trong
Model tương ứng với một bảng dữ liệu và mỗi thuộc tính tương ứng với một trường
của bảng đó. Bằng cách sử dụng DAO, việc truy vấn trở lên dễ dàng thông qua các
hàm được Django cung cấp.
Hình 4.6: Danh sách các lớp trong Model
4.3.2. Controller
Controller là nơi thực hiện việc lấy dữ liệu từ Model, phân tích, đánh giá và trả ra
dữ liệu cho View. Controller thực chất là các hàm Python, với mỗi hàm sẽ ứng với một
27
url cụ thể. Khi một đối tượng người dùng yêu cầu một url, hàm tương ứng với url đó
sẽ được gọi.
Trong hệ thống này, các hàm phục vụ cho việc phân tích, dự đoán được thể hiện
ở Hình 4.7. Các hàm phân tích và dự đoán sẽ được Controller gọi đến tùy trường hợp
cụ thể.
Hình 4.7: Danh sách hàm view
Các hàm trong analys là những hàm có chức năng phân tích dữ liệu và các hàm
trong predict là các hàm có chức năng dự đoán và trả về gợi ý cho người dùng. Cụ thể
vai trò của các hàm được mô tả trong Bảng 4.7, 4.8 và 4.9.
Bảng 4.7: Mô tả vai trò các hàm trong Controller
Hàm
Vai trò
index
Trả về trang index cho người dùng.
layoutdata
Trả về dữ liệu tin tức đã được sắp xếp theo độ ưu tiên cho
trang index.
articledata
Trả về dữ liệu một tin tức cụ thể và danh sách các tin tức
liên quan.
analytics
Gọi hàm phân tích dữ liệu.
28
Bảng 4.8: Mô tả vai trò các hàm phân tích
Hàm
Vai trò
saveRequest
Lưu lại request người dùng.
categorytimeuser
Phân tích request người dùng thành các nhóm tương ứng.
Tiến hành xóa các nhóm đã quá hạn (30 ngày).
categorytimeuserpast
Lưu trữ thông tin các nhóm phân tích tính từ 30 ngày trước
so với thời gian hiện tại phân tích.
related
Phân tích dấu trang.
Bảng 4.9: Vai trò các hàm dự đoán
Hàm
Vai trò
getFavCategory
Trả về các chủ đề ưu tiên đối với mỗi người dùng xác định.
getArticles
Trả về các tin tức được sắp xếp tương ứng với mỗi chủ đề.
getArticlesJSON
Chuyển dữ liệu về các tin tức đã lấy được thành json.
getContentArticle
Thu thập nội dung của một tin tức xác định.
getRelatedArticles
Lấy các tin tức liên quan đến tin tức đang đọc.
4.3.3. View
Đây là phần có chức năng hiển thị dữ liệu ra trình duyệt cho người dùng. Phần
View này, được sự cho phép của bạn Trương Văn Hưng [2], tôi có sử dụng lại giao
diện của bạn và chỉnh sửa cho phù hợp với hệ thống của bản thân. Cụ thể là thay đổi
về dữ liệu hiển thị trong giao diện đó. Các thiết kế cho giao diện được thể hiện như
Hình 4.8 và Hình 4.9.
29
Login
Logout
Category1
Article2
Category2
Article3
Article1
Category3
Category4
Article4
Category5
Article5
Article6
Category6
Article7
Article8
Category7
Hình 4.8: Giao diện màn hình hiển thị dữ liệu
Giao diện trang chủ được chia ra làm 2 phần chính. Khung bên trái hiển thị danh
mục các chủ đề theo thứ tự ưu tiên đối với người dùng. Khung bên phải hiển thị các tin
tức theo độ ưu tiên lần lượt từ trái sang phải, từ trên xuống dưới.
30
Login
Logout
Back
Related1
Title
Related2
Related3
Related4
Content
Related5
Related6
Related7
Hình 4.9: Giao diện khi đọc một tin tức của người dùng
Khi người dùng bấm vào một tin tức cụ thể, tin tức đó sẽ được phóng to và hiển
thị nội dung cụ thể. Khung bên phải hiển thị các tin tức liên quan đến tin tức đang
được đọc.
Dữ liệu được lấy bằng ajax qua các url gửi đến server và điền vào các ô tin tức.
Việc dữ liệu được lấy như thế nào sẽ được trình bày trong phần ngay sau đây. Thêm
vào đó, các khung tin tức đều có màu riêng biệt phụ thuộc vào chủ đề của tin tức đó.
31
4.4. Biểu đồ tuần tự
4.4.1. Người dùng truy cập trang chủ
Hình 4.10: Biều đồ tuần tự khi người dùng truy cập trang chủ
Khi người muốn truy cập trang chủ, một url được người dùng điền vào trình
duyệt, url này được URL_dispatcher phân tích và tìm kiếm trong danh sách các url đã
khai báo. Hàm tương ứng là hàm index được yêu cầu tới phía Controller. Nội dung
hàm index của Controller gửi về là một template và hiển thị ra cho người dùng, lúc này
vẫn chưa có dữ liệu tin tức được hiển thị.
32
Để có dữ liệu, View sẽ gửi một dataRequest, request này được gửi thông qua
ajax dưới dạng một url, url này cũng được URL_dispatcher phân tích và gọi đến hàm
tương ứng. Hàm layoutdata được gọi có nhiệm vụ lấy những dữ liệu đã phân tích của
người dùng từ CSDL, đánh giá và sắp xếp các chủ đề theo độ ưu tiên. Cuối cùng các
tin tức được lấy từ CSDL và đưa vào các chủ đề đã sắp xếp sau đó trả về cho View
dưới dạng json để hiển thị ra cho người dùng.
Bảng 4.10: Mô tả biểu đồ tuần tự Hình 4.10
Bước
Tên bước
Mô tả
1
HomeRequest
Người dùng truy cập trang chủ.
1.1
indexRequest
Yêu cầu trang index tới server.
1.1.1
index
URL dispatcher nhận url request từ View và gọi
đến hàm index() tương ứng.
1.2
dataRequest
Sau khi nhận được trang index, View gửi yêu cầu
lấy dữ liệu.
1.2.1
layoutdata
URL dispatcher nhận được request thì gọi đến
hàm layoutdata.
1.2.1.1
getCategoryTimeUser View yêu cầu Model trả về kết quả của các nhóm
dữ liệu đã được phân tích.
1.2.1.1.1 query
Model truy vấn dữ liệu từ cơ sở dữ liệu và trả về.
1.2.1.2
calculate_weight
Tính toán tỉ lệ, độ ưu tiên của các chủ đề và trả
về danh sách các chủ đề theo độ ưu tiên.
1.2.1.3
getArticles
Yêu cầu Model trả về các tin tức có trong cơ sở
dữ liệu.
1.2.1.4
sort_by_FavCategory
Sắp xếp các tin tức vào các chủ đề tương ứng.
1.2.1.5
convert_to_JSON
Chuyển dữ liệu đã lấy được sang json và trả về
cho View.
1.3
updateData
Phân tích dữ liệu json nhận được và hiển thị
tương ứng.
33
4.4.2. Người dùng truy cập một tin tức
Khi một người dùng truy cập một tin tức, có 2 nhiệm vụ chính mà hệ thống phải
làm. Một là lấy về nội dung tin tức của người dùng đã request cùng các tin tức liên
quan từ CSDL. Hai là khi người dùng bấm nút back để quay lại trang chủ, hệ thống
cần xác định thời gian đọc của người dùng và tiến hành phân tích dựa trên hành vi đọc
tin của người dùng.
Cụ thể ta có 2 biểu đồ tuần tự ứng với 2 nhiệm vụ như sau.
Hình 4.11: Biểu đồ tuần tự khi người dùng truy cập một tin tức
Khi người dùng yêu cầu một tin tức cụ thể, một url sẽ được gửi qua ajax tới
server, URL_dispatcher phân tích url và gọi đến hàm tương ứng của Controller. Hàm
articleData được gọi, Controller thực hiện lấy thông tin bài báo từ CSDL thông qua
Model, nội dung cụ thể của tin tức được thu thập từ link của tin tức. Tiếp theo
Controller lấy thông tin về các luật đã phân tích trong CSDL và sắp xếp nó theo độ tin
cậy giảm dần. Các kết quả lấy được được trả về cho View và hiển thị cho người dùng.
34
Bảng 4.11: Mô tả biểu đồ tuần tự Hình 4.11
Bước
Tên bước
Mô tả
1
ArticleRequest
Người dùng yêu cầu đọc một tin tức cụ thể.
1.1
postDataRequest
View gửi yêu cầu dưới dạng url cho server.
1.1.1
postdata
URL dispatcher nhận biết url và gọi đến hàm
postdata.
1.1.1.1
getArticleByID
View yêu cầu Model trả về thông tin của tin tức
được yêu cầu.
1.1.1.1.1
Query
Model truy vấn cơ sở dữ liệu.
1.1.1.2
crawlArticleContent Dựa vào url của tin tức để lấy nội dung chính của
tin tức.
1.2
updateData
View cập nhật nội dung chính của tin tức.
Sau khi người dùng đã đọc xong tin và muốn quay về trang chủ, người dùng bấm
nút Back trên giao diện hệ thống (nút Back này không phải là nút Back của trình
duyệt). Tại thời điểm đó, thời gian đọc tin của người dùng được tính toán, nếu thỏa
mãn thời gian được người quản trị đặt ra trước đó thì mới tính là người dùng đã đọc
tin, nếu không thì chỉ là người dùng tò mò bấm vào và thoát ra ngay.
35
Hình 4.12: Biểu đồ tuần tự khi người dùng bấm nút back để quay lại trang chủ
Nếu xác định được là người dùng có đọc tin, một yêu cầu phân tích được gửi tới
server thông qua ajax dưới dạng url. URL_dispatcher phân tích url này và gọi hàm
tương ứng trong Controller. Hàm analysis được gọi thực hiện các chức năng: lưu
thông tin về request của người dùng vào CSDL, phân loại thông tin nhận được vào các
nhóm và tính luật kết hợp giữa các tin tức. Cụ thể chức năng các hàm được mô tả trong
Bảng 4.12.
Bảng 4.12: Mô tả biểu đồ tuần tự Hình 4.12
Bước
Tên bước
Mô tả
1
click_back
Người dùng nhấn nút quay lại trang chủ sau khi
đọc một tin tức cụ thể.
1.1
check_read_time
Lấy thời gian tại lúc bấm nút và tính thời gian
đọc tin của người dùng. Nếu thỏa mãn thời gian
thì tiếp tục.
36
1.2
analyticsRequest
View gửi yêu cầu cùng dữ liệu phân tích đến
server.
1.2.1
analytics
URL dispatcher phân tích và gọi hàm analytics.
1.2.1.1
save_request
Lưu thông tin đọc tin của người dùng vào cơ sở
dữ liệu.
1.2.1.1.1
insert
Model thực hiện them một hàng mới vào cơ sở
dữ liệu.
1.2.1.2
categorytimeuser
Phân loại thông tin vào các nhóm theo chủ đềthời gian-người dùng theo từng ngày trong vòng
2 tháng gần nhất. Dữ liệu này sẽ được lưu trong
bảng CategoryTimeUser.
1.2.1.2.1
insert or update
Đưa dữ liệu đã phân tích vào CSDL, insert nếu
chưa có dữ liệu tương tự và update nếu dữ liệu
tương tự đã tồn tại.
1.2.1.3
categorytimeuserall
Phân loại thông tin vào các nhóm theo chủ đềthời gian-người dùng chung cho toàn bộ thời
gian. Dữ liệu này sẽ được lưu trong bảng
CategoryTimeUserAll.
1.2.1.4
remove_old_row
Xóa những hàng cũ khỏi bảng
CategoryTimeUser.
1.2.1.5
associationRule
Phân tích luật kết hợp và lưu vào CSDL.
37
Chương 5. Thực nghiệm
Tôi đã tiến hành xây dựng công cụ thực nghiệm là một ứng dụng web cho phép
người dùng truy cập và đọc tin theo những gì đã trình bày ở các phần trước. Sau đây,
tôi xin trình bày về phần thực nghiệm cùng những kết quả đã đạt được.
5.1. Môi trường thực nghiệm
5.1.1. Cấu hình máy chủ
Bảng 5.1: Cấu hình máy chủ
IBM System X3200
CPU
Intel Xeon 3050 @2.13GHz
Memory
4x512MB DDR2
OS
Ubuntu 10.0.4 LTS
MySQL
Phiên bản 5.1.67
Apache
Phiên bản 2.2.14
Python
Phiên bản 2.6.5
5.1.2. Các package, thư viện sử dụng
Bảng 5.2: Các thư viện, package sử dụng
Package
Django
Version
1.6.2
Vai trò
Cung cấp các module và chức năng cho ứng
dụng web được xây dựng bằng django.
MySQL-python
1.2.2
Kết nối giữa Python và MySQL.
BeautifulSoup
3.2.1
Đọc và phân tích mã HTML.
django-celery
3.0.0
Tạo tiến trình chạy ngầm cho ứng dụng tạo bởi
Django.
feedparser
5.1.3
Đọc và phân tách nội dung xml.
38
5.1.3. Dữ liệu thực nghiệm
Dữ liệu tin tức dùng cho quá trình thực nghiệm một phần được báo Dân Việt
cung cấp, một phần tôi tiến hành thu thập hàng ngày thông qua RSS của trang báo.
Một số hình ảnh về dữ liệu đầu vào sử dụng cho quá trình thực nghiệm.
Hình 5.1: Dữ liệu tin tức sử dụng cho thực nghiệm
Dữ liệu request người dùng dùng cho thực nghiệm có được nhờ bạn bè sử dụng
hệ thống và có tiến hành sinh ngẫu nhiên các request theo tỉ lệ thống kê có được từ báo
Dân Việt.
Hình 5.2: Dữ liệu về request của người dùng cho thực nghiệm
39
5.2. Kết quả thực nghiệm
Dựa vào những dữ liệu đã có, trong quá trình thực nghiệm việc đo đạc các tham
số có thể có sai số ít nhiều, tuy nhiên số liệu tính toán được xấp xỉ như theo bảng dưới
đây.
Bảng 5.3: Thông số thực nghiệm.
Tác vụ
Thời gian phản hồi
Số lượng tin tức trong CSDL
Hơn 126 nghìn bản ghi tin tức thực tế
từ báo Dân Việt.
Số lượng request của người dùng
Hơn 10 nghìn request.
Dự đoán tin tức và trả về trang chủ (không 200~1000 ms
kể thời gian hiển thị)
Dự đoán tin tức và trả về trang chủ (bao
gồm thời gian hiển thị)
3000~5000ms
Trả về một tin tức cụ thể cùng các bài liên
4000~8000ms, (phụ thuộc khá lớn vào
quan
tốc độ mạng do khi người dùng yêu cầu
mới lấy nội dung tin tức)
Phân tích khi người dùng bấm nút ‘Back’
~2500 ms
Sau đây là một số hình ảnh trong quá trình thực nghiệm. Về phía giao diện có thể
giống với giao diện của bạn Trương Văn Hưng [2] do được tái sử dụng, tuy nhiên phần
dữ liệu là những dữ liệu được dự đoán từ phía hệ thống do tôi xây dựng.
40
Hình 5.3: Trang chủ của ứng dụng
Ở trang chủ của ứng dụng, khung bên trái là các chủ đề đã được sắp xếp theo sở
thích người dùng. Khi bấm vào mỗi chủ đề này, các dữ liệu ở khung bên phải sẽ được
cập nhật lại với những tin tức của dữ liệu được bấm. Khung bên phải là nơi hiển thị
các tin tức theo độ ưu tiên giảm dần từ trái sang phải từ trên xuống dưới. Thông tin
hiển thị là tiêu đề, ngày xuất bản và mô tả.
41
Hình 5.4: Trang hiển thị một tin tức cụ thể
Ở trang hiển thị một tin tức cụ thể, khung bên trái là nội dung của tin tức sau khi
đã được lấy về và khung bên phải là các tin tức liên quan đến tin tức đang được hiển
thị.
5.3. Nhận xét, đánh giá, so sánh
Hiện tại hệ thống có thể đáp ứng nhu cầu sử dụng và đọc tin cơ bản. Các tin tức
được dự đoán và gợi ý phù hợp với sở thích người dùng.
Thời gian phản hồi đối với người dùng khá nhanh (2~3s), ngoài ra nó còn phụ
thuộc lớn vào lượng dữ liệu sử dụng. Bên cạnh đó việc phân tích được tiến hành song
song với quá trình đọc tin giúp người dùng không mất thời gian chờ đợi.
Bằng việc sử dụng ngôn ngữ Python cùng framework Django, kết hợp với việc
đánh chỉ mục cho các nhóm dữ liệu, thời gian tính toán và truy vấn cơ sở dữ liệu đã
giảm đáng kể. Tuy nhiên với lượng dữ liệu ngày một tăng và số lượng tương tác của
người dùng lớn sẽ không tránh khỏi tăng thời gian phản hồi, đáp ứng từ phía server.
Để khắc phục việc dữ liệu tăng dần theo thời gian, hệ thống sẽ tiến hành tự động
phân hoạch theo hàng tháng cho các bảng dữ liệu tin tức và request của người dùng.
Việc phân hoạch này có thể giảm thời gian truy vấn dữ liệu một cách đáng kể.
42
So sánh với một số hệ thống phân tích khác như Google Analytics, tuy hệ thống
chưa mạnh bằng và chưa thể đưa ra nhiều loại thống kê như Google Analytics nhưng
việc phân tích cho từng người dùng, có thể xác định các dấu trang, sinh ra được dữ liệu
phục vụ cho việc dự đoán và có thể đưa ra các gợi ý cho người dùng là ưu điểm của hệ
thống.
So sánh với các trang có chức năng gợi ý tương tự như Youtube hay Amazon,
các trang nêu trên các dữ liệu phân tích, gợi ý đều là dữ liệu của chính các trang đó với
thông tin, thẻ đánh dấu đầy đủ. Trong khi đó dữ liệu phục vụ hệ thống thực nghiệm
được trình bày là dữ liệu được thu thập qua RSS, với lượng thông tin hạn chế và kém
đa dạng hơn do đó khả năng gợi ý tin tức chưa thể tốt bằng.
43
Chương 6. Kết luận và hướng phát triển
6.1. Kết luận
Bài toán đặt ra trong thời đại bùng nổ thông tin, báo mạng ngày một nhiều và
mọi người dần xa rời báo giấy truyền thống. Ưu điểm của báo mạng là có thể truyền
tải thông tin nhiều hơn tới người đọc mà không bị hạn chế bởi số trang giấy, thông tin
cũng được truy cập dễ dàng và thuận tiện. Tuy nhiên lượng thông tin lớn cũng đồng
nghĩa với việc người dùng sẽ mất nhiều thời gian hơn trong việc đọc tin và tìm kiếm
thông tin cần đọc.
Với thực tế như vậy, bài toán đặt ra là làm sao có thể phân tích được sở thích của
người dùng cho dữ liệu tin tức từ những tin tức gì người dùng đã truy cập và từ đó đưa
ra các gợi ý phù hợp với người dùng giúp giảm bớt thời gian tìm kiếm thông tin cho
người dùng.
Hiện tại hệ thống đã phần nào giải quyết được bài toán đặt ra. Các chức năng cơ
bản được đáp ứng cho phép người dùng sử dụng một cách bình thường, phân tích được
các mối quan tâm cũng như sở thích của người dùng tại từng khoảng thời gian trong
ngày. Các mối quan tâm này được chia theo các chủ đề được phân chia sẵn từ trước.
Từ kết quả đã phân tích đó, hệ thống đã có thể đưa ra những gợi ý thuộc chủ đề mà
người dùng quan tâm, theo sát những hành vi, tương tác mà người dùng thực hiện với
hệ thống.
Bên cạnh đó, thời gian phản hồi của hệ thống không quá dài, kết hợp với việc
chạy song song các tiến trình giúp người đọc không phải chờ đợi quá lâu. Tuy nhiên,
thời gian phản hồi sẽ tăng dần lên theo độ lớn của dữ liệu thu thập được
Bên cạnh các ưu điểm đã nêu, hệ thống vẫn còn một số nhược điểm sau:
-
-
Việc liên tục thu thập dữ liệu qua RSS chưa hoàn chỉnh, chưa thể thực hiện đối
với nhiều trang tin tức khác nhau. Hiện tại, nếu muốn thu thập dữ liệu từ trang
nào thì cần phải chỉnh sửa lại mã nguồn phân tích do cấu trúc mỗi trang là khác
nhau.
Phân chia khoảng thời gian trong ngày làm các khoảng 2 tiếng là chưa tối ưu.
Các khoảng thời gian trong ngày mới chỉ đơn thuần chia làm các khoảng theo 2
tiếng, chưa có sự khảo sát người dùng về thời gian đọc tin nên chưa thể tối ưu
được khoảng thời gian cần phân tích.
44
-
Việc phân loại sở thích chưa đa dạng, mới chỉ tập trung phân sở thích theo
-
người dùng, theo chủ đề và theo thời gian, chưa thể phân chia theo khu vực địa
lý, theo độ tuổi hoặc theo từ khóa cụ thể.
Lượng dữ liệu hiện tại phục vụ cho thực nghiệm chưa đủ nhiều nên hệ thống
vẫn phản hồi khá nhanh tuy nhiên trong tương lai, khi dữ liệu ngày một nhiều
lên sẽ cần có phương pháp để tối ưu hiệu suất cho chương trình.
6.2. Hướng phát triển
-
Phát triển chức năng thu thập tin tức, cho phép thu thập tin tức từ nhiều trang
khác nhau, mở rộng chức năng cho người dùng có thể điền RSS của các trang
ưa thích.
-
Thực hiện khảo sát thời gian đọc tin tức của người dùng để phân chia các
khoảng thời gian trong ngày một cách hợp lý và tối ưu.
-
-
Phát triển phân tích cho người dùng dựa theo khu vực địa lý. Với mỗi người
dùng ở những khu vực địa lý khác nhau sẽ quan tâm đến những tin tức khác
nhau.
Phân tích sở thích người dùng theo từ khóa. Có những tin tức riêng liên quan
-
đến một người, một sự việc, sự vật nào đó người dùng quan tâm, thì những từ
khóa đó phải được theo dõi và phân tích. Ví dụ có thể gân đây người dùng quan
tâm nhiều đến các từ khóa như “Trung Quốc”, “giàn khoan”, “biển Đông”,…
Dự đoán sở thích cho người dùng theo độ tuổi. Ở mỗi độ tuổi khác nhau, người
-
dùng sẽ có những mối quan tâm khác nhau.
Tối ưu hiệu suất của hệ thống, cài đặt phân hoạch tự động cho các bảng trong
CSDL.
-
45
TÀI LIỆU THAM KHẢO
Tiếng Việt
[1] Nguyễn Văn Chức, “Thuật toán Apriori khai phá luật kết hợp”, [Online]
http://bis.net.vn/forums/t/389.aspx
[2] Trương Văn Hưng, “Biểu diễn trực quan các liên kết web”, Khóa luận tốt nghiệp đại
học hệ chính quy 2014.
[3] Hà Quang Thụy, Giáo trình Khai phá dữ liệu.
Tiếng Anh
[4] “Ajax specification”, [Online] http://www.w3.org/TR/XMLHttpRequest .
[5] Alchin, Marty, Pro Django (16 December 2008).
[6] Amr Ahmed, Yucheng Low, Mohamed Aly, Vanja Josifovski, Alexander J. Smola,
“Scalable Distributed Inference of Dynamic User Interests for Behavioral Targeting”, pp. 4
[7] “Django Official Documentation”, https://docs.djangoproject.com/en/1.5/ .
[8] Gerald Stermsek, Mark Strembeck, Gustaf Neumann, “A User Profile Derivation
Approach based on Log-File Analysis”.
[9] Holovaty, Adrian; Kaplan-Moss, Jacob, The Definitive Guide to Django: Web
Development Done Right (8 July 2009).
[10] Jin Young Kim , Kevyn Collins-Thompson, Paul N. Bennett, Susan T. Dumais.
“Characterizing Web Content, User Interests, and Search Behavior by Reading Level and
Topic”.
[11] “The Django Book”, http://www.djangobook.com/en/2.0/index.html .
46
[...]... 2 loại dữ liệu: dữ liệu về tin tức và dữ liệu về hành vi của người dùng Hành vi của người dùng ở đây chính là những yêu cầu đọc tin từ phía người dùng gửi cho hệ thống Thu thập tin tức Tin tức được thu thập về qua RSS của các trang tin tức, những dữ liệu này được dùng để phục vụ cho việc đọc tin của người dùng và phân tích dữ liệu Thông tin của RSS được lưu trên CSDL, trong đó có 2 thông tin quan... kết quả đã phân tích Mô hình tổng quát của phần phân tích dữ liệu được thể hiện như Hình 3.1 9 Internet Thu thập dữ liệu Tiền xử lý Crawl tin tức Đặt ra ABC form Phân tích dữ liệu Phân loại theo người dùng Phân tích dấu trang Thu thập hành vi người dùng Chuẩn hóa dữ liệu Phân loại theo thời gian Database Hình 3.1: Mô hình tổng quát phân tích dữ liệu Bảng 3.1: Mô tả các giai đoạn phân tích dữ liệu Module... vụ cho quá trình phân tích và dự Database đoán 4.2 Cấu trúc cơ sở dữ liệu 4.2.1 Bảng lưu trữ thông tin về các tin tức Tin tức sau khi thu thập, được lưu trong cơ sở dữ liệu theo cấu trúc như Hình 4.2: Hình 4.2: Bảng lưu trữ thông tin tin tức Bảng 4.2: Ý nghĩa các trường thông tin của tin tức Trường Ý nghĩa id Định danh tin tức title Tiêu đề tin tức description Mô tả tin tức category Chủ đề của tin tức. .. chiếu với kết quả đã phân tích được để lấy ra các chủ đề phù hợp với sở thích người dùng Sở thích của người dùng bao gồm sở thích ngắn hạn và sở thích dài hạn, sở thích ngắn hạn là các sở thích trong thời gian một tuần hoặc một tháng gần nhất và sở thích 18 dài hạn là thời gian trong toàn bộ thời gian sử dụng của người dùng Sở thích ngắn hạn sẽ có độ ưu tiên cao hơn so với sở thích dài hạn Để có thể... định phương hướng phân tích và lưu trữ, từ đó có thể dễ dàng thực hiện phán đoán 10 Chuẩn hóa dữ liệu Xác định các trường thông tin cần thiết, làm sạch các dữ liệu dư thừa, lưu trữ các dữ liệu đã thu thập được vào cơ sở dữ liệu với các trường đã xác định Phân tích dữ liệu Phân loại theo người dùng Phân chia các thao tác người dùng đã bắt được vào các nhóm dành riêng cho từng người dùng Phân loại theo... bản thân cho các vấn đề sau đây 3.1 Phân tích dữ liệu 3.1.1 Mô hình tổng quát Phần phân tích dữ liệu tôi chia ra làm 3 module lớn bao gồm: - Thu thập dữ liệu: để có thể phân tích dữ liệu thì trước hết cần phải có dữ liệu, do đó thu thập dữ liệu là việc đầu tiên cần làm Nguồn dữ liệu đầu tiên tôi dùng cho khóa luận này được cung cấp bởi báo Dân Việt bao gồm thông tin về các bài báo và thông tin thống... theo sở thích người dùng Bước Vai trò Bước 1 - Xác định người dùng và thời gian truy cập Nếu người dùng không đăng nhập thì đặt là AnonymousUser (người dùng nặc danh) Bước 2 - Từ người dùng và thời gian đã xác định, lấy kết quả là các nhóm chủ đề tương ứng từ dữ liệu đã phân tích - Nếu người dùng là nặc danh thì kết quả lấy là kết quả chung cho toàn bộ người dùng 19 - Nếu chưa có dữ liệu về người dùng. .. giai đoạn phân tích dữ liệu Module Thu thập dữ liệu Bước Mô tả Thu thập tin tức Thông tin về tin tức được thu thập thông qua RSS từ các trang tin tức Các thông tin lấy được sẽ được chuyển cho Tiền xử lý Thu thập hành vi người dùng Khi người dùng truy cập hệ thống để đọc tin tức, các dữ liệu về việc đọc tin ví dụ như: người dùng, tin tức được đọc, thời gian đọc tin sẽ được ghi lại Tiền xử lý Đặt ra các... thay cho hành vi người dùng để trình bày rõ ràng và phù hợp hơn với việc giải quyết vấn đề cũng như kiến trúc hệ thống 14 3.1.4 Phân tích dữ liệu Với những ABC form đã đưa ra và các dữ liệu thu thập đã qua tiền xử lý, tiến hành phân loại dữ liệu vào các nhóm để phục vụ cho việc dự đoán Phân loại theo người dùng Từ dữ liệu request của người dùng, ta có thể biết được người dùng nào request tin tức nào... chứa thông tin về các tin tức mới được cập nhật của RSS tương ứng Phân tách dữ liệu Tiến hành phân tách dữ liệu lấy được từ xml thành các trường riêng biệt Chuyển sang Tiền xử lý Dữ liệu sau khi phân tách được chuyển cho phần Tiền xử lý Thu thập hành vi người dùng Việc thu thập hành vi người dùng được thực hiện khi người dùng yêu cầu một tin tức từ hệ thống Lúc đó các thông tin như người dùng nào yêu ... phía người dùng gửi cho hệ thống Thu thập tin tức Tin tức thu thập qua RSS trang tin tức, liệu dùng để phục vụ cho việc đọc tin người dùng phân tích liệu Thông tin RSS lưu CSDL, có thông tin. .. quan tâm người dùng o Đầu vào: Thông tin người dùng Các nhóm liệu phân tích Tần suất đọc tin tức nhóm tin tức o Đầu ra: Các tin tức thuộc lĩnh vực ưa thích người dùng Các tin tức bật... quan người dùng đọc tin tức 3.1.2 Thu thập liệu Đây bước chuẩn bị cho việc phân tích, hệ thống xây dựng thu thập loại liệu: liệu tin tức liệu hành vi người dùng Hành vi người dùng yêu cầu đọc tin