3.4.1. Giới thiệu về Firebase:
Firebase là một dịch vụ cơ sở dữ liệu thời gian thực hoạt động trên nền tảng đám mây được cung cấp bởi Google nhằm giúp các lập trình phát triển nhanh các ứng dụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu.
Firebase phát triển từ Evolve, một công ty khởi nghiệp trước đó được thành lập bởi James Tamplin và Andrew Lee vào năm 2011. Evolve cung cấp cho các nhà phát triển một API cho phép
tích hợp chức năng trò chuyện trực tuyến vào trang web của họ. Sau khi phát hành dịch vụ trò chuyện, Tamplin và Lee phát hiện ra rằng nó đang được sử dụng để truyền dữ liệu ứng dụng không phải là tin nhắn trò chuyện. Các nhà phát triển đã sử dụng Evolve để đồng bộ hóa dữ liệu ứng dụng như trạng thái trò chơi trong thời gian thực trên người dùng của họ. Tamplin và Lee quyết định tách hệ thống trò chuyện và kiến trúc thời gian thực cung cấp năng lượng cho nó. Họ thành lập Firebase như một công ty riêng biệt vào năm 2011 và ra mắt công chúng vào tháng 4 năm 2012.
Ra mắt muộn hơn các công nghệ khác, Firebase được ra đời vào năm 2014 và được google mua lại vào năm 2016. Từ đó Firebase đã tăng từ 110.000 lên 470.000 nhà phát triển và vẫn đang nắm giữ tốc độ tăng trưởng đáng kể. Firebase được tin dùng và phổ biến bởi vì nó giúp nhà phát triển có thể xây dựng hệ thống Client – Server mà công sức cũng như chi phí bỏ ra cho phía Server giảm đi đáng kể.
Vào tháng 5 năm 2016, tại Google I /O,hội nghị nhà phát triển hàng năm của công ty, Firebase
đã giới thiệu Firebase Analytics và tuyên bố rằng họ đang mở rộng dịch vụ của mình để trở thành một nền tảng phụ trợ như một dịch vụ thống nhất (BaaS) cho các nhà phát triển di động. Firebase
hiện tích hợp với nhiều dịch vụ khác của Google, bao gồm Google Cloud Platform,AdMob
và Google Ads để cung cấp các sản phẩm và quy mô rộng hơn cho các nhà phát triển. Google Cloud Messaging, dịch vụ của Google để gửi thông báo đẩy đến các thiết bị Android, đã được thay
thế bởi một sản phẩm Firebase, Firebase Cloud Messaging,bổ sung chức năng để cung cấp thông
Hình 3.1: Giới thiệu về Framework Google Firebase
3.4.2. Các chức năng chính của Google Firebase:
a. Realtime Database – Cơ sở dữ liệu thời gian thực:
Dữ liệu được firebase lưu trữ có dạng JSON và được đồng bộ cơ sở dữ liệu đến tất cả user theo thời gian thực. Điều này sẽ giúp xây dựng hệ thống đa nền tảng và tất cả user cùng dùng chung một database được cung cấp với firebase, điều tuyệt vời hơn là firebase tự động cập nhật mỗi khi có sự thay đổi dữ liệu.
b. Firebase Authentication – Hệ thống xác thực Firebase:
Firebase dễ dàng tích hợp các công nghệ xác thực của các ông lớn trên internet như Google, Facebook, …hoặc một hệ thống xác thực tự xây dựng trong ứng dụng ở bất kỳ nền tảng nào như Android, iOS.
Firebase storage lưu trữ được nhiều dạng dữ liệu như tập tin, hình ảnh, video một cách dễ dàng. Ngoài ra nó còn tích hợp Google security giúp tải lên và tải về các ứng dụng firebase một cách tiện lợi.
d. Firebase Cloud Messaging:
Bên cạnh các tính năng trên, Firebase còn cung cấp dịch vụ Cloud Messaging, một giải pháp đa nền tảng, cho phép mọi người gửi thông điệp miễn phí dưới dạng tin nhắn theo thời gian thực.
3.4.3. Lợi ích của Google Firebase:
a. Triển khai ứng dụng cực nhanh:
Với firebase, lập trình viên sẽ giảm được nhiều thời gian cho việc xây dựng và phát triển và đồng bộ cơ sở dữ liệu, nó diễn ra nhanh chóng và tự động qua các API mà Firebase cung cấp. Ngoài ra, nếu lập trình viên muốn xây dựng ứng dụng đa nền tảng, điều này hoàn toàn dễ dàng vì Firebase cũng hỗ trợ đa nền tảng.
Không chỉ có vậy, quá trình đăng ký và đăng nhập vào ứng dụng sẽ tiện lợi và dễ dàng hơn bằng các hệ thống xác thực mà Firebase đã cung cấp.
b. Bảo mật:
Firebase hoạt động dựa vào nền tảng đám mây và thực hiện kết nối bằng giao thức bảo mật SSL, vì thế bảo mật dữ liệu cũng như đường truyền giữa client và server sẽ được đảm bảo nghiêm ngặt. Ngoài ra, việc phân quyền cho người dùng chỉ đơn giản với cú pháp javascript cũng được nâng cao hơn, bởi chỉ người nào được cấp phép mới có thể chỉnh sửa dữ liệu.
c. Tính linh hoạt và khả năng mở rộng:
Firebase cho phép nhà phát triển xây dựng server của riêng mình để thuận tiện trong quá trình quản lý. Firebase sử dụng hệ quản trị cơ sở dữ liệu là NoSQL, giúp database dễ dàng mở rộng các bảng, các trường tùy theo ý thích của mỗi lập trình viên.
Dialogflow (tiền thân là API.AI) là một dịch vụ do Google cung cấp nhằm giúp các lập trình viên dễ dàng hơn khi lập trình các sản phẩm có giao tiếp giữa người dùng với sản phẩm thông qua các đoạn hội thoại bằng văn bản (text) hoặc giọng nói (voice).
Dialogflow sử dụng trí tuệ nhân tạo (AI) giúp phân tích ngôn ngữ tự nhiên để hiểu được những gì người dùng đưa vào. Hiện Dialogflow có 2 phiên bản:
• Standard: Hoàn toàn miễn phí để sử dụng. • Và Enterprise: Cần trả một ít tiền.
Hình 3.2. Giới thiệu về Dialogflow
3.5.1 Intent:
Theo định nghĩa của từ điển vdict.com, INTENT là danh từ, có nghĩa là ý định/mục đích/nghĩa. Còn theo dialogflow.com, một INTENT là đại diện cho một ánh xạ giữa những gì người dùng đưa vào, và hành động sẽ được thực hiện bởi phần mềm.
Để bạn dễ hiểu hơn, tôi có một ví dụ này, bạn đang cần làm một Chatbot dự báo thời tiết, giả sử khi người dùng hỏi với bot:
• Ngày mai ở Hà Nội trời có mưa không?
Với cả hai câu hỏi này, người dùng đều đang mong muốn Chatbot trả lời thông tin dự báo về thời tiết. Như vậy, khi lập trình Chatbot, bạn chỉ cần 1 hành động cho cả hai câu hỏi, hay bạn cần tạo một INTENT cho chúng.
Nói một cách khác, một INTENT là một tập những gì người dùng nói mà chúng có cùng một ý nghĩa.
3.5.2 Entity:
Cũng theo từ điển vdict.com, ENTITY là danh từ, có nghĩa là thực thể, hay sự tồn tại (của một vật). Với dialogflow.com, ENTITIES là những công cụ được sử dụng để trích xuất các giá trị của tham số từ ngôn ngữ tự nhiên. Bất kỳ những gì mà bạn muốn biết từ nội dung của người dùng đều sẽ có một ENTITY tương ứng.
Quay lại với ví dụ ở trên, “Ngày mai” hay “Thứ 6 này” sẽ có một entity tương ứng là Thời gian. Hà Nội, Đà Nẵng, New York, … sẽ là entity Vị trí
3.5.3 Agent:
Trong dialogflow.com, AGENT là khái niệm được dùng để đại diện cho một mô- đun (module) NLU (Natural Language Understanding – Phân tích để hiểu ngôn ngữ tự nhiên). AGENT giúp bạn phân tích những những gì người dùng đưa vào (text hoặc voice) để chuyển thành những dữ liệu mà bạn có thể xử lý được bằng lập trình.
Bạn sẽ sử dụng một AGENT để quản lý các đoạn hội thoại thông qua INTENTS, ENTITIES.
3.5.4 Ứng dụng Dialogflow vào ứng dụng BabyCare:
• Dialogflow sẽ đóng vai trò là một API có sẵn để ứng dụng gọi và lấy ra giá trị tin nhắn cần thiết. Nhóm chúng em sẽ thiết lập các Intent, Entity và Agent hợp lý từ đó tạo ra các kịch bản có sẵn và các câu hỏi liên quan sẵn. Khi người dùng nhắn những đoạn tin nhắn liên quan đến kịch bản sẵn có thì ứng dụng sẽ gọi vào Dialogflow để lấy tin nhắn tương ứng.
• Ứng dụng sử dụng ngôn ngữ dart để thiết lập kết nối giữa flutter và dialogflow.
3.6 Hệ thống khuyến nghị 3.6.1. Giới thiệu 3.6.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.
Recommendation system rất quan trọng trong 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ổ biến trong các ứng dụng khác nhau (ví dụ như Netflix, Google, Youtube, 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ệ thống 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ệ thống khuyến nghị.
Hệ thống khuyến nghị 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ơ 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 hệ khuyến nghị là dự đoán “đánh giá” của người dùng cho một sản phẩm nhất định hoặc danh sách những sản phẩm mà người dùng có thể thích.
Thông tin về người sử dụng được dùng cho hệ thống khuyến nghị tự động có thể chia thành hai loại: thông tin ẩn và thông tin hiện:
- Thông tin ẩn (Implicit Feedback): Các lượt thích và không thích của người dùng được ghi nhận và ghi lại trên cơ sở các hành động của họ như nhấp chuột, tìm kiếm và mua hàng... Các nội dung này rất dễ thu thập, nhưng thường có độ nhiễu cao và không có tương tác trực tiếp với người dùng (hệ thống tự động ghi lại lịch sử), đồng thời những phản hồi tiêu cực không được tìm thấy.
- Thông tin hiện (Explicit Feedback): các kết quả nhận được khi người dùng trực tiếp đưa ra đánh giá về sản phẩm như thích/ không thích, chấm điểm, bình luận... Các thông tin này thường khó thu thập hơn rất nhiều so với thông tin ẩn, nhưng độ chính xác cao hơn và rất hữu ích cho việc khuyến nghị.
Recommendation system thường được chia làm hai nhóm lớn:
- Content – based system: đánh giá đặc tính của items được recommend. Ví dụ: một user
chung đặc tính hình sự tới user này. Cách tiếp cận này yêu cầu việc sắp xếp các items vào từng nhóm hoặc đi tìm các đặc trưng của từng items. Tuy nhiên, có những items không có nhóm cụ thể và việc xác định nhóm hoặc đặc trưng của từng item đôi khi là bất khả thi.
- Collaborative filtering: hệ thống gợi ý items dựa trên sự tương quan (similarity) giữa các users và items. Có thể hiểu rằng ở nhóm này, một item được recommend tới một user dựa trên những users có hành vi tương tự.
Mục tiêu của hệ thống khuyến nghị:
- Gia tăng doanh số: Đơn giản là họ sẽ bán thêm được hàng hoặc tăng lượt đặt chỗ so với những trang mà không sử dụng Recommendation System. Recommendation System đề xuất càng chính xác với nhu cầu người dùng thì website càng bán được nhiều hàng.
- Thỏa mãn nhu cầu khách hàng: Một Recommendation System được thiết kế và cài đặt tốt sẽ cải thiện trải nghiệm người dùng. Người dùng sẽ thấy rằng hệ tư vấn này rất thú vị, chính xác, và cùng với một UI được thiết kế hợp lý, khách hàng sẽ muốn quay lại website.
- Nắm được nhu cầu khách hàng: Một chức năng quan trọng khác của Recommendation System là cho phép ta thu thập được phản hồi của khách hàng. Nếu khách hàng không thích những thứ mà bạn đề xuất, bạn vẫn có thể thu thập lại được những thông tin này và tái sử dụng nó để cải thiện độ chính xác của Recommendation System.
3.6.2. Một số phương pháp trong hệ thống khuyến nghị
a. Hệ thống khuyến nghị theo nội dung (Content-based)
Content – based recommendation đề xuất dựa theo nội dung của mỗi item, tức là các hệ thống đề xuất sản phẩm cho người dùng sẽ dựa trên mô tả về sản phẩm đó và hồ sơ sở thích của người dùng đó.
Trong hệ thống content – based, cần xây dựng một bộ hồ sơ (profile) cho mỗi item. Profile này được biểu diễn dưới dạng toán học là một feature vector. Trong những trường hợp đơn giản, feature vector được trực tiếp trích xuất từ item. Ví dụ, xem xét các features của một bài hát mà có thể được sử dụng trong các Recommendation Systems như ca sĩ, nhạc sĩ sáng tác, năm sáng tác, thể loại, ...
- Không cần bất kỳ dữ liệu nào về người dùng khác, vì các đề xuất là dành riêng cho người dùng hiện tại. Điều này giúp dễ dàng mở rộng quy mô đến một số lượng lớn người dùng, tiết kiệm bộ nhớ và thời gian tính toán.
- Có thể nắm bắt sở thích cụ thể của người dùng và có thể đề xuất các sản phẩm thích hợp mà rất ít người dùng khác quan tâm.
Về nhược điểm:
- Cần phải trích xuất được các đặc điểm của sản phẩm.
- Khi xây dựng mô hình cho một user, các hệ thống Content – based không tận dụng được thông tin từ các users khác. Những thông tin này thường rất hữu ích vì hành vi mua hàng của các users thường được nhóm thành một vài nhóm đơn giản; nếu biết hành vi mua hàng của một vài users trong nhóm, hệ thống nên suy luận ra hành vi của những users còn lại.
- Vấn đề người dùng mới.
b. Hệ thống khuyến nghị lọc cộng tác (Collaborative Filtering)
Những nhược điểm của Content – based có thể được giải quyết bằng phương pháp lọc cộng tác. Các phương pháp lọc cộng tác dựa trên việc thu thập và phân tích một lượng lớn thông tin về hành vi, hoạt động hoặc sở thích của người dùng và dự đoán những gì người dùng sẽ thích dựa trên sự tương đồng của họ với người dùng khác. Nó xem xét phản ứng của những người dùng khác trong khi đề xuất một người dùng cụ thể. Nó ghi chú những sản phẩm mà một người dùng cụ thể thích và cả những sản phẩm mà người dùng có hành vi và sở thích tương tự họ thích, để giới thiệu những sản phẩm đó cho người dùng.
Hệ thống recommender so sánh dữ liệu đã thu thập với dữ liệu tương tự và khác nhau được thu thập từ những người khác và tính toán danh sách các mục được đề xuất cho người dùng.
Khi xây dựng mô hình từ hành vi của người dùng, sự phân biệt thường được thực hiện giữa các hình thức thu thập dữ liệu rõ ràng và tiềm ẩn.
Ví dụ về thu thập dữ liệu rõ ràng bao gồm:
- Yêu cầu người dùng xếp hạng một mục trên thang trượt. - Yêu cầu người dùng tìm kiếm
- Yêu cầu người dùng xếp hạng một bộ sưu tập các mục từ yêu thích đến ít yêu thích nhất.
Ví dụ về thu thập dữ liệu ngầm bao gồm:
- Quan sát các mục mà người dùng xem trong cửa hàng trực tuyến. - Phân tích thời gian xem mục / người dùng.
- Lưu giữ một bản ghi các mục mà người dùng mua trực tuyến.
- Lấy danh sách các mục mà người dùng đã nghe hoặc xem trên máy tính của họ.
- Phân tích mạng xã hội của người dùng và khám phá những lượt thích và không thích tương tự.
Một trong những ví dụ nổi tiếng nhất về lọc cộng tác là lọc cộng tác theo từng mục (những người mua X cũng mua Y), một thuật toán được phổ biến rộng rãi bởi hệ thống gợi ý của Amazon.com. Các ví dụ khác bao gồm:
- Last.fm đề xuất âm nhạc dựa trên so sánh thói quen nghe của những người dùng tương tự, trong khi Readgeek so sánh xếp hạng sách cho các đề xuất.
- Facebook , MySpace , LinkedIn và các mạng xã hội khác sử dụng tính năng lọc cộng tác để giới thiệu bạn bè, nhóm và các kết nối xã hội khác (bằng cách kiểm tra mạng kết nối giữa người dùng và bạn bè của họ). Twitter sử dụng nhiều tín hiệu và tính toán trong bộ nhớ để giới thiệu cho