một hệ thống chatbot có khả năng hỗ trợ tư vấn thông tin học vụ cho sinh viênbằng cách sử dụng Framework Rasa để hỗ trợ xây dựng hệ thống dự đoán xácđịnh các ý định của người dùng và đưa
CƠ SỞ LÝ THUYẾT
Xử lí ngôn ngữ tự nhiên
Xử lý ngôn ngữ tự nhiên (NLP) là một lĩnh vực của trí tuệ nhân tạo, chuyên nghiên cứu và phát triển các ứng dụng liên quan đến ngôn ngữ con người Đây được coi là một trong những thách thức lớn nhất trong trí tuệ nhân tạo, vì nó đòi hỏi khả năng hiểu và diễn giải ý nghĩa của ngôn ngữ, công cụ tối ưu cho tư duy và giao tiếp của con người.
Hình 2.1: Các bước Tiền xử lý dữ liệu
Loại bỏ dấu câu và noise trong văn bản, chủ yếu là các thẻ HTML và đoạn code JavaScript, giúp làm sạch dữ liệu Việc này sẽ nâng cao khả năng xác định ý định người dùng của chatbot.
Hình 2.2: Loại bỏ các ký tự gây nhiễu (noise filter)
Khi thu thập dữ liệu từ web, các ký tự gây nhiễu thường xuất hiện dưới dạng thẻ HTML hoặc đoạn mã JavaScript Ngoài ra, những ký tự vô nghĩa như ($#^%,.;’”! ) cũng có thể được coi là gây nhiễu trong quá trình này.
Quá trình tách từ trong tiếng Việt bao gồm việc xác định các loại từ như từ đơn, từ ghép, từ dừng và từ không có nghĩa, cùng với việc nhận diện các từ sai cú pháp và từ nối Mặc dù đối với con người, việc này khá đơn giản, nhưng đối với máy tính, đây là một thách thức phức tạp Trong văn bản tiếng Việt, dấu cách không được sử dụng để phân tách từ mà chỉ nhằm phân tách các âm tiết Do đó, tách từ (word segmentation) là một trong những bài toán cơ bản và quan trọng nhất trong xử lý ngôn ngữ tiếng Việt.
Văn bản tiếng Việt được phân cách giữa các âm tiết thay vì giữa các từ, dẫn đến một từ có thể bao gồm một, hai hoặc nhiều âm tiết Sự đa dạng trong cách phân chia âm tiết thành từ có thể gây nhầm lẫn, và quá trình này được gọi là bài toán tách từ Chẳng hạn, từ “đất nước” bao gồm hai âm tiết là “đất” và “nước”.
2 âm tiết này đều có nghĩa riêng khi đứng độc lập, nhưng khi ghép lại sẽ mang
Bài toán tách từ đóng vai trò quan trọng trong các ứng dụng xử lý ngôn ngữ tự nhiên, như phân loại văn bản, tóm tắt văn bản và máy dịch tự động.
Một số phương pháp tách từ thường gặp:
•Phương pháp ghép cực đại:
Phương pháp tách từ đầu tiên là việc xây dựng một từ điển và sử dụng các từ này để bao quát toàn bộ câu Mặc dù phương pháp này nhanh chóng, nhưng nó có nhược điểm là độ chính xác thấp và chỉ xử lý được những từ có trong từ điển.
•Phương pháp đồ thị hóa:
Mỗi âm tiết trong từ điển được xem như một đỉnh, và các đỉnh này sẽ được tính toán dựa trên tập dữ liệu huấn luyện Ví dụ, tần suất xuất hiện cạnh nhau giúp đánh giá khả năng liên kết giữa các từ loại Mặc dù phương pháp này tỏ ra hiệu quả, nhưng vẫn chưa được đánh giá cao và đòi hỏi một nguồn dữ liệu lớn, gây ra thời gian chạy chương trình lâu.
Phương pháp PointWise khắc phục nhược điểm của các phương pháp trước đó bằng cách đánh giá các nhãn một cách độc lập, không dựa vào kết quả từ các nhãn trước Điều này cho phép PointWise sử dụng một từ điển vừa phải và dễ dàng xác định các từ mới không có trong từ điển, phù hợp với ngôn ngữ tiếng Việt Nhờ vào việc đánh giá độc lập các vị trí, các đặc trưng chỉ dựa trên thông tin văn bản xung quanh vị trí đó, PointWise có khả năng xử lý dữ liệu không đầy đủ Các đặc trưng cơ bản của phương pháp này bao gồm n-gram chủng loại của âm tiết, n-gram âm tiết và các đặc trưng từ điển.
Hình 2.3: Ví dụ phân tách từ theo từ loại
Kết quả sẽ được hiển thị dạng: Tôi và cô ấy là những người bạn tốt
Chuyển đổi văn bản từ các định dạng không đồng nhất sang một định dạng thống nhất là rất quan trọng Việc này không chỉ giúp tối ưu hóa bộ nhớ lưu trữ mà còn đảm bảo tính chính xác của thông tin Ví dụ, việc chuẩn hóa các viết tắt như t.c.d.t và tcdt thành tcđt sẽ giúp dễ dàng nhận diện và sử dụng, trong đó "tcđt" đại diện cho "Tín chỉ đào tạo".
Trong từ điển của chúng ta, training data không bao gồm t.c.d.t và tc.dt, mà chỉ có txcr Do đó, việc chuyển đổi các từ như t.c.d.t thành tcđt là cần thiết để đảm bảo độ chính xác trong các bước xử lý tiếp theo như phân loại văn bản và phát hiện ý định.
StopWords là những từ thường gặp trong ngôn ngữ tự nhiên nhưng không mang nhiều ý nghĩa, ví dụ như "để", "này", "kia" trong tiếng Việt và "is", "that", "this" trong tiếng Anh Việc loại bỏ StopWords có thể thực hiện qua nhiều phương pháp, trong đó có hai cách chính được áp dụng rộng rãi.
Sử dụng từ điển để lọc văn bản là phương pháp đơn giản nhất; chúng ta sẽ loại bỏ các từ không cần thiết có trong danh sách StopWords như: cậu, của, cứ, dù, nọ, phóc, này, có, kia, để, bỗng dưng, bớ, bởi,
Hình 2.4: Loại bỏ stopword bằng cách dùng từ điển
Dựa trên tần suất xuất hiện của từ, chúng ta sẽ đếm số lần mỗi từ xuất hiện trong dữ liệu Sau đó, chúng ta sẽ loại bỏ những từ có tần suất xuất hiện cao hoặc thấp.
Hình 2.5: Danh sách 50 từ xuất hiện nhiều lần nhất trong tiếng anh
Danh sách các từ stopwords trong tiếng việt:
Bảng 2.1: Danh sách stopwords trong tiếng việt
2.1.5 Vectơ hóa văn bản 10 2.2 Xác định ý định và các thực thể của câu hỏi 14 2.2.1 Xác định ý định của câu hỏi 14
Xác định các thực thể từ nội dung (Trích xuất đặc trưng) 16 2.3 Tổng
Nhận diện thực thể tên (NER) là quá trình xác định và phân loại các đối tượng trong văn bản như tên người, tổ chức, địa danh và thời gian, cung cấp thông tin hữu ích cho các ứng dụng xử lý ngôn ngữ tự nhiên như hệ thống hỏi đáp tự động và máy tìm kiếm NER đóng vai trò quan trọng trong hệ thống chatbot, giúp trích xuất thông tin từ câu hỏi và lời nhắn của người dùng, từ đó lưu trữ và thực hiện các hành động phù hợp với ý định của họ Phương pháp đầu tiên áp dụng trong nghiên cứu là sử dụng kỹ thuật trích xuất đặc trưng bằng tay với thuật toán CRF, tuy nhiên, việc gán nhãn thủ công cho tất cả thực thể là một thách thức lớn Để khắc phục, tôi đã kết hợp thư viện Ducklink của Facebook và thư viện Underthesea NER để nâng cao khả năng trích xuất thông tin trong hệ thống chatbot hỗ trợ cố vấn học tập ảo.
•Địa chỉ liên lạc (Contact)
Bảng 2.2: Danh sách cách thực thể có thể được trích xuất trong thư viện Facebook
Dimension Example input Example value output
AmountOfMoney "42€" {"value":42,"type":"value","unit":"
CreditCardNumber "4111-1111-1111-1111" {"value":"4111111111111111","issu er ":"visa"}
Distance "6 miles" {"value":6,"type":"value","unit":" mile "}
Duration "3 mins" {"value":3,"minute":3,"unit":"minu te",
"normalized":{"value":180,"unit":"s ec ond"}}
Email "duckling-team@fb.com" {"value":"duckling-team@fb.com"} Numeral "eighty eight" {"value":88,"type":"value"}
Ordinal "33rd" {"value":33,"type":"value"}
Quantity "3 cups of sugar" {"value":3,"type":"value","product
Temperature "80F" {"value":80,"type":"value","unit":"f ahr enheit"}
Time "today at 9am" {"values":[{"value":"2016-12-
Url "https://api.wit.ai/mess age ?q=hi"
{"value":"https://api.wit.ai/messag e?q =hi","domain":"api.wit.ai"}
Volume "4 gallons" {"value":4,"type":"value","unit":"g allo n"}
Dimension Example input Example value output
AmountOfMoney "42€" {"value":42,"type":"value","unit":"
CreditCardNumber "4111-1111-1111-1111" {"value":"4111111111111111","issu er ":"visa"}
Distance "6 miles" {"value":6,"type":"value","unit":" mile "}
Duration "3 mins" {"value":3,"minute":3,"unit":"minu te",
"normalized":{"value":180,"unit":"s ec ond"}}
Có 4 bước tiến hành trích xuất đặc trưng cơ bản như sau:
Bước 1: Tách từ là quá trình phân tách nội dung lời nhắn của người dùng thành danh sách từ để thực hiện gán nhãn và phân loại ở các bước tiếp theo.
Em đang học ngành Hệ thống Thông tin, em muốn học thêm ngành hai thì có được phép hay không?
Kết quả sau khi tách từ:
Hình 2.11: Kết quả sau khi tách từ
Bước 2 trong quá trình xử lý ngôn ngữ tự nhiên là gán nhãn từ loại cho các từ đã được phân tách, bao gồm các loại như Danh từ, Động từ và Trợ từ Để thực hiện bước này, tôi sử dụng thư viện gán nhãn của Underthesea POS Tag Bảng 2.3 cung cấp mô tả chi tiết về dữ liệu trong bài toán gán nhãn từ loại.
Tag UTS UD C Tiếng anh Ý nghĩa Ví dụ
A A ADJ 1 Adjective Tính từ nhiều, hơn, khác, gần, lớn
Ab A 2 Tính từ mượn sexy, Peace, đờmi
B FW 1 Borrow Từ mượn karaoke, nilông, fax, oxy
Liên từ thì, nhưng, như, mà
Liên từ đẳng lập và, hay, hoặc, cùng
CH CH PUNCT 1,2 Chunk Dấu câu ,, , ", , “, ”
E E ADP 1,2 Adposition Giới từ của, trong, với, ở, cho,
Fw FW 2 Foreign Word Từ nước ngoài
FW FW 2 Foreign Word Từ nước ngoài photo, knock-out, chat
I I INTJ 1,2 Interjection Thán từ ơi, ạ, Ôi, à, Vâng
L L DET 1,2 Determiner Định từ những, các, mấy, mọi, một số
M M NUM 1,2 Numeral Số từ một, hai, ba, Một, triệu, 1
N N NOUN 1,2 Noun Danh từ người, khi, nhà, năm, ngày
Nb FW 2 Danh từ mượn tivi, két, casino, golf, bar
Nc Nc NOUN 1,2 Noun Category Danh từ chỉ loại con, cái, chiếc, ngôi
Ne Nc 2 bọn, bộ, đoàn, tụi
Ni Np 2 Danh từ kí hiệu
Np Np NOUN 1,2 Proper Noun Danh từ riêng
Ns Nc 2 ông, anh, người, chị,
Nu Nu NOUN 1,2 Noun Unit Danh từ đơn vị đồng, m, tuổi, ha
Ny Ny 1,2 Danh từ viết tắt
P P PROPN 1,2 Pronoun Đại từ này, tôi, đó, mình, đây
(Trạng từ) không, đã, cũng, lại
T T PART 1,2 Particle Trợ từ cả, ngay, chính, đến
V V VERB 1,2 Verb Động từ có, là, được, đi, làm
Vb V 2 Động từ mượn photo, knock-out, chat, bye
Vy Vy 1,2 Động từ viết tắt
X X 1,2 Không phân loại như vậy, làm sao, nhất là
Z Z 2 Yếu tố cấu tạo từ phó, viên, bất, siêu, tái, tổng
Kết quả sau khi gán nhãn POS tag:
Hình 2.12: Kết quả sau khi gán nhãn POS Tag
Bước 3: Xác định vị trí của các từ trong một thực thể (chunking) là một phần quan trọng trong trích xuất thông tin Tập nhãn cho các từ trong câu thường được xây dựng theo mô hình BIO, với B đại diện cho “Beginning”, I cho “Inside” và O cho “Outside” Khi xác định được vị trí từ bắt đầu của một thực thể và các từ thuộc về nó, chúng ta có thể xác định vị trí của thực thể trong câu, từ đó hiểu rõ hơn về ngữ cảnh của từ trong câu.
•B_W: nhãn đánh dấu bắt đầu một từ với loại thực thể tương ứng.
•I_W: nhãn đánh dấu ở trong một từ với loại thực thể tương ứng.•
O: Là nhãn không thuộc thực thể nào.
Bảng 2.4: Mô tả dữ liệu bài toán Chunking [10]
Tag UTS C Tiếng anh Ý nghĩa Ví dụ
B-AP 1,2 Adjective Phrase Cụm tính từ
B-IP O 2 Cụm thán từ ơi, nhé, à, ạ
B-NP 1,2 Noun Phrase Cụm danh từ
B-PP 1,2 Prepositional Phrase Cụm giới từ của, trong, với, cho B-QP B-NP 1 Quantifier Phrase Cụm từ chỉ số lượng
B-VP 1,2 Verb Phrase Cụm động từ
Kết quả sau khi tiến hành chunking
Hình 2.13: Kết quả sau khi tiến hành chunking
Bước 4: Sử dụng mô hình đã được huấn luyện để dự đoán ý định của câu hỏi, xác định tên ý định và đánh giá độ chính xác của dự đoán.
19 của ý định là bao nhiêu phần trăm và xác định đúng tên của thực thể có vị trí xuất hiện kèm theo Kết quả đạt được như sau:
Hình 2.14: Kết quả sau khi xác định Thực thể có tên NER
Chatbot là một hệ thống giao tiếp giữa con người và máy móc theo một quy chuẩn cụ thể Thông tin được trao đổi trong chatbot có thể được diễn đạt qua ngôn ngữ nói, ngôn ngữ viết hoặc các ký hiệu.
Chatbot mang lại lợi ích lớn cho người dùng bằng cách tiết kiệm thời gian và chi phí trong các hệ thống chăm sóc khách hàng, nâng cao năng suất lao động và cải thiện chất lượng cuộc sống Hệ thống chatbot được phân loại thành nhiều loại chính, giúp đáp ứng nhu cầu đa dạng của người sử dụng.
•Chatbot giữa con người với con người;
•Chatbot giữa máy tính với máy tính;
•Chatbot giữa con người và máy tính.
Trong thời kỳ chuyển đổi số hiện nay, Chatbot không chỉ dựa vào kịch bản cố định mà còn được phát triển từ trí thông minh nhân tạo và máy học, cho phép chúng tự học và thích nghi với thực tế Nhiều nhà phân tích và công ty công nghệ hàng đầu như Alphabet, Microsoft, và IBM dự đoán rằng Chatbot sẽ chiếm ưu thế trong lĩnh vực dịch vụ khách hàng, đặc biệt trong bối cảnh khủng hoảng do dịch bệnh Covid-19.
Kiến trúc cơ bản của hệ thống chatbot bao gồm các thành phần thiết yếu như cơ sở dữ liệu, lớp ứng dụng, quyền truy cập vào các API và giao diện đồ họa người dùng.
Cơ sở dữ liệu là nơi lưu trữ thông tin và dữ liệu, trong khi tầng ứng dụng sử dụng các giao thức để trao đổi thông tin giữa các chương trình trên máy nguồn và máy đích, đóng vai trò xử lý yêu cầu từ các ứng dụng khác nhau Giao diện lập trình ứng dụng (API) cho phép các dịch vụ được tạo ra từ các chương trình khác, tạo điều kiện thuận lợi cho sự tương tác giữa các hệ thống máy tính.
Hình 2.15: Mô hình hệ thống chatbot [4]
Chatbot kịch bản (Scripted chatbot) là loại chatbot có hành vi được xác định rõ ràng bởi các tiêu chuẩn và quy luật Người dùng có thể thiết kế các trình tự cuộc trò chuyện theo nhu cầu sử dụng, phù hợp với các ngữ cảnh khác nhau, tại mỗi bước trong quá trình tương tác.
Chatbot thông minh là loại chatbot được phát triển dựa trên các kỹ thuật máy học, cho phép người dùng tương tác linh hoạt hơn Chúng có khả năng tiếp nhận đầu vào dưới nhiều hình thức khác nhau, bao gồm văn bản và giọng nói, cũng như các dạng đầu vào khác miễn là chúng có ý nghĩa.
2.4 Luồng hoạt động và xử lý của một hệ thống chatbot
Hình 2.16: Luồng hoạt động và xử lý của một hệ thống chatbot
Hình trên là mô hình về luồng hoạt động và xử lý của một hệ thống chatbot Với các thành phần hoạt động chính theo tuần tự như sau:
2.4.1 Thành phần Hiểu ngôn ngữ tự nhiên (NLU) Đây là thành phần quan trọng nhất của chatbot Việc một chatbot có thông minh hay không phần lớn là có xác định được chính xác ý định của người dùng muốn hỏi gì? Chức năng của thành phần này là trích xuất ra các thông tin hữu ích từ tin nhắn của người dùng gởi đến để các thành phần tiếp theo xử lý Các thông tin cần trích xuất như sau:
Chatbot sẽ phân loại câu hỏi của người dùng theo lĩnh vực cụ thể, như Y tế, Ngân hàng, hoặc Thương mại, nhằm cung cấp phản hồi chính xác Nếu chatbot chỉ được cấu hình cho một lĩnh vực duy nhất, bước phân loại này có thể được bỏ qua.
Phân loại ý định của người dùng (intent classification) là một bước quan trọng trong việc xác định mục đích của người dùng khi họ đặt câu hỏi, chẳng hạn như khi họ muốn tìm hiểu về quy định cảnh báo học vụ hoặc mức điểm nào dẫn đến việc bị cảnh báo học vụ.
Thành phần Quản lý hội thoại (DM) 26 2.4.3 Thành phần sinh ngôn ngữ (NLG) 28 2.5 Tổng quan về Framework Rasa 31 2.5.1 Giới thiệu 31 2.5.2 Các thành phần chính trong Rasa Framework 31 Chương 3 XÂY DỰNG HỆ THỐNG
Trong các cuộc trò chuyện dài giữa người và chatbot, việc ghi nhớ thông tin về ngữ cảnh và quản lý trạng thái hội thoại là rất quan trọng Quản lý hội thoại đảm bảo sự liên tục trong giao tiếp giữa người và máy Thành phần quản lý hội thoại nhận dữ liệu từ NLU, quản lý trạng thái và ngữ cảnh hội thoại, sau đó truyền đầu ra cho thành phần sinh ngôn ngữ (NLG).
Hình 2.22: Mô hình quản lý trạng thái và quyết định action trong hội thoại [2]
Trạng thái hội thoại (dialog state) được ghi nhận và sử dụng cùng với tập luật hội thoại (dialog policy) để xác định hành động tiếp theo cho câu trả lời của bot trong một kịch bản hội thoại Hành động (action) của bot chỉ phụ thuộc vào trạng thái (dialog state) trước đó.
Module quản lý dialogue trong chatbot đặt vé máy bay cần xác định thời điểm người dùng đã cung cấp đầy đủ thông tin cần thiết để tiến hành đặt vé.
Hiện nay, nhiều sản phẩm chatbot sử dụng mô hình máy trạng thái hữu hạn (FSA) và mô hình Frame-based (Slot Filling) để xử lý thông tin từ người dùng Đặc biệt, một số nghiên cứu mới đang áp dụng mô hình mạng nơ-ron nhân tạo (ANN) vào việc quản lý hội thoại, nhằm nâng cao khả năng thông minh cho chatbot.
2.4.2.1 Mô hình máy trạng thái hữu hạn FSA
Hình 2.23: Quản lý hội thoại theo mô hình máy trạng thái hữu hạn FSA [11]
Mô hình FSA là một phương pháp quản lý hội thoại đơn giản, thường được áp dụng trong hệ thống chăm sóc khách hàng, chẳng hạn như trong lĩnh vực viễn thông để giải quyết các vấn đề mạng chậm Chatbot sẽ yêu cầu khách hàng cung cấp thông tin như tên, số điện thoại, gói Internet đang sử dụng và tốc độ Internet thực tế Mô hình FSA bao gồm các trạng thái tương ứng với các câu hỏi của chatbot và các hành động dựa trên phản hồi của người dùng Ưu điểm lớn nhất của mô hình này là tính đơn giản và khả năng định hướng câu trả lời mong muốn từ người dùng Tuy nhiên, nó không phù hợp với các hệ thống chatbot phức tạp hoặc khi người dùng cung cấp nhiều thông tin khác nhau trong một cuộc hội thoại.
27 khi người dùng đồng thời cung cấp cả tên và số điện thoại, nếu chatbot tiếp tục hỏi số điện thoại, người dùng có thể cảm thấy khó chịu.
Mô hình Frame-based, còn được gọi là Form-based, là giải pháp hiệu quả cho những vấn đề mà mô hình FSA gặp phải Mô hình này sử dụng các khung (frame) đã được định sẵn để hướng dẫn cuộc hội thoại, trong đó mỗi khung chứa thông tin cần thiết (slot) và các câu hỏi mà hệ thống quản lý đối thoại sẽ đặt ra cho người dùng.
Mô hình này cho phép người dùng điền thông tin vào nhiều slot khác nhau trong frame Hình vẽ là một ví dụ về một frame cho chatbot ở trên.
Bảng 2.5: Frame cho chatbot hỏi thông tin khách hàng
Họ tên Xin quý khách cho biết họ tên
Số điện thoại Số điện thoại của quý khách là gì ạ?
Tên dịch vụ khách hàng đang sử dụng
Dịch vụ khách hàng đang sử dụng là loại dịch vụ nào ạ ?
Mức độ hài lòng Mức độ hài lòng của quý khách như thế nào ạ?
Mô hình quản lý dialogue dựa trên Frame-based sẽ đặt câu hỏi cho khách hàng và điền thông tin vào các slot dựa trên dữ liệu mà khách hàng cung cấp Hệ thống sẽ ghi nhớ các câu trả lời để không hỏi lại những thông tin đã có, ngay cả khi người dùng trả lời nhiều câu hỏi cùng lúc.
Trong các ứng dụng phức tạp, cuộc hội thoại có thể chứa nhiều frame khác nhau, đặt ra thách thức cho các nhà phát triển chatbot trong việc xác định thời điểm chuyển đổi giữa các frame Để quản lý việc này, một phương pháp phổ biến là định nghĩa các luật (production rule) dựa trên các yếu tố như câu hội thoại hoặc câu hỏi gần nhất từ người dùng.
2.4.3 Thành phần sinh ngôn ngữ (NLG)
NLG (Natural Language Generation) là công nghệ tạo ra câu trả lời cho chatbot, thông qua việc chuyển đổi các hành động trong quản lý hội thoại thành ngôn ngữ tự nhiên, nhằm cung cấp phản hồi cho người dùng một cách tự nhiên và dễ hiểu.
Hình 2.24:Ví dụ sinh ngôn ngữ dựa trên các dữ liệu [12]
Có các phương pháp ánh xạ hay dùng là: Template-Base, Plan-based, Class-base
Phương pháp ánh xạ câu trả lời này là dùng những câu mẫu trả lời của bot đã được định nghĩa từ trước để sinh câu trả lời.
Bảng 2.6: Phương pháp sinh ngôn ngữ dựa trên tập mẫu câu trả lời
The semantic frame for natural language confirmation includes various queries tailored to user preferences For instance, users can specify their desired area by asking, "Do you want somewhere in the $V?" or indicate their food preference with questions like, "Do you want a $V restaurant?" Additionally, users can combine both criteria by inquiring, "Do you want a $V restaurant in the $W?" This structured approach ensures clear communication and enhances user experience.
-Ưu điểm: đơn giản, kiểm soát dễ dàng Phù hợp cho các bài toán miền đóng.
Nhược điểm của việc định nghĩa các luật trong hệ thống là tốn thời gian và không mang lại tính tự nhiên cho câu trả lời Đối với những hệ thống lớn, việc kiểm soát các luật trở nên khó khăn, dẫn đến việc phát triển và duy trì hệ thống cũng gặp nhiều thách thức.
Hình 2.25: Phương pháp sinh ngôn ngữ Plan-based [13]
- Ưu điểm:Có thể mô hình hóa cấu trúc ngôn ngữ phức tạp
-Nhược điểm:Thiết kế nặng nề, đòi hỏi phải rõ miền kiến thức
Hình 2.26: Phương pháp sinh ngôn ngữ Class-based [13]
Phương pháp này cho phép bot học từ các câu trả lời đã được gán nhãn, giúp nó xác định các hành động và thông tin từ quản lý hội thoại Dựa trên tập dữ liệu đã được đào tạo, bot sẽ cung cấp câu trả lời phù hợp nhất với yêu cầu của người dùng.
-Ưu điểm:dễ dàng thực thi
-Nhược điểm:phụ thuộc vào dữ liệu trả lời đã được gán nhãn đào tạo trước đó.
Bên cạnh đó việc tính toán điểm số không hiệu quả cũng dân đến việc sinh câu trả lời sai.
2.5 Tổng quan về Framework Rasa
Rasa Framework là một nền tảng mã nguồn mở được phát triển bằng ngôn ngữ lập trình Python, nhằm hỗ trợ người mới bắt đầu trong việc xây dựng chatbot với khả năng tương tác hiệu quả và đáp ứng tốt nhu cầu của người dùng.
Hình 2.27: Sơ đồ hoạt động các thành phần của Rasa Framework
Rasa Framework được biết đến rộng rãi trong cộng đồng nhờ vào tính dễ tiếp cận của nó, đặc biệt là cho những người mới bắt đầu, kể cả những ai chưa có kiến thức về chatbot hay xử lý ngôn ngữ tự nhiên (NLP) Người dùng có thể tập trung vào việc xây dựng nội dung kịch bản và nghiệp vụ của chatbot mà không cần lo lắng về công nghệ phát triển.
Rasa hoạt động hiệu quả và mạnh mẽ trong việc xác định ý định người dùng và nhận diện đối tượng trong câu, ngay cả khi dữ liệu thu thập và cung cấp cho Rasa rất hạn chế.
Xây dựng Hệ thống chatbot hỗ trợ cố vấn học tập ảo 34 1 Thiết kế Tổng thể 34 2 Thiết kế database hệ thống Quản lý môn học 35
Hệ thống chatbot cố vấn học tập ảo sẽ tiếp nhận nhiều câu hỏi từ sinh viên thông qua khung chat widget, chủ yếu liên quan đến Quy chế học vụ Thách thức đặt ra là phải xác định rõ ý định của người dùng và trích xuất các thực thể từ câu hỏi mà họ gửi đến.
Mô hình hoạt động của Hệ thống được thiết kế tổng thể như sau:
Hình 3.1: Mô hình hoạt động của Hệ thống chatbot hỗ trợ cố vấn học tập ảo
Trong đó sẽ bao gồm các thành phần chính như sau:
Phần 1: Xử lý ngôn ngữ tự nhiên gồm Truy xuất thông tin (Retrieval process) và Sinh ngôn ngữ (Generative process): đây là thành phần quan trọng nhất trong hệ thống, sẽ được thiết lập dựa vào mã nguồn mở FrameworkRasa Với tính năng chính là xây dựng mô hình Xác định ý định của người dùng, trích xuất được các thông tin thực thể từ câu hỏi của người dùng và sinh được các câu trả lời tương ứng với ý định đã xác định được.
Phần 2: Thiết kế cơ sở dữ liệu và các API về Quy chế Học vụ: đây là thành phần nhằm nhiệm vụ tăng cường thêm thông tin tri thức để giúp chatbot có thể phản hồi lại các thông tin một cách chính xác và rõ ràng hơn, có khả năng tùy biến và thay đổi các thông số đáp ứng và tích hợp được vào các hệ thống khác như phần mềm Quản lý Đào tạo của một số Trường học Phần này sẽ được thiết lập dựa trên cơ sở dữ liệu MySQL, MongoDB và ngôn ngữ lập trình PHP, JavaScript.
Phần 3: Các chức năng Hỗ trợ cho Quản trị viên (Backend) và chức năng nhúng vào các trang web khác (Frontend): cho phép người Quản trị
Hệ thống có thể cấu hình thêm các câu hỏi, các kịch bản hội thoại một cách trực
Người dùng, đặc biệt là sinh viên, sẽ có khả năng tương tác với chatbot qua nhiều dạng phản hồi trực quan như văn bản, hình ảnh, danh sách hình ảnh cuộn, video và nút bấm Giao diện và chức năng của chatbot sẽ được xây dựng dựa trên thư viện mã nguồn mở BotFront.
3.1.2 Thiết kế database hệ thống Quản lý môn học
Hệ thống chatbot cần một cơ sở dữ liệu tri thức vững chắc để tìm kiếm và cung cấp thông tin hữu ích, từ đó hỗ trợ hiệu quả trong việc trả lời các câu hỏi của người dùng.
Hình 3.2: Mô hình quan hệ giữa các thực thể hệ thống Quản lý môn học
Hệ thống Quản lý môn học được phát triển nhằm tổ chức và quản lý dữ liệu liên quan đến các thông tin quan trọng như lĩnh vực, ngành, khối ngành, khối kiến thức, và khối kỹ năng Người dùng có thể dễ dàng tra cứu chương trình đào tạo, học phần, cũng như các quy định về học bổng và cách tính xếp hạng tốt nghiệp Để biết thêm chi tiết, xem [PHỤ LỤC 1: Thiết kế chi tiết database quản lý môn học].
3.1.3 Cấu trúc Hệ thống chatbot
Hình 3.3: Cấu trúc Hệ thống chatbot Cố vấn học tập
Hệ thống chatbot hỗ trợ cố vấn học tập ảo hoạt động dựa trên mô hình với đầu vào là câu hỏi từ người dùng và đầu ra là câu trả lời của chatbot Các thành phần bên trong hệ thống sẽ thực hiện các vai trò và nhiệm vụ khác nhau để cung cấp thông tin chính xác và nhanh chóng cho người dùng.
NLU có vai trò quan trọng trong việc tiền xử lý dữ liệu, vector hóa ngôn ngữ, phân loại ý định của người dùng và trích xuất thông tin Ví dụ, khi người dùng hỏi “em có mã hv M2522007, em muốn hỏi mỗi môn học mình được thi mấy lần ạ?”, hệ thống sẽ tiến hành tiền xử lý và vector hóa câu hỏi, sau đó đối chiếu với các tập dữ liệu training đã được gán nhãn, xác định ý định là “to_chuc_thi_cu”, tức là hỏi về quy định tổ chức thi cử theo Quy chế Học vụ Cuối cùng, hệ thống cũng trích xuất thông tin mã sinh viên của người dùng là “M2522007”.
DM xác định các hành động phù hợp dựa trên trạng thái và ngữ cảnh hội thoại, đồng thời kết nối với cơ sở dữ liệu để cung cấp thông tin cho NLG Trong ví dụ, chatbot nhận diện ngữ cảnh liên quan đến thông tin cảnh báo học vụ, nhưng cần thêm thông tin về môn học để đưa ra câu trả lời chính xác Nếu chatbot đã có đủ thông tin, nó sẽ truy xuất dữ liệu từ các API để thông báo cho người dùng về tình trạng cảnh báo học vụ.
NLG:mô hình sinh câu trả lời dựa vào dữ liệu từ thành phần DM theo các tập mẫu câu template đã được xây dựng trước.
3.1.4 Ứng dụng Rasa Framework xây dựng chatbot
Rasa Framework được sử dụng để phát triển chatbot trong Hệ thống hỗ trợ cố vấn học tập ảo Rasa cung cấp nhiều thư viện hỗ trợ các thuật toán cần thiết cho việc xây dựng chatbot hiệu quả.
Rasa là một thư viện mã nguồn mở mạnh mẽ, hỗ trợ tiếng Việt và cho phép tùy biến các hành động tùy chỉnh để kết nối với nhiều hệ thống khác nhau Với cộng đồng người dùng ngày càng phát triển, Rasa cung cấp hai phương pháp chính để xây dựng dữ liệu huấn luyện cho chatbot, mang lại hiệu quả cao trong việc phát triển ứng dụng.
Phân loại ý định người dùng bằng cách sử dụng các từ nhúng (word embedding) hoặc biểu diễn ngôn ngữ dưới dạng vector (word2vec) dựa trên các tập dữ liệu đã được lọc trước Những tập dữ liệu này có thể được cung cấp từ các nguồn như Spacy hoặc MITIE, giúp cải thiện độ chính xác trong việc hiểu và phân tích thông điệp người dùng.
Nhúng được giám sát (EmbeddingIntentClassifier) yêu cầu người dùng tự xây dựng dữ liệu từ đầu do không có dữ liệu đào tạo sẵn Phương pháp này đặc biệt hiệu quả cho các bài toán trong miền lĩnh vực đóng, giúp đảm bảo tính chính xác cao hơn và giảm thiểu dư thừa dữ liệu so với các phương pháp khác.
Để xây dựng chatbot hỗ trợ cố vấn học tập trong miền dữ liệu đóng, chỉ phục vụ cho các câu hỏi liên quan đến Quy chế Học vụ, không cần sử dụng tập dữ liệu được đào tạo từ trước Thay vào đó, cần tạo ra một tập dữ liệu training riêng biệt với các câu hỏi và câu trả lời phù hợp với Quy chế học vụ.
Cấu hình Pipeline Rasa được sử dụng để training cho chatbot:
Hình 3.4: Cấu hình Rasa Pipeline sử dụng trong Hệ thống
3.1.5 Xây dựng dữ liệu cho chatbot
Nguồn dữ liệu để xây dựng chatbot hỗ trợ cố vấn học tập sẽ được thu thập từ nhiều nguồn khác nhau, bao gồm Quyết định số 1813/QĐ-ĐHCT ngày 18/06/2021 về quy định công tác học vụ dành cho sinh viên đại học chính quy, thông tin từ trang web của Trường Đại học Cần Thơ, ý kiến từ sinh viên và dữ liệu về mã ngành, mã khoa được sưu tầm.
Một đoạn hội thoại là một nhóm các câu hỏi – đáp một cách liền mạnh giữa người và chatbot để giải quyết một vấn đề nào đó.
- Ví dụ đoạn hội thoại về thông tin cảnh báo học vụ (khung kịch bản cho ý định của người dùng hỏi về sinh viên chính quy):
Bảng 3.1: Khung kịch bản cuộc hội thoại về ý định Sinh viên chính quy
Xin chào, cho em hỏi thế nào là sinh viên chính quy?
3.1.5 Xây dựng dữ liệu cho chatbot 37 3.2 Huấn luyện mô hình 46 3.2.1 Thiết kế tổng thể 46
Training mô hình sử dụng Rasa Framework 46 3.3 Thực nghiệm 47 3.3.1 Môi trường thực nghiệm 47 3.3.2 Test thực nghiệm 48 3.4 Demo hệ thống 51 3.4.1 Miền giao diện
Nhập dữ liệu bao gồm 532 câu hỏi tương ứng với 69 ý định (intents), mỗi câu hỏi sẽ có ít nhất 3 biến thể câu hỏi và câu trả lời Dữ liệu được trích dẫn từ quy chế học vụ của Trường Đại học Cần Thơ Sau khi hoàn tất quá trình nhập liệu, sử dụng câu lệnh “rasa run train” để tạo mô hình huấn luyện.
Hình 3.14: Chạy câu lệnh train mô hình sử dụng Rasa Framework
Hệ thống chatbot hỗ trợ cố vấn học tập được phát triển trên nền tảng Server Centos 7, sử dụng Rasa Framework cho phần lõi Giao diện quản trị được xây dựng bằng BotFront, trong khi giao diện người dùng sử dụng Bootstrap và PHP Dữ liệu được lưu trữ trong các cơ sở dữ liệu MySQL và MongoDB.
Hệ thống chatbot đã được thiết lập với dữ liệu mẫu từ các câu hỏi và kịch bản trả lời theo từng chủ đề, tương ứng với các chương trong Quy chế học vụ của trường Đại học Cần Thơ, nhằm đảm bảo tính chính xác trong quá trình thực nghiệm kết quả.
Bảng 3.4: Dữ liệu thực nghiệm các câu hỏi được phân loại theo từng chủ đề
Chủ đề Số lượng ý định Số lượng câu hỏi
II Tổ chức đào tạo 12 160
III Đánh giá kết quả học tập
IV Xét và công nhận tốt nghiệp
Dựa trên mô hình đã training gồm có 532 câu hỏi, 69 ý định, 3 thực thể,
67 kịch bản hội thoại, tiến hành thử nghiệm chat với chatbot ngẫu nhiên mỗi lần 80 câu, Hệ thống đạt được kết quả theo bảng đánh giá sau:
Lần thực nghiệm Số câu đúng Độ chính xác
Trong thử nghiệm cuối cùng với chatbot, độ chính xác đạt trên 98% sau 80 câu hỏi, chỉ tính trong phạm vi kịch bản đã được đào tạo Đối với các câu hỏi ngoài phạm vi đào tạo, chatbot sẽ cung cấp các câu trả lời mặc định hoặc hiển thị dưới dạng nút để xác nhận lại với người dùng khi câu hỏi có ý định mập mờ hoặc trùng lặp.
Hình 3.16: Kết quả thực nghiệm
Bộ dữ liệu để test ngẫu nhiên giống như trong kịch bản là 80 câu có kết quả đạt được như sau:
Hình 3.17: Bộ dữ liệu test ngẫu nhiên 1
Hình 3.18: Bộ dữ liệu test ngẫu nhiên 2
49Biểu đồ đánh giá ước lượng tập dữ liệu training và khung kịch bản(history) cho chatbot:
Hình 3.19: Hình ma trận ước lượng nhầm lẫn xây dựng dữ liệu intent
Biểu đồ ước lượng cho thấy rằng các câu đầu vào cho ý định của người dùng không bị xung đột hay nhầm lẫn, điều này đảm bảo tính chính xác của tập dữ liệu để đào tạo bot.
Hình 3.20: Hình ước lượng độ chính xác tập dữ liệu training intent 3.4 Demo hệ thống
Hệ thống chatbot hỗ trợ cố vấn học tập ảo bao gồm hai miền giao diện: backend và frontend Miền backend dành cho các Thầy Cô và Quản trị viên hệ thống, cho phép họ cập nhật và bổ sung kịch bản cũng như câu hỏi huấn luyện cho chatbot Trong khi đó, miền frontend cung cấp khung chat để sinh viên có thể truy cập trang web và tương tác trực tiếp với chatbot nhằm nhận tư vấn học vụ.
Giao diện này được thiết kế đặc biệt cho các Thầy Cô có vai trò Quản trị Hệ thống, cho phép họ cấu hình các câu hỏi, ý định và kịch bản cuộc hội thoại cho chatbot một cách trực quan và dễ dàng.
3.4.1.1 Chức năng Cấu hình kịch bản (Stories) giữa Người và Máy Quản trị
Hệ thống có thể cấu hình thêm các kịch bản các đoạn hội thoại giữa Người và Máy.
Quản trị hệ thống có thể cấu hình đoạn hội thoại bằng cách sử dụng giao diện trực quan để nhập các câu hỏi mà người dùng có thể đặt liên quan đến ý định Hệ thống cho phép thiết lập các câu trả lời dưới dạng văn bản hoặc các nút bấm hành động, giúp tối ưu hóa trải nghiệm người dùng.
Hình 3.21: Chức năng Cấu hình kịch bản (stories) giữa Người và Máy dành cho
Cấu hình đoạn hội thoại với phản hồi bằng hình ảnh và nút bấm giúp tăng cường tương tác với người dùng Ngoài việc sử dụng câu trả lời dạng văn bản và nút hành động, hệ thống còn cho phép thiết lập câu trả lời hình ảnh, mang lại sự sinh động và hấp dẫn hơn trong việc phản hồi người dùng.
Hình 3.22: Cấu hình phản hồi với Ảnh (images) và các Nút (buttons) tương tác với người dùng.
3.4.1.2 Chức năng cấu hình Form thu thập thông tin người dùng Hệ thống có thể thiết lập các form dùng để thu thập thông tin người dùng Form là một kịch bản các câu hỏi dùng để thu thập và lưu trữ thông tin của người dùng vào các vị trí lưu trữ (slots) – điều này tương tự như lưu giá trị vào các biến trong lập trình Với các thông tin người dùng cung cấp, sẽ giúp cho chatbot gởi yêu cầu truy vấn dữ liệu đến các API cung cấp dữ liệu của hệ thống database tri thức Quản lý môn học.
Hình 3.23: Cấu hình form thu thập thông tin người dùng
Khi người dùng có nhu cầu tra cứu kết quả xếp loại tốt nghiệp, một form sẽ được kích hoạt để thu thập thông tin cần thiết Hệ thống sẽ hiển thị các câu hỏi liên quan, giúp gửi yêu cầu đến các API cung cấp dữ liệu từ hệ thống quản lý môn học Sau khi nhận được kết quả từ API, chatbot sẽ thông báo cho người dùng về kết quả xếp loại của họ.
3.4.1.3 Chức năng cấu hình Kịch bản tra cứu kết quả tốt nghiệp Kịch bản tra cứu kết quả tốt nghiệp là kịch bản thiết lập các câu trả lời thế nào sẽ phụ thuộc vào giá trị của người dùng cung cấp Khi người dùng cung cấp đầy đủ thông tin, hệ thống sẽ gọi các API với dữ liệu của người dùng cung cấp để tra cứu thông tin trong database tri thức Quản lý môn học.
Hình 3.24 Chức năng cấu hình kịch bản tra cứu kết quả tốt nghiệp
3.4.1.4 Chức năng cấu hình Gán nhãn và gắn các slots trích xuất thông tin thực thể Đôi khi trong câu trả lời của người dùng đã có cung cấp các thông tin cần thiết để chatbot thu thập Thay vì chatbot phải hỏi đi hỏi lại các thông tin không cần thiết, việc thiết lập gán nhãn cho các thực thể sẽ giúp cho việc thu thập thông tin của chatbot được nhanh chóng và tiện lợi hơn.
Hình 3.25: Cấu hình gán nhãn, gắn các slots trích xuất thông tin thực thể
Trong ví dụ trên, người dùng đã cung cấp thông tin về "tên khoa" mà họ đang theo học trong câu hỏi gửi đến chatbot Để thu thập thông tin phục vụ cho các ý định tiếp theo của người dùng, quản trị hệ thống có thể gán nhãn thực thể bằng cách quét và nhập tên các thực thể theo ý muốn.
3.4.1.5 Chức năng cấu hình các từ viết tắt, đồng nghĩa
Người dùng thường gửi câu hỏi với thói quen gõ chữ, dẫn đến việc sử dụng từ viết tắt và từ đồng nghĩa Để hệ thống không nhầm lẫn các từ viết tắt này với các từ vô nghĩa (stopwords), cần có cơ chế nhận diện chính xác.
54 quản trị hệ thống có thể xác định sẵn các từ viết tắt, từ đồng nghĩa trong hệ thống.
Hình 3.26: Cấu hình các từ viết tắt, đồng nghĩa
3.4.1.6 Chức năng kiểm tra kết quả thông số sau khi xác định ý định của người dùng