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

Đồ án ứng dụng đi chợ trực tuyến tích hợp gợi ý món ăn

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 (2.68 MB, 61 trang )

TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM

ĐỒ ÁN 1
ỨNG DỤNG ĐI CHỢ TRỰC TUYẾN TÍCH HỢP
GỢI Ý MÓN ĂN

GIẢNG VIÊN HƯỚNG DẪN
Th.S TRẦN ANH DŨNG
NHÓM THỰC HIỆN:
Lê Sỹ Hội – 20521356
Nguyễn Viết Đức – 20521201

TP. HỒ CHÍ MINH, 2023


LỜI CẢM ƠN
Lời đầu tiên, nhóm chúng em xin gửi lời cảm ơn sâu sắc đến tập thể quý thầy
cô trường Đại học Công Nghệ Thông Tin, đặc biệt là những giảng viên trong ngành
Kỹ thuật Phần mềm đã trang bị cho chúng em có được những kiến thức căn bản
vững chắc để có thể thực hiện đồ án lần này.
Chúng em chân thành cảm ơn Ths.Trần Anh Dũng đã giúp đỡ chúng em
trong suốt quá trình học tập và thực hiện đồ án, sự quan tâm, giảng dạy tận tình của
thầy cơ đã hỗ trợ chúng em rất nhiều trong thời gian vừa qua và qua đó chúng em đã
học hỏi được nhiều kiến thức hơn. Một lần nữa nhóm xin gửi lời cảm ơn sâu sắc
đến quý thầy cơ.
Ngồi ra, xin cảm ơn đến tất cả sự đóng góp của các thành viên trong nhóm,
những người đã chăm chỉ và hồn thành nhiệm vụ của mình đúng hạn để đồ án có
thể hồn thiện một cách đầy đủ nhất.
Trong quá trình thực hiện đồ án “Ứng dụng đi chợ trực tuyến tích hợp gợi ý
món ăn”, nhóm chúng em đã kết hợp giữa những kiến thức căn bản và những gì


được thầy trao đổi và truyền đạt để cố gắng hoàn thành đồ án một cách tốt nhất có
thể. Tuy nhiên, cũng bởi vì kiến thức của bản thân cịn hạn chế, khơng tránh khỏi sẽ
có những sai sót. Chính vì thế, nhóm chúng em rất mong nhận được sự quan tâm,
góp ý của cơ để chúng em tiếp thu được thêm kinh nghiệm, kiến thức trong đồ án
lần này, để đồ án có thể hồn thiện và đầy đủ hơn. Qua đó rút kinh nghiệm trong
những đồ án tiếp theo. Sự góp ý của q thầy cơ chính là bài học quý báu và là hành
trang để chúng em tiếp tục thực hiện những đồ án sau này.
Lời cuối cùng, nhóm chúng em xin chúc quý thầy cơ thật nhiều sức khoẻ và
niềm vui để có thể tiếp tục giảng dạy và truyền đạt thật nhiều kiến thức bổ ích đến
những sinh viên khác. Chúng em xin chân thành cảm ơn!


Mục lục
TÓM TẮT ĐỒ ÁN ...................................................................................................... 1
ĐỀ CƯƠNG CHI TIẾT ............................................................................................... 2
Chương 1. MỞ ĐẦU ....................................................................................................8
1.1

Lý do chọn đề tài ............................................................................................ 8

1.2

Mục đích nghiên cứu ......................................................................................9

1.3

Đối tượng nghiên cứu .....................................................................................9

1.4


Phạm vi nghiên cứu ........................................................................................9

Chương 2. KIẾN THỨC NỀN TẢNG ........................................................................ 9
2.1

React Native ................................................................................................... 9

2.2

NodeJS ..........................................................................................................10

2.3

FireBase ........................................................................................................11

Chương 3. HỆ THỐNG GỢI Ý RECOMMENDER SYSTEM ............................... 12
3.1

Khái niệm ..................................................................................................... 12

3.2

Utility matrix ................................................................................................ 13

3.3

Content-based Recommendation Systems ...................................................14

3.4


Collaborative filtering Recommendation Systems ......................................15

3.5

Áp dụng vào đề tài: chức năng gợi ý thực phẩm ......................................... 17

3.6

Chức năng gợi ý 2: gợi ý món ăn dựa trên thực phẩm đã chọn .................. 18

Chương 4. ĐẶC TẢ USECASE ................................................................................19
4.1

Sơ đồ Usecase ...............................................................................................19

4.2

Danh sách tác nhân .......................................................................................20

4.3

Danh sách Usecase ....................................................................................... 21

4.4

Mô tả chi tiết Usecase .................................................................................. 21

Chương 5. THIẾT KẾ CƠ SỞ DỮ LIỆU ................................................................. 32
5.1


Sơ đồ logic ....................................................................................................32

5.2

Danh sách các bảng ...................................................................................... 33

Chương 6. THIẾT KẾ GIAO DIỆN NGƯỜI DÙNG ...............................................34
6.1

Danh sách màn hình ..................................................................................... 34

6.2

Mơ tả chi tiết màn hình ................................................................................ 34

3


Chương 7. TỔNG KẾT ..............................................................................................55
7.1

Kết quả đạt được .......................................................................................... 55

7.2

Hướng phát triển ...........................................................................................56

TÀI LIỆU THAM KHẢO ......................................................................................... 57

4



TÓM TẮT ĐỒ ÁN
Đồ án “Ứng dụng đi chợ trực tuyến tích hợp gợi ý món ăn” với mong muốn sẽ cung
cấp một ứng dụng tiện lợi cho mọi người trong việc mua nguyên nấu ăn. Thay vì
phải đi ra chợ truyền thống và phân vân lựa chọn nguyên liệu cho một bữa ăn thì
người dùng có thể ngồi ở bất cứ đâu, chỉ cần mở ứng dụng lên và chọn lựa các
nguyền liệu phù hợp nhất. Không chỉ giải quyết vấn đề thời gian dành cho việc mua
nguyên liệu mà ứng dụng còn gợi ý cho người dùng các món ăn, ngun liệu phù
hợp nhất, khơng chỉ tiện dụng mà còn dinh dưỡng.
Ứng dụng sẽ tập trung lưu trữ các nguyên liệu, thông tin người dùng. Người dùng
cần đăng ký một tài khoản ứng dụng, sau đó đăng nhập vào ứng dụng là có thể mua
hàng. Ứng dụng cịn có một chức năng đăng nhập cho quản trị viên để quản lý trạng
thái các đơn hàng của khách hàng
Để hiểu thêm về đề tài, nhóm đã chủ động nghiên cứu, khảo sát các sản phẩm tương
tự trên thị trường. Việc khảo sát các ứng dụng có sẵn trên thị trường giúp nhóm có
thể nắm bắt yêu cầu về chức năng cung như là hệ thống để thiết kế và đưa ra các
giải pháp cho vấn đề còn tồn đọng một cách nhanh chóng.
Sau khi khảo sát và tìm hiểu về ứng dụng, nhóm đã nhận ra một điều là người dùng
sẽ ưu tiên sử dụng các ứng dụng trên điện thoại di động hơn là các ứng dụng
website vì hiệu năng, tính tiện lợi, cung như là mức độ an tồn, bảo mật. Từ đó,
nhóm đã quết định xây dựng ứng dụng trên thiết bị di động. Một vấn đề khác đặt ra
là lựa chọn công nghệ, nền tảng nào để phát triển.
Với vô vàng công nghệ phổ biến ngày nay, nhóm muốn giảm thiểu chi phi, nguồn
lực phát triển nhất có thể mà vẫn cung cấp đầy đủ nền tảng sử dụng cho người dùng
nên nhóm đã quết định lựa chọn framework React Native để thiết kế ứng dụng. Tiếp
theo, NodeJS và Firebase là hai cơng nghệ nhóm quyết định lựa chọn để tạo backend và cơ sở dữ liệu cho ứng dụng. Với một cộng đồng lớn mạnh và ra đời khá sớm
của React Native, việc xây dựng ứng dụng sẽ trở nên thuận tiện hơn. Lựa chọn
FireBase vì nó phù hợp với các ứng dụng có quy mô nhỏ như đồ án mà không phải
tốn chi phí.

Một vấn đề mới cần tiếp cận trong ứng dụng đó là hệ thống gợi ý. Ở đây tên đồ án
chỉ nhắc tới “gợi ý món ăn” nhưng nhóm quyết định tách thành 2 chức năng riêng
biệt đó là gợi ý sản phẩm thực phẩm dựa trên giỏ hàng người dùng và gợi ý các món
ăn liên quan tới các sản phẩm người dùng chọn. Việc tách như vậy giúp cho cho trải
nghiệm của người dùng với ứng dụng được nâng cao nhưng cũng đồng nghĩa là
nhóm phải giải quyết thêm vấn đề

1


Sau cùng, nhóm đã hồn thành được một sản phẩm hồn thiện mặc dù cịn nhiều
thiếu sót về mặt chức năng cũng như hiệu xuất. Nhưng qua việc thực hiện đề tài,
nhóm đã học hỏi được nhiều điều về cơng nghệ cũng như luồng sự kiện của một
ứng dụng thương mại.

ĐỀ CƯƠNG CHI TIẾT
TÊN ĐỀ TÀI: Ứng dụng đi chợ trực tuyến tích hợp gợi ý món ăn
Cán bộ hướng dẫn:
ThS. Trần Anh Dũng

Thời gian thực hiện: Từ ngày 1/3/2023 đến ngày kết thúc môn học
Sinh viên thực hiện:
Lê Sỹ Hội - 20521356
Nguyễn Viết Đức - 20521201
Nội dung đề tài
1. Lý do chọn đề tài:
Hiện nay, công nghệ thông tin đang phát triển một cách mạnh mẽ và chi phối mọi
hoạt động cũng như thói quen của con người. Từ những cơng việc chính đến việc
nhà cửa đều được cơng nghệ hóa, hỗ trợ cho con người làm việc có hiệu quả, dễ
dàng hơn. Việc nội như việc đi chợ cũng dần được cơng nghệ hóa trợ giúp cho

mọi người đặc biệt người khơng có thời gian, khơng có kinh nghiệm trong việc đi
chợ. Trong thế giới hiện tại, nhịp sống của con người trở nên quá nhanh, yêu cầu
con người phải sử dụng thời gian một cách hợp lý, hiệu quả. Con người ta cũng
không thể đam đang hay giỏi quá nhiều công việc, đặc biệt là các công việc nhà
cửa. Hiện nay không thể yêu cầu một người phụ nữ vừa biết kiếm tiền, chăm lo
con cái còn phải đảm đang việc nhà cùng một lần.
Để giải quyết vấn đề trên, nhóm em quyết định chọn đề tài Ứng dụng đi chợ trực
tuyến tích hợp gợi ý món ăn, nhằm giúp ta tiết kiệm một ít thời gian cho việc đi
chợ hay phải phân vân mua những thực phẩm nào, nấu món nào… nhưng vẫn
cung cấp được những bữa ăn đầy đủ dinh dưỡng và ngon lành cho gia đình mình
2. Mục tiêu:
Phát triển một hệ thống đi chợ trực tuyến đáp ứng nhu cầu của người dùng, cho
phép họ dễ dàng tìm kiếm và mua sắm các sản phẩm tại tại nhà.

2


Tích hợp chức năng gợi ý món ăn, cho phép người dùng tìm kiếm và lựa chọn các
món ăn phù hợp với khẩu vị và sở thích của mình.
Cung cấp các thông tin về nguồn gốc và chất lượng của các sản phẩm, giúp người
dùng có thể lựa chọn sản phẩm đảm bảo về an toàn thực phẩm và giá cả hợp lý.
Tích hợp các tính năng hỗ trợ thanh tốn an tồn và giao hàng nhanh chóng, giúp
người dùng tiết kiệm thời gian và tiền bạc khi mua sắm trực tuyến.
Nghiên cứu và áp dụng các phương pháp học máy và khai phá dữ liệu để cải thiện
độ chính xác của chức năng gợi ý món ăn và đưa ra những đề xuất sản phẩm phù
hợp với người dùng.
3. Tính năng mới:
Hệ thống gợi ý món ăn, thực phẩm cần mua để thực hiện các món ăn cho khách
hàng
4. Phạm vi và đối tượng sử dụng:

● Tất cả người dùng có nhu cầu đi chợ mua thực phẩm
● Phạm vi môi trường: Ứng dụng di động
● Phạm vi địa lý: khu vực thành phố Hồ Chí Minh
● Phạm vi chức năng:
 Chức năng đăng nhập, đăng ký tài khoản
 Chức năng quên tài khoản
 Chức năng quản lý danh mục các thực phẩm
 Chức năng tìm kiếm, lọc, sắp xếp thực phẩm
 Chức năng đề xuất thực phẩm, cửa hàng uy tín
 Chức năng thêm, xóa, sửa thực phẩm trong giỏ hàng
 Chức năng thanh toán đơn hàng
 Chức năng gợi ý các món ăn
 Chức năng quản lý khách hàng
 Chức năng đánh giá sản phẩm
5. Phương pháp thực hiện:

3


Phương pháp làm việc:
Làm việc nhóm 2 thành viên thơng qua cả 2 phương thức online và offline dưới
sự hướng dẫn của giảng viên hướng dẫn.
Phương pháp nghiên cứu:
Phân tích nhu cầu sử dụng của đối tượng người dùng.
Nghiên cứu tài liệu các cơng nghệ liên quan.
Phương pháp cơng nghệ:
Tìm hiểu và sử dụng React Native phát triển ứng dụng di động đa nền tảng, cho
phép xây dựng ứng dụng cho cả hệ điều hành iOS và Android.
Tìm hiểu và sử dụng Firebase để lưu trữ và quản lý dữ liệu của ứng dụng, giúp
đảm bảo tính bảo mật và sự ổn định của hệ thống.

Quản lý source code thông qua Github
Sử dụng Google doc, Office 365 Word… để quản lý tiến trình và tài liệu
6. Nền tảng cơng nghệ:
React Native
Javascript
NodeJS
Database: FireBase
Recommendation system:
● Content-Based Recommendations system
● Utility Matrix
Công cụ:
● Visual Studio Code
● Android Studio
● StarUML

7. Kết quả mong đợi:
● Hoàn thiện chức năng để khách hàng có thể vào lựa chọn và mua thực
phẩm
● Hệ thống gợi ý món ăn cho người dùng

4


● Giao diện dễ nhìn, dễ sử dụng
● Quản lý được thông tin các thực phẩm
● Nắm bắt được các kiến thức để xây dựng một hệ thống gợi ý
8. Hướng phát triển của đề tài:
● Xây dựng thêm một hệ thống trên website liên kết với ứng dụng di động
● Mở rộng thị trường ra cả nước
● Thêm actor người bán hàng để đăng bán các thực phẩm

● Thêm chức năng theo dõi đơn hàng, quản lý vận chuyển
9. Kế hoạch làm việc:
Thời gian thực hiện từ ngày 10/3/2023 đến ngày 17/6/2023
Nhóm chia thành 3 giai đoạn cụ thể:
Giai đoạn 1: Nghiên cứu các nền tảng công nghệ, thiết kế CSDL và hoàn thành
phần giao diện của ứng dụng. Gồm 4 sprint:
Thời gian: 10/3/2023 – 20/4/2022
Sprint 1: Đăng ký đề tài, soạn đề cương chi tiết
Sprint 2: Nghiên cứu đề tài, các công nghệ sử dụng trong đồ án
Sprint 3: Xây dựng CSDL
Sprint 4: Thiết kế giao diện ứng dụng
Sprint

Thời gian

Công việc dự kiến

Sprint 1

10/3/2023 – 19/3/2023

Đăng ký đề tài
Tìm hiểu và xác định phạm vi,
hướng phát triển của đề tài
Tìm hiểu và phân tích các u cầu
nghiệp vụ của đề tài
Viết tài liệu, đề cương chi tiết

Sprint 2


19/3/2023 – 2/4/2023

Tìm hiểu cơng nghệ

5


Khảo sát hiện trạng
Tìm hiểu về hệ thống gợi ý:
content-based

recommendations,

Utility Matrix
Sprint 3

2/4/2023 – 6/4/2023

Vẽ sơ đồ use case
Thiết kế cơ sở dữ liệu
Xác định công nghệ hỗ trợ việc
xây dựng cơ sở dữ liệu

Sprint 4

6/4/2022 – 20/4/2023

Lập trình giao diện ứng dụng
Chuẩn bị báo cáo giữa kỳ


Giai đoạn 2: Lập trình các chức năng của ứng dụng, tích hợp cơ sở dữ liệu. Gồm
4 sprint:
Thời gian: 20/4/2023 – 27/5/2023
Sprint 5: Kết nối ứng dụng với hệ thống cơ sở dữ liệu
Sprint 6: Thiết kế các chức năng chính về quản lý thực phẩm
Sprint 7: Hồn thiện tính năng khác
Sprint 8: Hồn thiện hệ thống gợi ý món ăn, kiểm thử
Sprint

Thời gian

Công việc dự kiến

Sprint 5

20/4/2023 – 27/4/2023

Thiết kế cơ sở dữ liệu
trên nền tảng công nghệ
Kết nối hệ thống cơ sở
dữ liệu với ứng dụng

Sprint 6

27/4/2023 – 7/5/2023

Thiết kế các chức năng
chính về quản lý thực
phẩm


Sprint 7

7/5/2023 – 17/5/2023

Tiếp tục hoàn thiện các

6


tính năng của ứng dụng
Kiểm thử các chức năng
đã thiết kế
Sprint 8

17/5/2023– 27/5/2023

Hồn thiện hệ thống gợi
ý món ăn
Kiểm thử toàn bộ các
chức năng đã thiết kế

Giai đoạn 3: Hoàn thiện ứng dụng, kiểm thử và tổng kết. Gồm 2 sprint:
Thời gian: 27/5/2023– 10/6/2023
Sprint 9: Hoàn thiện ứng dụng, kiểm thử toàn bộ hệ thống
Sprint 10: Hoàn thiện báo cáo, tổng kết
Sprint

Thời gian

Cơng việc dự kiến


Sprint 9

27/5/2023 – 4/6/2023

Hồn thiện ứng dụng
Kiểm thử tồn bộ hệ
thống
Đóng gói ứng dụng

Sprint 6

4/6/2023 – 10/6/2023

Viết báo cáo
Tổng kết đồ án

10. Phân công công việc:
Cơng việc

Mơ tả cơng việc

Cơng việc chung

Tìm hiểu cơng nghệ
Phân tích yêu cầu
Thiết kế cơ sở dữ liệu
Kiểm thử ứng dụng
Triển khai ứng dụng


7


Chuẩn bị tài liệu, viết báo cáo

Công việc cá nhân

Lê Sỹ Hội

Nguyễn Viết Đức

Thiết kế giao diện chung

Thiết kế giao diện gợi ý

Lập trình chức năng đề
xuất thực phẩm, tìm
kiếm, lọc
Xây dựng chức năng gợi
ý món ăn
Quản lý tiến độ

món ăn, đăng nhập, đăng

Lập trình chức năng đặt
mua thực phẩm, thơng
tin tài khoản
Xây dựng chức năng gợi
ý món ăn
Kết nối dữ liệu


Tp.Hồ Chí Minh, ngày 13 tháng 3 năm 2023

Chương 1. MỞ ĐẦU

1.1 Lý do chọn đề tài

Để giải quyết vấn đề thời gian, việc áp dụng công nghệ thông tin vào mua
sắm và nấu ăn là một giải pháp tiện lợi và hiệu quả. Với ứng dụng đi chợ trực tuyến,
người dùng có thể dễ dàng lựa chọn và mua sắm các sản phẩm tươi ngon và đảm
bảo chất lượng từ nhà cung cấp tin cậy. Họ có thể tiết kiệm được thời gian và cơng
sức của mình so với việc phải đi chợ truyền thống.
Ngoài ra, ứng dụng cịn tích hợp các gợi ý món ăn, ngun liệu dựa trên các
nguyên liệu đã mua sắm. Điều này giúp người dùng tiết kiệm thời gian và công sức
trong việc lựa chọn và nấu các món ăn đa dạng, đảm bảo dinh dưỡng và ngon miệng
cho gia đình. Các gợi ý món ăn được đưa ra dựa trên các tiêu chí như thực đơn đa
dạng, đảm bảo dinh dưỡng, dễ nấu và tiết kiệm thời gian.
Tóm lại, ứng dụng đi chợ trực tuyến tích hợp gợi ý món ăn là một giải pháp
tiện lợi và hiệu quả để giúp người dùng tiết kiệm thời gian và công sức trong việc
mua sắm và nấu ăn. Nó giúp người dùng có được những bữa ăn đầy đủ dinh dưỡng
và ngon lành cho gia đình mình mà khơng cần phải đảm đang q nhiều công việc.

8


1.2 Mục đích nghiên cứu
1.2.1 Khách quan
Tạo ra một ứng dụng đáp ứng nhu cầu của người dùng, giúp họ tiết kiệm thời
gian và cơng sức khi lựa chọn món ăn phù hợp với sở thích, khẩu vị và tình trạng
sức khỏe. Ngồi ra, ứng dụng cịn có thể góp phần thúc đẩy ngành ẩm thực, tăng

cường sự giao lưu và học hỏi giữa các nền văn hóa khác nhau qua ẩm thực.
1.2.2 Chủ quan
Nhóm muốn khám phá các phương pháp và cơng nghệ mới trong lĩnh vực trí
tuệ nhân tạo, cũng như trau dồi kỹ năng lập trình và thiết kế giao diện ứng dụng trực
thiện với người dùng để tạo ra một ứng dụng có nhiều tiềm năng trong thực tế.
1.3 Đối tượng nghiên cứu
1.3.1 Các công nghệ nghiên cứu:
 Font-end: React Native
 Back-end: NodeJS
 Database: FireBase
 Tools: Visual Studio Code, GitHub
1.3.2 Đối tượng sử dụng đề tài hướng đến:
Tất cả mọi người có nhu cầu mua sắm thực phẩm, nhu yếu phẩm muốn tiết
kiệm thời gian đi chợ và cũng như muốn được gợi ý các món ăn cho bữa ăn của
mình.
Quản trị viên cung cấp nhu cầu mua bán thực phẩm, vận chuyển cho các
khách hàng, hỗ trợ tư vấn
1.4 Phạm vi nghiên cứu
1.4.1 Phạm vi môi trường:
Ứng dụng di động.
1.4.2 Phạm vi chức năng:
 Người dùng
o Chức năng đăng nhập, đăng ký tài khoản
o Chức năng tìm kiếm thực phẩm
o Chức năng đề xuất thực phẩm
o Chức năng thêm, xóa, sửa thực phẩm trong giỏ hàng
o Chức năng thanh toán đơn hàng
o Chức năng gợi ý các món ăn
o Chức năng đánh giá sản phẩm
o Chức năng theo dõi cửa hàng

o Chức năng chỉnh sửa hồ sơ cá nhân
 Admin
o Chức năng quản lý đơn đặt hàng

Chương 2. KIẾN THỨC NỀN TẢNG
2.1 React Native

9


Hình 2.1: React Native
React Native là một framework mã nguồn mở cho phép các nhà phát triển
xây dựng ứng dụng di động đa nền tảng bằng cách sử dụng JavaScript và các thành
phần giao diện đồng nhất với React. React Native được phát triển bởi Facebook và
đã trở thành một trong những công nghệ phổ biến nhất để phát triển ứng dụng di
động trên các nền tảng iOS và Android.

Với React Native, các nhà phát triển có thể tạo các ứng dụng di động chất
lượng cao nhanh chóng và hiệu quả hơn. Điều này là do React Native cung cấp một
số tính năng hữu ích như tái sử dụng mã, tương thích đa nền tảng, và khả năng live
reload - cho phép các nhà phát triển cập nhật ứng dụng một cách nhanh chóng và
thấy kết quả ngay lập tức.
2.2 NodeJS

10


Hình 1.2: NodeJS
Node.js là một nền tảng phát triển ứng dụng web mã nguồn mở được xây
dựng trên nền tảng JavaScript. Node.js cho phép các nhà phát triển sử dụng

JavaScript để viết các ứng dụng server-side, điều này cho phép các nhà phát triển
tạo ra các ứng dụng web động và hiệu quả hơn.
Node.js cũng có nhiều thư viện và framework hỗ trợ phát triển ứng dụng web,
cho phép các nhà phát triển tạo ra những ứng dụng web đa dạng và phức tạp.
Node.js cũng cho phép tích hợp với các công nghệ khác như cơ sở dữ liệu, bảo mật
và các dịch vụ cloud, giúp các nhà phát triển tạo ra các ứng dụng web phức tạp và
đáp ứng được nhu cầu của người dùng.
2.3 FireBase

Hình 2.2: FireBase

11


Firebase là một nền tảng dịch vụ đám mây được cung cấp bởi Google, cho
phép các nhà phát triển xây dựng ứng dụng web và di động một cách nhanh chóng
và dễ dàng. Firebase cung cấp một loạt các dịch vụ như cơ sở dữ liệu, lưu trữ, xác
thực người dùng, phân tích, thơng báo và nhiều hơn nữa, giúp các nhà phát triển tập
trung vào việc phát triển sản phẩm của mình mà khơng cần phải quan tâm đến việc
cài đặt và vận hành cơ sở hạ tầng.
Firebase được tích hợp chặt chẽ với các cơng nghệ phổ biến như React,
Angular, Vue và Node.js, cho phép các nhà phát triển xây dựng các ứng dụng web
và di động đa nền tảng và đáp ứng được nhu cầu của người dùng trên các thiết bị
khác nhau.
Các tính năng của Firebase như tính năng xác thực, cơ sở dữ liệu và lưu trữ thời
gian thực cho phép các nhà phát triển tạo ra các ứng dụng web và di động có khả
năng phản hồi cao và cung cấp trải nghiệm người dùng tốt hơn. Firebase cũng cung
cấp các công cụ phân tích và thơng báo để giúp các nhà phát triển hiểu rõ hơn về
người dùng và tối ưu hóa sản phẩm của họ.


Chương 3. HỆ THỐNG GỢI Ý RECOMMENDER SYSTEM

3.1 Khái niệm
3.1.1 Recommendater System
Hệ thống gợi ý, hay tiếng anh là Recommender System, là một hệ thống có
khả năng tự động gợi ý cho người dùng những sản phẩm họ có thể thích. Đây là một
giải pháp thay thế tốt nhất cho các thuật tốn tìm kiếm, khi mà những sản phẩm họ
có thể thích được tự động đề xuất kể cả khi người dùng có thực hiện hành động tìm
tiếm hay khơng. Bằng cách sử dụng bộ dữ liệu thu thập được từ phía người dùng
trước đó, hệ thống sẽ tiến hành dự đoán và đưa ra kết quả gợi ý cho người dùng về
những sản phẩm, tính năng, hay dịch vụ... liên quan phù hợp với sở thích, độ quan
tâm của người dùng. Từ đó giúp nâng cao được chất lượng dịch vụ cho ứng dụng
cũng như thu lại được lợi nhuận cao, đặc biệt trong các sàn thương mại điện tử.
Recommemder System là một trong những mảng tương đối lớn của Học Máy
Machine Learning và cũng có lịch sử khá lâu đời, khi lần đầu tiên hệ thống được đề
cập trong một bài báo cáo kĩ thuật năm 1990 bởi Jussi Karlgren tại Đại Học
Columbia và sau đó được triển khai quy mơ lớn từ năm 1994 trở đi bởi Jussi
Karlgren. Tuy nhiên, thực tế Recommendation Systems là chỉ thực sự bùng nổ
khoảng 10-15 năm gần đây, khi việc tương tác trực tuyến của người dùng gia tăng,
và sự phát triển mạnh mẽ của các sàn thương mại điện tử, và cũng không thể thiếu
sự tiến bộ của ngành Khoa học dữ liệu hiện nay.
Các thuật ngữ sau đây sẽ thường được sử dụng,
 Đối tượng, hay người dùng mà hệ thống gợi ý hướng đến được gọi là users,
 Sản phẩm mà hệ thống đưa ra gợi ý được gọi là items

12


 Sự tương quan giữa các đối tượng và sản phẩm, mức độ quan tâm của đối
tượng đối với sản phẩm đó được gọi là rating

Về phân loại, các Recommender Systems thường được chia thành hai
nhóm lớn:
 Content-based systems: hoạt động dựa vào đặc điểm của items
 Collaborative filtering: hoạt động với sự cộng tác của users và rating.
Trong đề tài này, nhóm chúng em tập trung phát triển hệ thống gợi ý, Recommender
System theo hướng thứ nhất: Content-based systems
3.2 Utility matrix
Có hai thực thể chính trong các Recommendation Systems là users và items.
Mỗi user sẽ có mức độ quan tâm tới từng item khác nhau. Mức độ quan tâm này,
được gọi là rating, sẽ được gán cho một giá trị ứng với mỗi cặp user-item. Tập hợp
tất cả các ratings, bao gồm cả những giá trị chưa biết cần được dự đoán, tạo nên một
ma trận gọi là utility matrix.

Hình 3.1: Utility Matrix
Ví dụ: Các Items 1,2,3... được Users lần lượt đánh giá điểm rating theo mức
độ quan tâm từ 0 đến 5. Các dấu '?' ứng với việc dữ liệu chưa tồn tại trong cơ sở dữ
liệu và Recommendation Systems cần phải tính tốn, đưa ra kết quả dự đốn giá trị
cho các vị trí này.
Trên thực tế, có rất nhiều users và items trong hệ thống, và mỗi user thường
chỉ đánh giá điểm rating cho một số lượng rất nhỏ các items, thậm chí có những
user khơng rate item nào. Với việc các ô được điền càng nhiều thì độ chính xác của
hệ thống gợi ý sẽ càng được cải thiện, vì vậy, các hệ thống ln luôn hỏi người
dùng về sự quan tâm của họ tới sản phẩm, và muốn người dùng đánh giá càng nhiều
sản phẩm càng tốt. Việc đánh giá các sản phẩm của một người dùng, không những

13


giúp cho các người dùng khác biết được chất lượng sản phẩm mà cịn giúp hệ thống
biết được sở thích của người dùng, qua đó có những đề xuất với độ chính xác cho

những người dùng sau.
3.3 Content-based Recommendation Systems
Content-based Recommendation Systems (Hệ thống gợi ý dựa trên nội dung)
là một phương pháp trong lĩnh vực hệ thống gợi ý được sử dụng để cung cấp các
gợi ý dựa trên đặc điểm nội dung của các mục tiêu. Các hệ thống này đánh giá và so
sánh các thuộc tính, đặc điểm hoặc nội dung của các mục tiêu với lịch sử hoặc sở
thích của người dùng để đưa ra các gợi ý tương tự.
Ưu điểm của Content-based:
 Hệ thống gợi ý dựa trên nội dung tập trung vào sở thích cá nhân của người
dùng. Các gợi ý được tạo ra dựa trên các đặc điểm và lịch sử quan tâm của
người dùng, tạo ra trải nghiệm gợi ý phù hợp và cá nhân hơn.
 Hệ thống này không yêu cầu thông tin từ người dùng khác để tạo ra gợi ý.
Thay vào đó, nó dựa trên thơng tin nội dung của các mục tiêu, giúp tránh
những hạn chế của việc thu thập thông tin từ người dùng.
 Content-based Recommendation Systems dễ triển khai và thực hiện trong
thực tế. Việc thu thập thông tin về nội dung của các mục tiêu thường khá khả
thi và khơng địi hỏi nhiều tài ngun.
Nhược điểm của Content-based:
 Hệ thống gợi ý dựa trên nội dung có xu hướng gợi ý các mục tiêu tương tự
với nhau. Điều này có thể dẫn đến sự thiếu đa dạng trong gợi ý, vì nó khơng
khám phá được những sự khác biệt hoặc những mục tiêu mới mà người dùng
có thể quan tâm.
 Thiếu thơng tin về sở thích mới, nếu người dùng có sở thích mới mà khơng
có nội dung tương tự trong hệ thống, thì hệ thống sẽ gặp khó khăn trong việc
đưa ra gợi ý phù hợp.
 Giới hạn kiến thức người dùng: Hệ thống chỉ dựa trên thông tin đã biết về
người dùng để tạo ra gợi ý. Nó khơng khám phá được những sở thích mới
của người dùng hoặc những mục tiêu mà người dùng chưa được tiếp xúc.
Ví dụ:
Khi người dùng đang mua sắm trực tuyến và đã thêm một số sản phẩm vào

giỏ hàng, hệ thống gợi ý dựa trên nội dung có thể đề xuất những sản phẩm tương tự
hoặc phù hợp với những sản phẩm đã có trong giỏ hàng. Ví dụ, nếu người dùng đã
thêm một đơi giày thể thao của một thương hiệu nào đó vào giỏ hàng, hệ thống có
thể gợi ý các sản phẩm khác thuộc cùng thương hiệu đó hoặc cùng loại giày thể thao.
Việc gợi ý sản phẩm dựa trên sản phẩm hiện có trong giỏ hàng giúp người
dùng tìm kiếm các sản phẩm tương tự hoặc phù hợp, tạo ra trải nghiệm mua sắm
liên quan.

14


Hình 3.2: Cách thức hoạt động của Content-based Recommendation Systems
Mặt hạn chế trong thực tế của Content-based Recommendation Systems:
 Content-based Recommendation Systems có thể gặp khó khăn trong việc đưa
ra gợi ý cho các mục tiêu mới hoặc nằm ngoài những đặc điểm nội dung đã
biết.
 Hệ thống chỉ tập trung vào những sở thích đã biết của người dùng, do đó,
khơng thể khám phá được những sở thích mới hoặc những thay đổi trong sở
thích của người dùng.
 Content-based Recommendation Systems khơng thể hiểu hoặc dự đốn được
những ý đồ, tâm trạng hoặc những yếu tố phi nội dung khác mà người dùng
có thể quan tâm trong q trình tìm kiếm gợi ý. được những ý đồ, tâm trạng
hoặc những yếu tố phi nội dung khác mà người dùng có thể quan tâm trong
q trình tìm kiếm gợi ý.
3.4 Collaborative filtering Recommendation Systems
Lọc cộng tác, hay còn gọi là Collaborative filtering, là một nhóm phương
pháp thuộc hệ thống gợi ý, Recommender System, hoạt động dựa trên sự tương
quan giữa các users, items và rating, nhằm tìm ra sản phẩm mà người dùng có khả
năng thích dựa vào những sản phẩm mà những người dùng khác có hành vi tương
tự đã lựa chọn trước đó.

Ưu điểm của Collaborative filtering,

15


 Hệ thống tận dụng được những thông tin từ các users khác. Nếu biết được
đặc điểm hành vi của một vài users tương tự nhau, hệ thống có thể suy luận
ra hành vi của những users còn lại.
 Đơn giản, không cần phải mô tả đặc điểm mỗi item như Content-base
Nhược điểm của Collaborative filtering,
 Hệ thống không giải quyết được các bài toán khởi đầu lạnh (cold-start
problem) khi mà người dùng mới khơng có đặc điểm gì về hành vi, chưa
đánh giá sản phẩm bất nào, hay các sản phẩm mới chưa được người dùng
nào đánh giá...
 Khi ma trận đánh giá lớn, tức số lượng người dùng lẫn sản phẩm lớn thì thời
gian tính tốn sẽ tăng cao, khó đáp ứng tư vấn thời gian thực hoặc gần thời
gian thực
Ví dụ: Hai users A, và B đều thích cùng những items (tức là đều đánh giá
điểm rating cho các items yêu thích ở mức từ 4 -> 5). Khi đó, dựa vào dữ liệu thu
thập được trước đó của userA, ta thấy A thích một số items khác, như vậy nhiều khả
năng, userB cũng sẽ thích những items này. Từ đó hệ thống sẽ đề xuất những items
này cho userB.

Hình 3.3: Cách thức hoạt động của Collaborative filtering

16


Việc xác định mức độ quan tâm của mỗi user tới một item dựa trên mức độ
quan tâm của similar users tới item đó cịn được gọi là User-user Collaborative

Filtering.
Trên thực tế, User-user Collaboration filtering cũng tồn tại mặt hạn chế
 Số lượng users luôn lớn hơn số lượng items rất nhiều. Kéo theo việc tính
tốn rất lớn và phức tạp, và cũng gặp nhiều khó khăn trong việc lưu trữ ma
trân dữ liệu.
 Khi một user thay đổi rating, hoặc rating thêm items, tồn bộ tính tốn sẽ
phải thực hiện lại
Vì vậy mà, cũng có một hướng tiếp cận khác thay vì xác định user
similarities, hệ thống sẽ xác định item similarities. Hướng này được gọi là ItemItem Collaborative Filtering, có thể giải quyết các mặt hạn chế của User-user.
3.5 Áp dụng vào đề tài: chức năng gợi ý thực phẩm
3.5.1 Lựa chọn hệ thống
Nhóm quyết định lựa chọn Content-based Recommendation Systems để thực
hiện gợi ý các thực phẩm cho người dùng thông qua các thực phẩm người dùng đã
cho vào giỏ hàng. Và nhóm sử dụng thư viện hỗ trợ là Content Based
Recommender giúp hỗ trợ trong việc triển khai hệ thống gợi ý cũng như thuật toán.
Lý do chọn Content-based Recommendation Systems: vì đây là phương
pháp gần như là dễ tiếp cận nhất. Content-based sử dụng các thuật tốn phân tích
nội dung để tìm kiếm các sản phẩm tương tự dựa trên các đặc trưng của sản phẩm
đó và chỉ phân tích độc lập trên từng user chứ không phụ thuộc vào các user khác
trong hệ thống, phù hợp với các hệ thống không nhiều người dùng và mới triển khai
3.5.2 Thơng tin về thư viện:
Q trình đào tạo dữ liệu bao gồm 3 bước chính:
● Tiền xử lý nội dung dữ liệu: sử dụng kỹ thuật xử lý ngơn ngữ tự nhiên (NLP)
để làm giảm kích thước của văn bản và tăng cường khả năng phân loại và xử
lý dữ liệu. Và kĩ thuật chính đó là Stopwords removal và stemming:
o Stopwords removal là quá trình loại bỏ các từ phổ biến và khơng có ý
nghĩa trong văn bản như "a", "an", "the", "of" và "and". Các từ này
không chứa thông tin quan trọng nên loại bỏ chúng giúp giảm kích
thước của văn bản và cải thiện khả năng xử lý và phân loại dữ liệu.
Ex: INPUT: “It is the biggest cake I have ever made”

OUTPUT: “It biggest cake I have made”
o Stemming là quá trình loại bỏ các hậu tố của các từ để giảm bớt số
lượng từ khác nhau trong văn bản. Ví dụ, các từ "running", "runs" và
"runner" có thể được thu gọn lại thành từ "run". Quá trình này giúp
tăng cường khả năng xử lý và phân loại dữ liệu bằng cách giảm số
lượng từ khác nhau trong văn bản.

17


Ex: INPUT: “Do you really think it is weakness that yields to temptation”
OUTPUT: “Do you really think it is weak that yield to temptat”
● Hình thành tài liệu vectơ bằng cách sử dụng tf-idf(Term Frequency-Inverse
Document Frequency) để biểu diễn văn bản thành các vector số, bao gồm hai
thành phần chính:
o Term Frequency (TF): Tần số xuất hiện của từ trong văn bản.
o Inverse Document Frequency (IDF): Nghịch đảo tần số của từ trong
các tài liệu khác.
o TF-IDF tính tốn mức độ quan trọng của một từ trong văn bản bằng
cách tăng giá trị của các từ xuất hiện nhiều trong văn bản nhưng ít
xuất hiện trong các văn bản khác. Văn bản được biểu diễn dưới dạng
vector số, trong đó mỗi thành phần của vector tương ứng với giá trị
TF-IDF của một từ trong văn bản. Các vector này có thể được sử dụng
để so sánh sự tương đồng giữa các văn bản, và là cơ sở cho nhiều ứng
dụng trong NLP như phân loại văn bản, tìm kiếm thơng tin và dị tìm
liên kết giữa các văn bản.
● Tìm điểm cosine similarity giữa tất cả các vectơ tài liệu, ta sử dụng cơng
thức sau:

o Trong đó, A và B là hai vector cần so sánh, "." là phép nhân vector và

"|| ||" là độ dài của vector. Kết quả của cosine similarity sẽ nằm trong
khoảng từ -1 đến 1, với 1 là điểm tương đồng hoàn hảo giữa hai
vector, 0 là khơng có tương đồng và -1 là tương đối đối nghịch giữa
hai vector.
o Do đó, tính tốn cosine similarity scores giữa tất cả các vector biểu
diễn văn bản sẽ tạo ra một ma trận tương đồng, trong đó mỗi phần tử
sẽ biểu diễn điểm tương đồng giữa hai vector tương ứng. Ma trận này
có thể được sử dụng để phân loại văn bản hoặc tìm kiếm các văn bản
tương đồng trong các ứng dụng NLP.
3.6 Chức năng gợi ý 2: gợi ý món ăn dựa trên thực phẩm đã chọn
● Mô tả: Người dùng sẽ chọn các thực phẩm có trong giỏ hàng của mình và
sau đó bấm chọn gợi ý món ăn, một danh sách các món ăn phù hợp với các
nguyện liệu đã chọn hiển thị với mức độ phù hợp từ trên xuống, người dùng
có thể chọn món ăn để xem các nguyên đã có và các nguyên liệu cần bổ xung
● Thực hiện: Sử dụng API của Spoonacular để tìm kiếm các món ăn phù hợp
với các nguyên liệu đã chọn

18


o Spoonacular API là một API (Application Programming Interface)
công cộng, cung cấp các dịch vụ liên quan đến công thức và dinh
dưỡng, cho phép các nhà phát triển và doanh nghiệp tích hợp các tính
năng liên quan đến ẩm thực vào ứng dụng của họ. Spoonacular API
cung cấp nhiều tính năng hữu ích như tìm kiếm cơng thức nấu ăn, lấy
thơng tin về dinh dưỡng của thực phẩm, phân tích các công thức để
đưa ra các gợi ý thay thế và bổ sung, và cung cấp các kế hoạch ăn
uống và món ăn phù hợp với điều kiện sức khỏe của người dùng.

Chương 4. ĐẶC TẢ USECASE

4.1 Sơ đồ Usecase

19


Hình 4.1: Sơ đồ UseCase
4.2 Danh sách tác nhân
STT

Tác nhân

Mơ tả/ Ghi chú

20


1
2

STT
1
2
3
4
5
6
7
8
9
10

11
12
13
14
15
16

Người dùng
(User)
Quản lý
(Admin)

Là người dùng có thể đăng nhập vào ứng dụng
Là người quản lý các đơn đặt hàng của người dùng
Bảng 4.1: Danh sách tác nhân

4.3 Danh sách Usecase
Tính năng

Mô tả/ Ghi chú
Dành cho User, xem thông tin chi tiết thực
Xem chi tiết thực phẩm
phẩm
Tra cứu thực phẩm
Dành cho User, tìm kiếm thực phẩm
Thêm thực phẩm vào giỏ
Dành cho User, thêm thực phẩm vào giỏ
hàng
hàng
Chọn số lượng và loại thực Dành cho User, một phần trong quy trình đặt

phẩm
hàng
Dành cho User, một phần trong quy trình đặt
Chọn địa chỉ giao hàng
hàng
Chọn phương thức thanh
Dành cho User, một phần trong quy trình đặt
hàng
tốn
Dành cho User, một phần trong quy trình đặt
Chọn mã giảm giá
hàng
Quản lý thực phẩm trong giỏ Dành cho User, quản lý thêm xóa sửa trong
giỏ hàng
hàng
Dành cho User, xem danh sách món ăn gợi ý
Gợi ý món ăn
dựa vào thực phẩm hiện có trong giỏ hàng
Sửa thơng tin tài khoản
Dành cho User, sửa hồ sơ cá nhân
Dành cho User, quản lý thêm, sửa, xóa địa
Quản lý thơng tin địa chỉ
chỉ giao hàng
Xem lịch sử đơn hàng
Dành cho User, xem lại lịch sử mua hàng
Đăng nhập
Dành cho User hoặc Admin đã có tài khoản
Đăng ký tài khoản
Dành cho User chưa có tài khoản
Đăng xuất

Dành cho User hoặn Admin
Dành cho Admin, xem trạng thái đơn hàng
Quản lý đơn đặt hàng
và xác nhận đơn hàng cho User.
Bảng 4.2: Danh sách UseCase

4.4 Mô tả chi tiết Usecase
4.4.1 Quản lý giỏ hàng:
Tên Use case
Quản lý giỏ hàng
Mã Use case

UC03

21


×