Cơ sở lý thuyết
Bài toán Chatbot
Bài toán Chatbot đơn giản là quá trình nhận tin nhắn từ người dùng và trả về kết quả mong đợi dưới dạng văn bản hoặc hình ảnh Thách thức lớn nhất là xác định chính xác nhu cầu của người dùng từ tin nhắn đầu vào Hệ thống Chatbot hoạt động như một hệ thống tương tác giữa con người và máy, nhằm giải quyết các vấn đề cụ thể mà người dùng gặp phải.
Hình 2-1 Mô tả bài toán Chatbot
Tùy thuộc vào mục đích của Chatbot mà có một số thước đo phi hình thức cho Chatbot như:
- Khối lượng chat (số lượng tin nhắn)
- Số lượng người sử dụng
- Số lượng người mua các dịch vụ trả phí
Nhìn chung các thước đo này được chia làm năm loại thước đo chính:
- Khía cạnh trải nghiệm người dùng
- Khía cạnh thu thập thông tin
• Độ dễ tiếp cận (Accesssibility)
• Chính xác về mặt ngữ pháp (Grammatical Accuracy)
• Tính tương tự con người (Humanity)
• Giá trị kinh tế (Business value)
Việc chuẩn hóa đánh giá hiệu quả của Chatbot đã được thực hiện thông qua các bộ khung như TRAINS-95, PARADISE, SASSI, MIMIC Mặc dù các bộ khung này cung cấp một cấu trúc cho các thang đo, nhưng chúng vẫn dựa vào các thang đo phi hình thức và mang tính chủ quan do con người đánh giá.
Một đặc điểm nổi bật của bài toán Chatbot là sự kết hợp của hai vấn đề lớn trong xử lý ngôn ngữ tự nhiên Đầu tiên là thấu hiểu ngôn ngữ tự nhiên (Natural Language Understanding), nơi hệ thống máy tính cố gắng hiểu các chuỗi ký tự và trích xuất dữ liệu có thể tổ chức trong hệ thống Các bài toán con trong thấu hiểu ngôn ngữ tự nhiên bao gồm tiền xử lý, phân tích hình thái, phân tích cú pháp, phân tích ngữ nghĩa, phân tích ngữ dụng và phân tích diễn ngôn.
Hình 2-2 Ví dụ thấu hiểu ngôn ngữ tự nhiên
Bài toán cấu tạo ngôn ngữ tự nhiên (Natural Language Generation) liên quan đến việc hệ thống máy tính sử dụng dữ liệu đã được tổ chức để chuyển đổi thành ngôn ngữ tự nhiên trước khi hiển thị cho người dùng Để giải quyết bài toán này, các bài toán con cần được thực hiện, bao gồm xác định nội dung, cấu trúc thông tin, tổng hợp thông tin, lựa chọn từ vựng, tạo cú pháp tham chiếu và hiện thực hóa.
Hình 2-3 Ví dụ bài toán Cấu tạo ngôn ngữ tự nhiên
Các hướng tiếp cận bài toán Chatbot
2.2.1 Hướng tiếp cận ngây thơ
Chatbot cơ bản gồm hai thành phần chính:
- Hệ thống xử lý thông tin đầu vào
- Hệ thống biên soạn thông tin đầu ra
Hệ thống được lập trình để kiểm tra sự khớp thông tin đầu vào với chuỗi dữ liệu đã định nghĩa sẵn Nếu kết quả khớp chính xác, hệ thống sẽ biên soạn thông tin đầu ra tương ứng Tuy nhiên, phương pháp xử lý này vẫn bộc lộ nhiều hạn chế cần được khắc phục.
Thời tiết ở Hồ Chí Minh ngày mai như thế nào Ý định: Hỏi thời tiết Địa điểm: Hồ Chí Minh Thời gian: 18/05/2022
2.2.2 Hướng tiếp cận tìm kiếm mờ Để hiểu về hướng tiếp cận này, xét bài toán sửa lỗi chính tả Một trong những phương pháp để xác định lỗi chính tả đó là tính toán khoảng cách chỉnh sửa Với hai xâu ký tự nguồn và xâu ký tự đích, khoảng cách chỉnh sửa để biến xâu nguồn thành xâu đích được tính như sau
Khoảng cách chỉnh sửa(source, target) = w_a * a + w_d * d + w_s * s
Hình 2-4 Công thức tính khoảng cách bài toán tiếp cận tìm kiếm mờ
Khoảng cách chỉnh sửa giữa hai xâu ký tự được xác định bởi số tác vụ thêm (a), xóa (d) và thay thế (s), với trọng số w_a, w_d, w_s thường bằng 1 Khoảng cách này càng nhỏ (khác 0) cho thấy hai xâu càng giống nhau, và xâu nguồn có thể là xâu đích bị viết sai chính tả Một trong những thuật toán phổ biến để tính toán khoảng cách chỉnh sửa nhỏ nhất là Levenshtein.
Hình 2-5 Công thức Levenshtein
Bằng cách áp dụng phương pháp quy hoạch động, chúng ta có thể tạo ra một ma trận có kích thước (m+1) × (n+1), trong đó m đại diện cho số từ trong chuỗi nguồn và n là số từ trong chuỗi đích Sau đó, chúng ta sẽ tiến hành các bước tiếp theo để hoàn thiện quá trình.
- Từ xâu rỗng, thêm từng kí tự cho đến khi đạt được xâu đích
- Từ xâu nguồn, xóa đi từng kí tự cho đến khi xâu rỗng
- Từ trên xuống (j), từ trái qua phải (i), thực hiện các bước sau:
• Nếu source[i-1] = target[j-1] thì sub_cost = 0
• Nếu ngược lại sub_cost = 1
- Giá trị m[m,n] chính là khoảng cách chỉnh sửa
Hình 2-6 Minh họa ma trận thuật toán Levenshtein
Thuật toán này không chỉ xử lý chữ cái mà còn áp dụng cho bất kỳ đối tượng nào có thể chia thành các phần tử nhỏ hơn Bằng cách thay thế chữ cái bằng từ, và từ bằng câu, cùng với một tập hợp câu và phản hồi lớn, kết hợp với cấu trúc dữ liệu như Trie, chúng ta có thể khắc phục nhược điểm lớn nhất của phương pháp tiếp cận ngây thơ.
Hình 2-7 Cấu trúc dữ liệu Trie để lưu trữ từ điển cho phép so sánh mờ
Bài toán này cho phép hệ thống so sánh thông tin do người dùng nhập với dữ liệu có sẵn một cách "thông minh", thay vì chỉ so sánh từng chữ một Nhờ vậy, người dùng có thể tương tác linh hoạt hơn với hệ thống.
2.2.3 Hướng tiếp cận mạng nơron Ở đây mạng nơron được nhắc đến là mạng nơron truyền thẳng – Feed-forward Neural Network) Nguyên lý cơ bản của mạng nơron truyền thẳng đó là hệ thống sẽ bao gồm một lớp dữ liệu đầu vào, một số lớp dữ liệu ẩn, và một lớp dữ liệu đầu ra Mỗi lớp (layer) sẽ có một số nút là một hàm số (thường là các hàm số có đồ thị hình chữ S như hàm sigmoid, hàm tanh, …) và một trọng số Mạng nơron sẽ được huấn luyện bằng cách đưa một tập dữ lieuj đầu vào, và kết quả mong đợi ở đầu ra Nhiệm vụ của mạng nơron là điều chỉnh các trọng số trong mỗi nút ẩn để đưa ra được kết quả như mong đợi trong tập huấn luyện và sử dụng phương pháp truyền ngược sai số (Back Propagation)
Hình 2-8 Minh họa Mạng nơ ron
Đầu vào của mạng nơron là các từ ngữ, trong khi đầu ra là trọng số phản ánh ý nghĩa của người dùng Để huấn luyện mạng nơron hiệu quả, cần thực hiện các bước tiền xử lý dữ liệu đầu vào.
Chuẩn hóa (Normalization) là quá trình chuyển đổi các ký tự về một biểu diễn thống nhất, ví dụ như chuyển đổi tất cả các chữ cái thành chữ thường hoặc chuyển đổi ký tự từ bộ mã hóa này sang bộ mã hóa khác.
He has multiple candies -> he has multiple candies
Tuỳ trường hợp -> Tùy trường hợp
Câu tiếng việt (TCVN) -> Câu tiếng việt (Unicode)
Hình 2-9 Minh hoạ thuật toán Chuẩn Hóa (Normalization)
- Phân tách từ (Tokenization): Phân tách xâu ký tự thành các token Cần đảm bảo thuật toán phân tách từ có thể xử lý được các dấu câu
He does have multiple candies -> [“He”, “does”, “have”, “multiple”, “candies”]
Tôi phải đi đây Cho tôi mượn 3.000 đồng được không? -> [“Tôi”, “phải”, “đi”,
“đây”, “.”, “Cho”, “tôi”, “mượn”, “3.000”, “đồng”, “được”, “không”, “?”]
Hình 2-10 Minh họa thuật toán Phân tách từ (Tokenization)
Loại bỏ từ ngắt nghỉ (Stopword Removal) là quá trình loại bỏ các token từ những từ không ảnh hưởng đến nghĩa của câu Ví dụ, trong tiếng Việt, những từ như "và", "của", "là" thường không mang lại giá trị thông tin cao và có thể bị loại bỏ để cải thiện chất lượng phân tích văn bản.
“đây” hay “nhé” ít mang ngữ nghĩa và chỉ được thêm vào trong ngữ cảnh văn nói)
[“He”, “does”, “have”, “multiple”, “candies”]
[“Tôi”, “phải”, “đi”, “đây”, “.”, “Cho”, “tôi”, “mượn”, “3.000”, “đồng”, “được”,
“không”, “?”] -> [“Tôi”, “đi”, “.”, “tôi”, “mượn”, “3.000”, “đồng”, “?”]
Hình 2-11 Minh họa thuật toán Loại bỏ từ ngắt nghỉ (Stopword Removal)
Xác định từ gốc (Word Stemming) là quá trình nhận diện từ gốc của một từ ngữ, thường áp dụng cho các ngôn ngữ hòa kết như tiếng Anh, ví dụ như "has" được biến đổi thành "have".
Hình 2-12 Minh họa thuật toán Xác định từ gốc (Word Stemming)
Ghép nối từ (Word Segmenting) là quá trình kết hợp các token thành một từ có nghĩa, chủ yếu áp dụng cho các ngôn ngữ đơn lập như tiếng Việt Phương pháp này giúp cải thiện khả năng hiểu và xử lý ngôn ngữ tự nhiên, tạo điều kiện cho việc phân tích văn bản hiệu quả hơn.
“những con người” -> “Những con_người”
Hình 2-13 Minh họa thuật toán Ghép nối từ (Word Segmenting)
Hướng tiếp cận mới này làm cho việc phân tích dữ liệu đầu vào trở nên phức tạp hơn, từ đó mang lại kết quả chính xác hơn so với các phương pháp trước đây Sự chú trọng vào ngữ cảnh và các từ ngắt nghỉ giúp hệ thống học sâu hơn về thông tin mà người dùng cung cấp.
2.2.4 Hướng tiếp cận sử dụng mô hình đơn ngữ đa dụng
Hướng tiếp cận hiện đại nhất trong lĩnh vực ngôn ngữ hiện nay là sử dụng mô hình ngôn ngữ đa dụng, chủ yếu dựa trên nền tảng mô hình Transformer Transformer được xem là cải tiến vượt bậc so với mô hình mạng nơron hồi quy (Recurrent Neural Network) nhờ vào khái niệm self-attention (tự tập trung) Khả năng tự tập trung cho phép mô hình máy học chú trọng vào các thành phần quan trọng trong một tập dữ liệu lớn mà vẫn duy trì độ chính xác cao, điều mà các mô hình máy học truyền thống khó đạt được Hiện tại, có nhiều mô hình đã được huấn luyện trước sử dụng mô hình Transformer, và chúng được phân loại thành hai nhóm chính.
Nhóm mô hình chỉ có mã hóa (encoder) có khả năng tiếp nhận dữ liệu đầu vào và chuyển đổi thành một tập hợp các tham số gọi là đặc trưng Các tham số này có thể được tối ưu hóa thông qua các phương pháp như Grid Search hoặc Random Search, nhằm xác định tập giá trị đặc trưng phù hợp cho tác vụ đang thực hiện.
Rasa
Rasa là một nền tảng mã nguồn mở chuyên về xử lý ngôn ngữ tự nhiên, bao gồm mô hình Dual Intent Entity Transformer (DIET) Nền tảng này được cấu thành từ hai mô-đun chính: Rasa NLU và Rasa Core Trong đó, Rasa NLU có nhiệm vụ phân tích thông tin từ người dùng và phân loại ý định của họ.
14 người dùng và trích xuất những thực thể Rasa NLU kết hợp các cách chú giải khác nhau để dịch thông tin người dùng
- Phân loại ý định (Intent classification): Dịch nghĩa dựa trên những ý định được định nghĩa sẵn
- Trích xuất thực thể (Entity extraction): nhận diện cấu trúc dữ liệu
Rasa Core tiếp nhận dữ liệu đầu vào dưới dạng các ý định và thực thể, sau đó xác định hành vi phù hợp cho chatbot dựa trên mô hình xác suất thống kê.
Hình 2-15 Minh họa cách Rasa Core hoạt động
Cách ứng dụng Rasa Core phản hồi tin nhắn được giải thích:
1 Tin nhắn đầu vào truyền tới Interpreter (Rasa NLU) Interpreter dịch tin nhắn của người dùng sang một đầu ra có cấu trúc bao gồm văn bản gốc, các ý định và các thực thể
2 Tracker dựa theo trạng thái cuộc hội thuộc và nhận dạng tin nhắn mới
3 Đầu ra của Tracker sẽ được truyền tới Policy, nơi nhận những trạng thái hiện tại của Traker
4 Hành vi tiếp theo sẽ được lựa chọn bởi policy
5 Tracker thông báo hành vi được lựa chọn
6 Kết quả được trả về cho người dùng, sử dụng các đoạn văn đã được định nghĩa trước đó
Rasa cho phép người dùng cấu hình các thuật toán như phân tách từ, trích xuất đặc trưng, nhận diện thực thể và phân loại ý định để xây dựng mô hình nhận diện ngôn ngữ tự nhiên cho chatbot Để cải thiện mô hình, người dùng có thể tùy chỉnh các thành phần như phân tích thái độ, phân tích từ và kiểm tra ngữ pháp Nhóm phát triển dự định tạo hai thành phần tùy chỉnh cho hệ thống chatbot: phân tách từ tiếng Việt và trích xuất đặc trưng FastText, điều mà Rasa NLU không cung cấp sẵn.
Thuật toán phân đoạn từ (Word Segmentation) UndertheseaD
Underthesea là một bộ công cụ mã nguồn mở hỗ trợ nghiên cứu và phát triển xử lý ngôn ngữ tự nhiên tiếng Việt, ra mắt vào tháng 3 năm 2017 Bộ công cụ này được đánh giá là hoàn chỉnh, dễ cài đặt và sử dụng, tương tự như các sản phẩm nổi tiếng cho tiếng Anh như nltk, polyglot và spacy.
Underthesea áp dụng mô hình xác suất Conditional Random Fields (CRFs) cho bài toán phân đoạn từ CRFs là một phương pháp thống kê phân biệt, hiệu quả trong nhận dạng mẫu và học máy, cho phép dự đoán có cấu trúc Mô hình này tận dụng thông tin ngữ cảnh từ các nhãn trước đó, từ đó cải thiện độ chính xác trong dự đoán.
“Chàng trai 9X Quảng Trị khởi nghiệp từ nấm sò”
[“Chàng trai”, “9X”, “Quảng Trị”, “khởi nghiệp”, “từ”, “nấm”, “sò”]
“Chàng_trai 9X Quảng_Trị khởi_nghiệp từ nấm sò”
Hình 2-16 Minh hoạt thuật toán Phân đoạn từ (Word Segmentation) Underthesea
FastText Featurizer
fastText là một thư viện mã nguồn mở chuyên về phân loại và biểu diễn văn bản, hỗ trợ 157 ngôn ngữ với các véc tơ từ đã được huấn luyện trước Thư viện này sử dụng dữ liệu từ Common Crawl và Wikipedia để nâng cao khả năng đọc hiểu văn bản.
Khi làm việc với bài toán Machine Learning, việc thực hiện phép biến đổi dữ liệu là cần thiết để loại bỏ nhiễu và chuẩn hóa dữ liệu thô về cùng một định dạng, như vector hoặc ma trận Dữ liệu chuẩn hóa này phải giữ lại các thông tin đặc trưng (features) của dữ liệu gốc Mỗi bài toán yêu cầu thiết kế các phép biến đổi khác nhau để tạo ra các features phù hợp, quá trình này được gọi là Feature Extraction hay Feature Engineering.
FastText Featurizer là một công cụ featurizer dày đặc, cho phép tải các từ nhúng đã được huấn luyện trước của fastText Việc áp dụng FastText Featurizer cho ngôn ngữ tiếng Việt không chỉ cải thiện khả năng đọc hiểu của hệ thống chatbot mà còn giúp chuyển đổi các từ đã được phân đoạn thành các vector tương thích với các mô hình khác.
Recommendation Algorithm
YouTube và TikTok đều sử dụng hệ thống gợi ý tự động để cung cấp nội dung phù hợp với sở thích của người dùng YouTube tự động chuyển đến các video liên quan, trong khi TikTok hiển thị những nội dung hấp dẫn, giúp người dùng khám phá những sản phẩm và clip mà họ có khả năng thích.
Để nâng cao hiệu quả marketing và cải thiện trải nghiệm người dùng, việc hướng đúng nội dung tới đối tượng là rất quan trọng Các ứng dụng hiện nay thường sử dụng các thuật toán Machine Learning, được gọi là Hệ thống gợi ý (Recommendation Systems), để tối ưu hóa quá trình này.
Recommendation Systems are a significant area of Machine Learning that has emerged more recently than Classification, primarily due to the internet's rapid growth over the past 10 to 15 years The two main components of Recommendation Systems are users and items, where users represent the individuals interacting with the system and items refer to the products being offered The primary objective of Recommender Systems is to predict a user's interest level in a specific item, enabling the development of tailored recommendation strategies.
So sánh cửa hàng thực và cửa hàng điện tử, chúng ta nhận thấy sự khác biệt quan trọng trong việc lựa chọn sản phẩm để quảng bá Cửa hàng thực thường giới hạn về không gian trưng bày, trong khi cửa hàng điện tử có khả năng giới thiệu đa dạng sản phẩm hơn Bên cạnh đó, cửa hàng điện tử cho phép cập nhật thông tin và khuyến mãi nhanh chóng, thu hút khách hàng hiệu quả hơn Cuối cùng, sự tiện lợi của việc mua sắm trực tuyến giúp khách hàng dễ dàng tiếp cận và lựa chọn sản phẩm phù hợp với nhu cầu của họ.
Nguyên lý Pareto, hay quy tắc 20/80, cho thấy rằng phần lớn kết quả thường đến từ một phần nhỏ nguyên nhân Ví dụ, trong ngôn ngữ hàng ngày, chỉ một số ít từ trong từ điển được sử dụng thường xuyên Tương tự, phần lớn tài sản trên thế giới thuộc về một số ít người Trong lĩnh vực thương mại, những sản phẩm bán chạy nhất cũng chỉ chiếm một tỷ lệ nhỏ trong tổng số sản phẩm.
Các cửa hàng thực phẩm thường có hai khu vực chính: khu trưng bày và kho Để tăng doanh thu, các sản phẩm phổ biến thường được trưng bày ở vị trí dễ thấy, trong khi những sản phẩm ít phổ biến hơn được cất trong kho Tuy nhiên, cách tiếp cận này có nhược điểm, vì sản phẩm được trưng bày có thể không phù hợp với nhu cầu cụ thể của từng khách hàng Điều này dẫn đến việc khách hàng có thể không tìm thấy món hàng họ cần, dù sản phẩm đó có sẵn trong cửa hàng Hơn nữa, do không gian hạn chế, cửa hàng không thể trưng bày tất cả các sản phẩm, chỉ có thể giới thiệu một số lượng nhỏ cho mỗi loại.
Theo hiện tượng đuôi dài, 80% doanh thu của cửa hàng thường đến từ 20% sản phẩm phổ biến nhất Khi sắp xếp các sản phẩm theo doanh số từ cao đến thấp, ta nhận thấy rằng một số ít sản phẩm tạo ra phần lớn doanh thu, trong khi một danh sách dài các sản phẩm còn lại chỉ đóng góp một lượng nhỏ.
2.6.1.2 Hai nhóm chính của Recommendation Systems
Hệ thống dựa trên nội dung đánh giá các đặc tính của các mục được gợi ý Chẳng hạn, nếu một người dùng thường xuyên xem các bộ phim hình sự, hệ thống sẽ gợi ý cho họ những bộ phim tương tự trong cơ sở dữ liệu, như phim "Người phán xử" Phương pháp này yêu cầu phân loại các mục thành từng nhóm hoặc xác định các đặc trưng của từng mục Tuy nhiên, một số mục không có nhóm cụ thể, và việc xác định nhóm hoặc đặc trưng của chúng đôi khi có thể gặp khó khăn.
Hệ thống gợi ý dựa trên phương pháp collaborative filtering hoạt động bằng cách phân tích sự tương quan giữa các người dùng và/hoặc các mục Cụ thể, một mục sẽ được gợi ý cho người dùng dựa trên hành vi của những người dùng tương tự Chẳng hạn, nếu người dùng A, B, và C đều yêu thích các bài hát của Noo Phước Thịnh, và người dùng B, C cũng thích Bích Phương, hệ thống có thể suy luận rằng người dùng A có khả năng cũng sẽ thích Bích Phương, từ đó gợi ý các bài hát của ca sĩ này cho A.
Trong bài toán Trendbot này, thuật toán được sử dụng chủ yếu là Collaborative filtering
2.6.2.1 Ví dụ về Utility matrix
As previously mentioned, there are two primary entities in Recommendation Systems: users and items Each user exhibits a varying degree of preference for each item, influencing their recommendations.
Mức độ quan tâm của người dùng đối với từng mặt hàng được gán giá trị cho mỗi cặp user-item, được gọi là rating Rating thể hiện sự đánh giá của người dùng về mặt hàng và tạo thành một ma trận được gọi là utility matrix, bao gồm cả những giá trị chưa biết cần được dự đoán.
Hình 2-18 Ví dụ về Utility Matrix
Trong ví dụ này, có 6 người dùng A, B, C, D, E, F và 5 bài hát, với các ô màu xanh thể hiện đánh giá từ 0 (không thích) đến 5 (rất thích) Các ô màu xám có dấu '?' là những ô chưa có dữ liệu Nhiệm vụ của hệ thống gợi ý (Recommendation Systems) là dự đoán giá trị cho các ô màu xám, từ đó cung cấp gợi ý cho người dùng Do đó, hệ thống gợi ý cũng thường được xem như một bài toán hoàn thiện ma trận (Matrix Completion).
Trong ví dụ đơn giản này, có hai thể loại nhạc rõ ràng: ba bài đầu tiên thuộc thể loại Bolero và hai bài sau là nhạc Thiếu nhi Dựa trên dữ liệu này, có thể suy luận rằng A và B ưa thích nhạc Bolero, trong khi C, D, E và F lại thích nhạc Thiếu nhi Do đó, một hệ thống gợi ý hiệu quả nên đề xuất bài "Cỏ úa" cho B, "Vùng lá me bay" cho A, và "Em yêu trường em" cho C.
D, E, F Giả sử chỉ có hai thể loại nhạc này, khi có một bài hát mới, ta chỉ cần phân lớp nó vào thể loại nào, từ đó đưa ra gợi ý với từng người dùng
Trong hệ thống có nhiều người dùng và mặt hàng, thường chỉ một số ít người dùng đánh giá các mặt hàng, thậm chí có những người không đánh giá bất kỳ mặt hàng nào Đối với những người dùng này, cách hiệu quả nhất là gợi ý các mặt hàng phổ biến nhất Do đó, ma trận tiện ích thường chứa nhiều ô màu xám, trong khi số lượng ô đã được điền rất nhỏ.
Messenger Webhook
Để chatbot thực sự có ý nghĩa, nó cần được tích hợp vào một giao diện người dùng (FrontEnd) như webUI, Facebook, Slack, Đối với dự án này, chúng tôi đã lựa chọn sử dụng messenger webhook làm công cụ triển khai chatbot, giúp mang lại trải nghiệm tương tác tốt hơn cho người dùng.
Webhook cho phép ứng dụng nhận thông báo HTTP theo thời gian thực về các thay đổi trong Meta Social Graph Chẳng hạn, khi người dùng gửi tin nhắn qua Messenger, Webhook sẽ gửi thông báo ngay lập tức Điều này giúp ứng dụng theo dõi các thay đổi trong nhắn tin mà không gặp phải giới hạn tốc độ khi truy vấn các điểm cuối của nền tảng Messenger.
Phân tích yêu cầu
Sơ đồ usecase
Hình 3-1 Sơ đồ usecase
Đặc tả usecase
3.2.1 Usecase giao tiếp cơ bản
Mô tả usecase giao tiếp cơ bản
Mô tả Thực thi các hành vi giao tiếp cơ bản như chào hỏi, tạm biệt, chức năng chatbot, khen, chê, … Luồng sự kiện
1 Người dùng đưa vào các thông tin liên quan đến chào hỏi, tạm biệt, hỏi về chức năng, khen, chê, … với chatbot
2 Chatbot phản hồi các câu trả lời được định nghĩa trước
1 Nếu chatbot chưa hiểu được ý người dùng, chatbot xin lỗi vì khả năng đọc hiểu chưa đủ
Không Điều kiện sau Không
Bảng 3-1 Usecase giao tiếp cơ bản
3.2.2 Usecase theo dõi xu hướng chung trên nền tảng TikTok
Mô tả usecase theo dõi xu hướng chung trên TikTok
Mô tả Cuộc hội thoại liên quan đến việc tìm kiếm các xu hướng chung mới nhất trên nền tảng TikTok Luồng sự kiện
1 Người dùng hỏi về các xu hướng trên nền tảng TikTok
2 Chatbot thực hiện hành vi thu thập dữ liệu thông qua API từ bên thứ ba như TikTok API, Rapid API
3 Đọc dữ liệu và chuyển đổi dữ liệu về các thông tin cần thiết
4 Trả lời cho người dùng dưới dạng các đường dẫn và thông tin của xu hướng
1 Nếu chatbot chưa hiểu được ý người dùng, chatbot xin lỗi vì khả năng đọc hiểu chưa đủ
Không Điều kiện sau Không
Bảng 3-2 Usecase theo dõi xu hướng chung trên nền tảng TikTok
3.2.3 Usecase theo dõi xu hướng theo từ khóa trên TikTok
Mô tả usecase theo dõi xu hướng theo từ khóa trên TikTok
Mô tả Cuộc hội thoại liên quan đến việc tìm kiếm các xu hướng theo từ khóa trên nền tảng TikTok Luồng sự kiện
1 Người dùng hỏi về các xu hướng theo từ khóa trên nền tảng TikTok
2 Chatbot hỏi người dùng về từ khóa mà người dùng muốn tìm kiếm
3 Chatbot thực hiện hành vi thu thập dữ liệu thông qua API từ bên thứ ba như TikTok API, Rapid API
4 Đọc dữ liệu và chuyển đổi dữ liệu về các thông tin cần thiết
5 Trả lời cho người dùng dưới dạng các đường dẫn và thông tin của xu hướng, có thể có các hình ảnh đại diện cho xu hướng
1 Nếu chatbot chưa hiểu được ý người dùng, chatbot xin lỗi vì khả năng đọc hiểu chưa đủ
Người dùng cần cung cấp từ khóa cần tìm kiếm Điều kiện sau Không
Bảng 3-3 Usecase theo dõi xu hướng theo từ khóa trên TikTok
3.2.4 Usecase theo dõi xu hướng theo thể loại trên TikTok
Mô tả usecase theo dõi xu hướng theo thể loại trên TikTok
Mô tả Cuộc hội thoại liên quan đến việc tìm kiếm các xu hướng theo thể loại trên nền tảng TikTok Luồng sự kiện
1 Người dùng hỏi về các xu hướng theo thể loại trên nền tảng TikTok
2 Chatbot hỏi người dùng về thể loại mà người dùng muốn tìm kiếm
3 Chatbot thực hiện hành vi thu thập dữ liệu thông qua API từ bên thứ ba như TikTok API, Rapid API
4 Đọc dữ liệu và chuyển đổi dữ liệu về các thông tin cần thiết
5 Trả lời cho người dùng dưới dạng các đường dẫn và thông tin của xu hướng, có thể có các hình ảnh đại diện cho xu hướng
1 Nếu chatbot chưa hiểu được ý người dùng, chatbot xin lỗi vì khả năng đọc hiểu chưa đủ
Người dùng cần cung cấp từ khóa cần tìm kiếm Điều kiện sau Không
Bảng 3-4 Usecase theo dõi xu hướng theo thể loại trên TikTok
3.2.5 Usecase theo dõi xu hướng chung trên nền tảng Youtube
Mô tả usecase theo dõi xu hướng chung trên Youtube
Mô tả Cuộc hội thoại liên quan đến việc tìm kiếm các xu hướng chung mới nhất trên nền tảng Youtube Luồng sự kiện
1 Người dùng hỏi về các xu hướng trên nền tảng Youtube
2 Chatbot thực hiện hành vi thu thập dữ liệu thông qua API từ bên thứ ba như Youtube API
3 Đọc dữ liệu và chuyển đổi dữ liệu về các thông tin cần thiết
4 Trả lời cho người dùng dưới dạng các đường dẫn và thông tin của xu hướng
1 Nếu chatbot chưa hiểu được ý người dùng, chatbot xin lỗi vì khả năng đọc hiểu chưa đủ
Bảng 3-5 Usecase theo dõi xu hướng chung trên nền tảng Youtube
3.2.6 Usecase theo dõi xu hướng theo từ khóa trên Youtube
Mô tả usecase theo dõi xu hướng theo từ khóa trên Youtube
Mô tả Cuộc hội thoại liên quan đến việc tìm kiếm các xu hướng theo từ khóa trên nền tảng Youtube Luồng sự kiện
1 Người dùng hỏi về các xu hướng theo từ khóa trên nền tảng TikTok
2 Chatbot hỏi người dùng về từ khóa mà người dùng muốn tìm kiếm
3 Chatbot thực hiện hành vi thu thập dữ liệu thông qua API từ bên thứ ba như Youtube API
4 Đọc dữ liệu và chuyển đổi dữ liệu về các thông tin cần thiết
5 Trả lời cho người dùng dưới dạng các đường dẫn và thông tin của xu hướng, có thể có các hình ảnh đại diện cho xu hướng
1 Nếu chatbot chưa hiểu được ý người dùng, chatbot xin lỗi vì khả năng đọc hiểu chưa đủ
Người dùng cần cung cấp từ khóa cần tìm kiếm Điều kiện sau Không
Bảng 3-6 Usecase theo dõi xu hướng theo từ khóa trên Youtube
3.2.7 Usecase theo dõi xu hướng theo thể loại trên Youtube
Mô tả usecase theo dõi xu hướng theo thể loại trên Youtube
Mô tả Cuộc hội thoại liên quan đến việc tìm kiếm các xu hướng theo thể loại trên nền tảng Youtube Luồng sự kiện
1 Người dùng hỏi về các xu hướng theo thể loại trên nền tảng Youtube
2 Chatbot hỏi người dùng về từ khóa mà người dùng muốn tìm kiếm
3 Chatbot thực hiện hành vi thu thập dữ liệu thông qua API từ bên thứ ba như Youtube API
4 Đọc dữ liệu và chuyển đổi dữ liệu về các thông tin cần thiết
5 Trả lời cho người dùng dưới dạng các đường dẫn và thông tin của xu hướng, có thể có các hình ảnh đại diện cho xu hướng
1 Nếu chatbot chưa hiểu được ý người dùng, chatbot xin lỗi vì khả năng đọc hiểu chưa đủ
Người dùng cần cung cấp từ khóa cần tìm kiếm Điều kiện sau Không
Bảng 3-7 Usecase theo dõi xu hướng theo thể loại trên Youtube
Thiết kế hệ thống
Thiết kế kiến trúc hệ thống
Hình 4-1 Kiến trúc hệ thống
Hệ thống được chia mô hình 3 lớp với một số điều chỉnh được mô tả như sau:
Tầng giao diện người dùng (Presentation Layer) trên nền tảng Facebook Messenger cho phép người dùng tương tác hiệu quả với hệ thống chatbot Tầng này không chỉ kết nối trực tiếp với server mà còn cung cấp một số tính năng nhằm nâng cao trải nghiệm người dùng trên Facebook Messenger.
Tầng xử lý logic (Business Logic) là phần quan trọng của hệ thống, bao gồm Rasa NLU và Rasa Core, có chức năng xử lý ngôn ngữ tự nhiên và các usecase đã được định nghĩa trước Tầng này đóng vai trò trung tâm trong ứng dụng và hoạt động độc lập với các tầng khác.
Tầng xử lý truy vấn dữ liệu (Data Access Layer) đóng vai trò quan trọng trong việc xử lý dữ liệu cho hệ thống gợi ý người dùng, đồng thời tương tác hiệu quả với các API bên thứ ba như YouTube.
API, bao gồm cả TikTok API, có chức năng truy xuất dữ liệu từ các nguồn bên thứ ba và cơ sở dữ liệu cục bộ, sau đó chuyển đổi dữ liệu thành định dạng phù hợp để gửi trả cho tầng xử lý logic.
STT Tên thành phần Mô tả
Khung trò chuyện Messenger là hệ thống chính cho phép người dùng tương tác với chatbot Người dùng có thể gửi tin nhắn qua khung trò chuyện, và chatbot sẽ phản hồi lại ngay trong cùng khung đó.
2 Webhook Đây là hệ thống quản lý thông báo sự kiện giữa client-side và server-side
3 Máy chủ hệ thống (Server) Đây là bộ phận xử lý yêu cầu của người dùng, được chạy trên một máy chủ riêng biệt
4 Normal Conservation Service Đây là bộ phận của hệ thống xử lý các cuộc hội thoại đơn giản
5 Trending Youtube Service Đây là bộ phận xử lý cuộc hoại thoại liên quan đến trending trên nền tảng Youtube và truy cập đến phần API bên thứ ba
6 Trending TikTok Service Đây là bộ phận xử lý cuộc hội thoại liên quan đến trending trên nền tảng TikTok và truy cập đến phần API bên thứ ba
7 Recommendation Service Đây là phần của hệ thống nhằm xử lý gợi khuyến nghị ý cho người dùng
8 API bên thứ 3 Bao gồm các API bên thứ 3 cung cấp cho
Chatbot các thông tin để xây dựng phản hồi cho người dùng ví dụ Youtube API, TikTok API, …
9 Rasa NLU và Rasa Core Framework hỗ trợ xử lý ngôn ngữ tự nhiên và điều hướng các hành động của hệ thống chatbot
Bảng 4-1 Mô tả kiến trúc hệ thống
Thiết kế luồng xử lý
4.2.1 Luồng xử lý chức năng tương tác với Chatbot
Hình 4-2 Luồng xử lý chức năng tương tác với Chatbot
4.2.2 Luồng xử lý truy vấn top xu hướng trên Youtube
Hình 4-3 Luồng xử lý truy vấn top xu hướng trên nền tảng Youtube
4.2.3 Luồng xử lý truy vấn top xu hướng trên TikTok
Hình 4-4 Luồng xử lý truy vấn top xu hướng trên nền tảng TikTok
4.2.4 Luồng xử lý truy vấn xu hướng theo thể loại trên TikTok
Hình 4-5 Luồng xử lý truy vấn xu hướng theo thể loại trên nền tảng TikTok
4.2.5 Luồng xử lý truy vấn xu hướng theo thể loại trên Youtube
Hình 4-6 Luồng xử lý truy vấn xu hướng theo thể loại trên nền targ Youtube
4.2.6 Luồng xử lý truy vấn xu hướng theo từ khóa
Hình 4-7 Luồng xử lý truy vấn xu hướng theo từ khóa
4.2.7 Luồng xử lý chức năng gợi ý xu hướng cho người dùng
Hình 4-8 Luồng xử lý chức năng gợi ý xu hướng người dùng
Kết quả dự án
Giới thiệu sản phẩm
Sau 4 tháng phát triển, nhóm đã hoàn thành ứng dụng TrendBot, một hệ thống chatbot theo dõi xu hướng trên mạng xã hội Facebook Messenger Ứng dụng này cung cấp các tính năng chính hỗ trợ người dùng trong việc nắm bắt thông tin xu hướng một cách hiệu quả.
• Giao tiếp cơ bản như chào hỏi, khen, chê
• Chức năng theo dõi xu hướng trên nền tảng TikTok
• Chức năng theo dõi xu hướng trên nền tảng Youtube
• Chức năng khuyến nghị xu hướng cho người dùng
Từ quá trình làm đồ án, nhóm phát triển đã rút ra được nhiều kinh nghiệm và kiến thức:
• Kinh nghiệm làm việc nhóm
• Kinh nghiệm tìm hiểu về thuật toán xu hướng, gợi ý người dùng trên các nền tảng mạng xã hội
• Kinh nghiệm tìm hiểu về bài toán Machine Learning/Deep Learning
• Kinh nghiệm sử dụng mạng nơ ron trong bài toán xử lý ngôn ngữ tự nhiên
• Kinh nghiệm xây dựng hệ thống Chatbot với Rasa
Môi trường triển khai
Môi trường Backend được viết bằng Python 3.7 kết hợp Rasa framework
Môi trường Frontend được triển khai trên Facebook Messenger
Chức năng sản phẩm
Chức năng chính của TrendBot là giúp người dùng giao tiếp với hệ thống chatbot qua Facebook Messenger, cung cấp các tính năng cơ bản để nâng cao trải nghiệm tương tác.
• Theo dõi xu hướng mới nhất trên nền tảng TikTok
• Theo dõi xu hướng mới nhất trên nền tảng Youtube
• Theo dõi xu hướng theo thể loại trên nền tảng TikTok
• Theo dõi xu hướng theo thể loại trên nền tảng Youtube
• Theo dõi xu hướng theo từ khóa trên nền tảng TikTok
• Theo dõi xu hướng theo từ khóa trên nền tảng Youtube
• Gợi ý xu hướng cho người dùng
Đánh giá mức độ hoàn thiện
UC Tên ca sử dụng Trạng thái Độ ưu tiên
Module 1: Hệ thống xác thực người dùng
1-1 Đọc thông tin user facebook Hoàn thành Cao
2-1 Gửi tin nhắn Hoàn thành Cao
2-2 Gửi tin nhắn chữ Hoàn thành Cao
2-3 Gửi tin nhắn kèm hình ảnh, nút nhấn
2-4 Nhận tin nhắn Hoàn thành Cao
2-5 Nhận tin nhắn thông qua nút nhấn Hoàn thành Trung binh 2-6 Phản hồi tin nhắn chưa hiểu Hoàn thành Cao
2-7 Gợi ý thông tin về xu hướng Hoàn thành Trung bình Module 3: Truy vấn thông tin
3-1 Truy vấn thông tin xu hướng trên nền tảng TikTok
3-2 Truy vấn thông tin xu hướng trên nền tảng Youtube
3-3 Truy vấn thông tin theo từ khóa trên nền tảng TikTok
3-4 Truy vấn thông tin theo từ khóa trên nền tảng Youtube
3-5 Truy vấn thông tin theo thể loại trên nền tảng TikTok
3-6 Truy vấn thông tin theo thể loại trên nền tảng Youtube
Module 4: Hệ thống quản lý thông báo
4-1 Đăng ký thông báo mới Hoàn thành Trung bình
4-2 Gửi thông báo Hoàn thành Trung bình
4-3 Nhận thông báo Hoàn thành Trung bình
54 4-4 Hủy đăng ký nhận thông báo Chưa hoàn thành Thấp
Bảng 5-1 Đánh giá mức độ hoàn thiện chức năng