Spring Boot là một Framework phát triển các ứng dụng Java được sử dụng bởi hàng triệu lập trình viên. Nó giúp tạo các ứng dụng có hiệu năng cao, dễ kiểm thử, sử dụng lại code, … [1]
Để khởi tạo một dự án Spring khá là vất vả và tốn nhiều cơng sức. Người lập trình phải khai báo những dependency trong pom.xml, cấu hình XML hoặc các annotation cực kỳ phức tạp. Thay vào đó Spring Boot có thể giảm được các bước khai báo, giúp tạo và phát triển dự án dễ dàng, nhanh chóng.
Spring Boot chính là một Java Framework có nhiều khả năng hữu ích vì nó có thể giúp lập trình viên giải quyết rất nhiều vấn đề. So với Framework Spring thông thường, Spring Boot tỏ ra những lợi thế vượt trội. Khi sử dụng Spring Boot, rất nhiều thứ được cải tiến hỗ trợ lập trình viên như:
• Auto config: tự động cấu hình thay lập trình viên, chỉ cần viết code và tiến hành chạy hệ thống là được.
• Dựa trên các Annotation để tạo lập các bean thay vì XML.
• Server Tomcat có thể được nhúng ngay trong file JAR build ra và có thể chạy ở bất kì đâu mà Java chạy được.
Qua những điểm mà Spring Boot hỗ trợ lập trình viên kể trên, có thể thấy sử dụng Spring Boot giúp ta giảm thiểu các thao tác cấu hình, qua đó giúp tiết kiệm thời gian lập trình, tăng năng suất vì lập trình viên sẽ ít phải quan tâm hơn đến việc cấu
12
hình, thay vào đó thì chỉ cần lo phần nghiệp vụ, logic của hệ thống. Spring Boot cũng không yêu cầu cấu hình XML và khơng sinh code cấu hình. Bên cạnh đó, khi làm việc với Spring Boot không cần phải triển khai file War mà nhúng trực tiếp các ứng dụng server.
2.7. Recommendation system
2.7.1. Giới thiệu
Hệ thống khuyến nghị (Recommendation system) là một loại hình cụ thể của kỹ thuật lọc thông tin (như tin tức, phim ảnh, âm nhạc, trang web…) mà người dùng quan tâm. Nó rất quan trọng cho sự thành công của thương mại điện tử và ngành công nghệ thông tin hiện nay, và dần dần trở nên phổ cập trong các ứng dụng khác nhau (ví dụ như Netflix, Google tin tức, Amazon).
Các thống kê đã chỉ ra rằng, hai phần ba (⅔) số phim trên hệ thống Netflix được xem là nhờ kết quả gợi ý của hệ khuyến nghị, 38% lượng nhấp chuột trên hệ thống tin tức Google News và 35% sản phẩm bán được trên hệ thống thương mại điện tử Amazon đều nhờ vào hệ khuyến nghị tự động. [2]
Hệ tư vấn thường được xây dựng tự động dựa trên hồ sơ (profile) của người dùng. Hệ thống so sánh hồ sơ của người dùng với một số đặc điểm tài liệu tham khảo, và tìm cách để dự đoán “đánh giá” mà người dùng sẽ cung cấp cho một nội dung mà người dùng đó vẫn chưa đánh giá.
Kết quả của một hệ tư vấn là dự đoán “đánh giá” của người dùng cho một sản phẩm nhất định (ví dụ, khả năng 80% người dùng sẽ thích sản phẩm này) và danh sách những sản phẩm người dùng có thể sẽ thích.
Các kỹ thuật khuyến nghị tự động có thể được chia làm hai loại gồm Lọc dựa trên nội dung (Content-based Filtering) và Lọc cộng tác (Collaborative Filtering).
Hệ thống khuyến nghị giúp mang lại những lợi ích như tiết kiệm thời gian, tăng tốc độ tìm kiếm và giúp người dùng truy cập tới nội dung họ quan tâm một
13
cách dễ dàng hơn trong bối cảnh khối lượng nội dung trên các hệ thống và dịch vụ là cực kì đồ sộ, đồng thời, gợi ý tới người dùng những đề xuất mới mà trước đây họ chưa từng biết đến. Ngồi ra cịn giúp tăng trải nghiệm khách hàng nhờ vào việc các sản phẩm được đưa đến cho khách hàng đã được chọn lọc một cách cá nhân hóa phù hợp với nhu cầu, mối quan tâm và sở thích của khách hàng. Điều này giúp các doanh nghiệp cải thiện lợi thế cạnh tranh của họ, tạo dựng sự thích thú và tin tưởng của khách hàng vào các dịch vụ, sản phẩm nhờ vào việc cho khách hàng thấy rằng doanh nghiệp hiểu nhu cầu của họ và cung cấp cho họ những thứ họ muốn. Qua đó giúp tăng khả năng giữ chân khách hàng cũ và thu hút khách hàng mới.
2.7.2. Các phương pháp trong hệ thống gợi ý
2.7.2.1. Content-based Filtering
Content-based recommendation đề xuất dựa theo nội dung, tức là các hệ thống đề xuất mặt hàng cho người dùng sẽ dựa trên mơ tả về mặt hàng đó và hồ sơ sở thích người dùng đó.
Các hệ thống đề xuất dựa trên nội dung có thể được sử dụng trong nhiều lĩnh vực khác nhau, từ các trang web giới thiệu, tin tức, nhà hàng, chương trình truyền hình và các mặt hàng để bán. Mặc dù chi tiết của các hệ thống khác nhau, nhưng đều có chung một phương pháp để mơ tả các mặt hàng có thể được đề xuất.
Để tóm tắt các tính năng của các mục trong hệ thống, một thuật tốn trình bày mục được áp dụng. Một thuật toán được sử dụng rộng rãi là biểu diễn TF – IDF (được gọi là biểu diễn không gian vectơ).
Để tạo hồ sơ người dùng, hệ thống tập trung vào hai loại thơng tin:
• Một mơ hình ưu tiên của người dùng.
14
2.7.2.2. Collaborative filtering
Collaborative filtering là kĩ thuật phổ biến và được sử dụng rộng rãi nhất trong các hệ khuyến nghị. Ý tưởng chủ chốt đằng sau CFRS là phân tích và trích xuất các thơng tin thể hiện các hành vi của các users trong quá khứ hoặc sở thích của các users để dự đốn các items mà một user có thể thích. Kĩ thuật này xem xét các giả thuyết sau:
• Trong quá khứ, nếu các users đã bộc lộ sở thích tương đồng nhau thì họ cũng sẽ có cùng sở thích trong tương lai.
• Sở thích của user sẽ khơng thay đổi và nhất quán theo thời gian. Các hệ khuyến nghị CFRS mang đến ba lợi thế chủ chốt so với hướng tiếp cận content-based. Đầu tiên, hướng tiếp cận này ứng dụng cho các items khơng có sẵn “profile”. Thứ hai, CFRS đánh giá chất lượng các items dựa trên các mối liên hệ xung quanh thay vì nội dung của items, vốn khơng thực sự chính xác để làm căn cứ đánh giá chất lượng. Và cuối cùng, CFRS có thể gợi ý cho users các loại items hoàn toàn lạ miễn là các người dùng tương đồng đã thích chúng, các items này được gọi là “items with lucky discovery” .
Các phương pháp lọc cộng tác thường gặp phải ba vấn đề: Cold Start, khả năng mở rộng và sự thưa thớt (sparsity).
• Cold Start: Các hệ thống này thường yêu cầu một lượng lớn dữ liệu hiện có của người dùng để đưa ra các đề xuất chính xác.
• Khả năng mở rộng: Trong nhiều môi trường mà các hệ thống này đưa ra các gơi ̣ ý , có hàng triệu người dùng và sản phẩm. Do đó, một lượng lớn cơng suất tính tốn thường là cần thiết để tính tốn các gợi ý.
• Sparsity: Số lượng các mặt hàng được bán trên các trang web thương mại điện tử lớn là cực kỳ lớn. Những người dùng tích cực nhất sẽ chỉ đánh giá một tập con nhỏ của cơ sở dữ liệu tổng thể.
15
Một loại thuật toán lọc cộng tác cụ thể sử dụng hệ số ma trận hóa (matrix factorization), kỹ thuật xấp xỉ ma trận cấp thấp (low-rank matrix approximation).
Chương 3. XÂY DỰNG HỆ THỐNG
3.1. Phát biểu bài toán
Từ những thập kỷ gần đây, xã hội chúng ta đã và đang bước vào cuộc Cách mạng Công nghiệp 4.0 với những hứa hẹn về việc mở ra một kỷ nguyên mới cho internet kết nối vạn vật. Cùng với đó, các mạng xã hội như Facebook, Twitter, Instargram lần lượt ra đời với sứ mệnh nhằm gắn kết mọi người lại với nhau và hiện đang có sức ảnh hưởng rất lớn đến hoạt động sinh hoạt của mọi người.
Tuy nhiên các mạng xã hội phổ biến hiện nay đều có một điểm chung lớn đó là các thơng tin chúng ta có thể tiếp cận được bị trộn lẫn giữa những thông tin tốt với thơng tin xấu và thiếu tính định hướng thơng tin. Và dù sở hữu lượng người dùng và kho nội dung khổng lồ, nhưng các mạng xã hội như Facebook, Twitter, Instargram cũng dần lộ ra nhược điểm trong việc gắn kết các thành viên trong gia đình với nhau. Nguyên nhân cũng đến từ việc các mạng xã hội phổ biến hiện nay như Facebook, Twitter hay Instargram đều hướng đến quá nhiều đối tượng người dùng khác nhau dẫn đến việc nhiễu loạn thơng tin và khó có thể tìm thấy sự hiện diện rõ ràng của gia đình trên các nền tảng này.
Bên cạnh đó, trong xã hội hiện đại ngày nay các bậc cha mẹ cũng dần ít thời gian cho gia đình do khối lượng cơng việc bên ngồi xã hội đang ngày một tăng. Đặc biệt, là với những người sống xa gia đình và có ít điều kiện để về thăm nhà. Điều này dẫn đến việc chúng ta càng khó nắm bắt được tình hình những việc quan trọng trong gia đình như thế nào, từ đó dẫn đến khoảng cách giữa các thành viên trong gia đình ngày càng cách xa nhau.
16
Bài toán được đặt ra là làm sao để tạo ra không gian tương tác giữa các thành viên trong gia đình, mà cịn giúp các thành viên nắm bắt được tình hình cơng việc, sự kiện, tình hình thu chi hay thậm chí là định vị được nhau trong những tình huống khẩn, nhất là với những người ở xa gia đình.
3.2. Phân tích yêu cầu
3.2.1. Yêu cầu nghiệp vụ
STT Nội dung
1 Người dùng cũng có thể chọn đăng nhập hoặc đăng ký tài khoản dựa trên tài khoản apple, google hoặc facebook có sẵn nhằm giảm bớt những thủ tục nhập thông tin.
2 Cho phép ứng dụng ghi nhớ email, mật khẩu để những lần truy cập sau sẽ tự động đăng nhập vào màn hình chính
3 Thêm thành viên vào gia đình của mình thơng qua mã QR 4 Lên danh sách công việc để phân công cho các thành viên 5 Nhắn nhở nhau về những sự kiện quan trọng
6 Khi lạc nhau thì có thể định vị được nhau.
7 Cập nhật tình hình thu chi hàng tháng của gia đình qua biểu đồ. 8 Khi đi xa vẫn tương tác được với nhau.
8 Các gia đình có thể chia sẻ những cơng thức nấu ăn và mẹo vặt trong việc làm bếp.
17
3.2.2. Yêu cầu chức năng
Ứng dụng có thể chạy trên nền tảng di động iOS và Android, có khả năng truy cập ở tất cả mọi vị trí, thời điểm có kết nối internet. Một vài yêu cầu mà hệ thống cần đáp ứng:
Yêu cầu Chi tiết
Quản lý cơng việc Người dùng có thể tạo mới, cập nhật và xố cơng việc. Có thể xem, lọc và sắp xếp danh sách các công việc dựa trên các yếu tố(trạng thái, người được phân công, và thời hạn kết thúc cơng việc)
Quản lý gia đình Người dùng có thể xem danh sách các gia đình mà mình tham gia, tạo mới, cập nhật và tìm kiếm nhanh gia đình. Có thể xem chi tiết các gia đình.
Quản lý album gia đình Người dùng có thể xem, tìm kiếm, danh sách các album theo gia đình. Tạo và xóa album. Đăng tải ảnh và xóa ảnh khỏi album.
Quản lý thành viên gia đình
Người dùng có thể tìm kiếm, xem danh sách các thành viên trong gia đình, xem chi tiết thành viên và xóa thành viên khỏi gia đình.
Quản lý sự kiện trong gia đình
Người dùng có thể xem danh sách các sự kiện, nhắc nhở trong gia đình, tạo lập sự kiện và theo dõi sự kiện trực quan theo ngày trên lịch của ứng dụng.
Quản lý chi tiêu trong gia đình
Người dùng có thể tạo lập các định mức chi tiêu cho gia đình trong tháng theo danh mục, theo dõi chi tiêu so với định mức chi tiêu theo danh mục và xem nhanh dữ liệu chi tiêu được trực quan hóa trên biểu đồ
18 Chia sẻ vị trí các thành
viên trong gia đình
Người dùng có thể chia sẻ vị trí của bản thân cho các thành viên và theo dõi vị trí của các thành viên khác trong gia đình. Có thể liên lạc khẩn cấp thơng báo vị trí bản thân với các thành viên trong các trường hợp khẩn cấp. Liên lạc với các thành
viên trong gia đình qua chat, voice call và video
call
Người dùng có thể liên lạc với các thành viên gia đình qua kênh chat hay gọi voice call 1 với 1. Ngồi ra cũng có thể tổ chức các cuộc họp gia đình qua cuộc gọi nhóm video call.
Xây dựng mạng xã hội chia sẻ các bài viết về ẩm
thực
Mọi người dùng đều có thể chia sẻ các cơng thức và mẹo vặt trong việc làm bếp.
Bảng 3.2: Yêu cầu chức năng
3.2.3. Yêu cầu phi chức năng
Ứng dụng hỗ trợ Tiếng Anh và Tiếng Việt , hoạt động ổn định trên nền tảng iOS và android.
Để thu hút được người dùng hứng thú sử dụng, các thao tác trên ứng dụng phải đơn giản.
Các thông tin của người dùng được bảo mật và bảo đảm chỉ có những người có thẩm quyền mới có thể truy cập vào các tài nguyên cụ thể.
19
3.3. Thiết kế sơ đồ Usecase
3.3.1. Mơ hình use case tồn hệ thống