Tải bản đầy đủ (.pdf) (58 trang)

Phân tích sở thích người dùng cho dữ liệu tin tức

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.8 MB, 58 trang )

ĐẠ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)=|TD, 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à AB=.

-

Luật kết hợp AB có độ hỗ trợ (support): s (AB) = s(AB), AB 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  TB: xác suất P(B|A).

-

Support (A  B) = P(AB)

: 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 AB đượ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


×