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

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

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

ĐẠ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 - 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

Ngày đăng: 08/10/2015, 13:19

Từ khóa liên quan

Mục lục

  • TÓM TẮT

  • ABSTRACT

  • Chương 1. Mở đầu

  • Chương 2. Cơ sở lý thuyết và công nghệ

    • 2.1. Cơ sở lý thuyết

      • 2.1.1. ABC model (Antecedent-Behavior-Consequence)

      • 2.1.2. Thuật toán Apriori

      • 2.2. Cơ sở công nghệ

        • 2.2.1. Model – View – Controller

        • 2.2.2. Data Access Object (DAO)

        • 2.2.3. Python và Django framework

        • 2.2.4. RSS

        • Chương 3. Giải quyết vấn đề

          • 3.1. Phân tích dữ liệu

            • 3.1.1. Mô hình tổng quát

            • 3.1.2. Thu thập dữ liệu

            • 3.1.3. Tiền xử lý

            • 3.1.4. Phân tích dữ liệu

            • 3.2. Dự đoán sở thích người dùng

              • 3.2.1. Gợi ý tại trang chủ

              • 3.2.2. Gợi ý khi một tin tức được yêu cầu

              • Chương 4. Phân tích và phát triển hệ thống

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

                • 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

                  • 4.2.2. Bảng lưu trữ request 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ủ đề

                  • 4.2.4. Bảng lưu trữ luật

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan