MẪU ĐỒ ÁN KHOÁ LUẬN TỐT NGHIỆP ĐẠI HỌC ĐÀ NẴNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG VIỆT HÀN BÁO CÁO ĐỒ ÁN CHUYÊN NGÀNH 2 ĐỀ TÀI XÂY DỰNG HỆ THỐNG DỰ ĐOÁN BỆNH TIM SỬ DỤNG CHATBOT MỞ ĐẦU Trong[.]
Trang 1ĐẠI HỌC ĐÀ NẴNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
Trang 2
MỞ ĐẦU
Trong những năm gần đây, khoa học công nghệ đang dần tiến đến một tầm caomới Mặc dù còn mới mẻ trong lĩnh vực khoa học và công nghệ nhưng Chatbot đangđược nghiên cứu và phát triển với tốc độ chóng mặt bởi các trung tâm nghiên cứu, cáctrường đại học và học viện…rất nhiều các lĩnh vực được ứng dụng công nghệ mới này.Chatbot là một hình thức thô sơ của phần mềm trí tuệ nhân tạo, là một chương trình đểtạo ra từ máy tính tiến hành cuộc trò chuyện thông qua các phương pháp nhập văn bản,
âm thanh, cảm ứng có thể trả lời các câu hỏi và xử lý các tình huống, là một công cụ
có thể giao tiếp, tương tác với con người thông qua một trí tuệ nhân tạo đã được lậptrình sẵn Có rất nhiều công cụ cũng như thư viện hỗ trợ cho Chatbot như: Dialogflow,Wit.ai, Watson Conversation Service, Microsoft’s LUIS, Google Natural LanguageAPI, Amazon Lex,…
Đề tài: “Xây dựng hệ thống dự đoán bệnh tim sử dụng Chatbot” chủ yếu xâydựng trên ngôn ngữ Python, nhận thông tin từ Dialogflow, trả lời tự động, thực hiện dựđoán thông tin đầu vào và đăt lịch hẹn phục vụ cho việc chuẩn đoán bệnh
Trang 3LỜI CẢM ƠN
Để thực hiện và hoàn thành tốt đồ án này, em đã nhận được sự giúp đỡ vàhướng dẫn rất tận tình của các thầy cô thuộc Đại Học Công Nghệ Thông Tin VàTruyền Thông Việt Hàn – Đại Học Đà Nẵng Em xin cảm ơn các thầy cô thuộc bộmôn chuyên ngành đã cung cấp cho chúng em các thông tin, kiến thức vô cùng quýbáu và cần thiết trong suốt thời gian quá để em có thể thực hiện và hoàn thành đồ áncủa mình Đặc biệt em xin chân thành cảm ơn thầy Nguyễn Quang Vũ, người đã trựctiếp hướng dẫn chúng em trong thời gian thực hiện đồ án này
Cuối cùng, xin chân thành cảm ơn các bạn trong ngành công nghệ thông tin đãủng hộ, giúp đỡ, chia sẻ kiến thức, kinh nghiệm và tài liệu có được giúp chúng tôitrong quá trình nghiên cứu và thực hiện đề tài
Do giới hạn về mặt thời gian và kiến thức cũng như kinh nghiệm thực tiễn nên
đề tài không tránh khỏi những sai sót Em rất mong nhận được sự thông cảm của quýthầy cô và mong đón nhận những góp ý của thầy cô và các bạn
Em xin chân thành cảm ơn!
Trang 4Để thực hiện và hoàn thành tốt đồ án này, em đã nhận được sự giúp đỡ vàhướng dẫn rất tận tình của các thầy cô thuộc Đại Học Công Nghệ Thông Tin VàTruyền Thông Việt Hàn – Đại Học Đà Nẵng Em xin cảm ơn các thầy cô thuộc bộmôn chuyên ngành đã cung cấp cho chúng em các thông tin, kiến thức vô cùng quýbáu và cần thiết trong suốt thời gian quá để em có thể thực hiện và hoàn thành đồ áncủa mình Đặc biệt em xin chân thành cảm ơn thầy Nguyễn Quang Vũ, người đã trựctiếp hướng dẫn chúng em trong thời gian thực hiện đồ án này.
Cuối cùng, xin chân thành cảm ơn các bạn trong ngành công nghệ thông tin đãủng hộ, giúp đỡ, chia sẻ kiến thức, kinh nghiệm và tài liệu có được giúp chúng tôitrong quá trình nghiên cứu và thực hiện đề tài
Do giới hạn về mặt thời gian và kiến thức cũng như kinh nghiệm thực tiễn nên
đề tài không tránh khỏi những sai sót Em rất mong nhận được sự thông cảm của quýthầy cô và mong đón nhận những góp ý của thầy cô và các bạn
Em xin chân thành cảm ơn!
Trang 5MỤC LỤC
Chương 1: TỔNG QUAN 1
1.1 Lý do chọn đề tài 1
1.2 Mục tiêu và nhiệm vụ nghiên cứu 2
1.2.1 Mục tiêu 2
1.2.2 Nhiệm vụ nghiên cứu 2
1.3 Đối tượng và khách thể nghiên cứu: 2
1.3.1 Đối tượng nghiên cứu 2
1.3.2 Khách thể nghiên cứu 2
1.4 Cấu trúc đề tài 2
Chương 2: CƠ SỞ LÝ THUYẾT 3
2.1 Giới thiệu về Python 3
2.2 Giới thiệu về Flask 4
2.3 Giới Thiệu Về Trí Tuệ Nhân Tạo (AI), Machine Learning, SVM và thư viện Scikit-Learn 4
2.3.1 Giới thiệu về Trí Tuệ Nhân Tạo (AI- Artificial Intelligence) 4
2.3.2 Giới thiệu về Machine Learning 5
2.3.3 Giới thiệu SVM 6
2.3.4 Giới thiệu Scikit-Learn – thư viện hỗ trợ trong việc phân loại 7
2.4 Giới thiệu Ngrok 7
2.5 Giới thiệu Chatbot 8
2.5.1 Khái niệm 8
2.5.2 Cấu tạo chatbot 8
2.5.3 Cách thức hoạt động 9
2.5.4 Một số nền tảng hỗ trợ phát triển cho chatbot 10
2.5.5 Một số ứng dụng chatbot 10
2.6 Dialogflow 11
2.6.1 Khái niệm 11
2.6.2 Lịch sử ra đời và hoạt động 12
2.6.3 Khái niệm Intents 13
2.6.4 Khái niệm Entities 14
2.6.5 Khái niệm Contexts 14
Trang 62.6.6 Actions and Parameters 15
Chương 3: TRIỂN KHAI VÀ XÂY DỰNG 17
3.1 Công cụ và triển khai 17
3.1.1 Công cụ yêu cầu 17
3.2 Mô hình thiết kế hệ thống 17
3.2.1 Biều đồ phân cấp chức năng 17
3.2.2 Biểu đồ use case 18
3.2.3 Biểu đồ hoạt động 20
3.2.1 Biểu đồ tuần tự 21
3.3 Triển khai 22
Chương 4: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 26
4.1 Kết quả thực hiện 26
4.1.1 Giao diện hệ thống 26
4.1.2 Các chức năng đã đạt được 29
4.1.3 Các chức năng còn chưa hoàn thành 29
4.2 Hướng phát triển 29
PHỤ LỤC 30
DANH MỤC TÀI LIỆU THAM KHẢO 31
Trang 7DANH MỤC HÌNH
Hình 1 Chatbot trong nhiều lĩnh vực 1
Hình 2 Mối tương quan giữa AL, ML và DL 6
Hình 3 Đồ thị biểu hiện thuật toán SVM 7
Hình 4 Đồ thị biểu hiện thuật toán SVM 7
Hình 5 Nguyên lý hoạt động Chatbot 10
Hình 6 Dialogflow – Dịch vụ của Google 12
Hình 7 Biểu đồ phân cấp chức năng 17
Hình 8 Biểu đồ use case 18
Hình 9 Biểu đồ hoạt động 20
Hình 10 Biểu đồ tuần tự 21
Hình 11 Đọc dữ liệu 23
Hình 12 Biểu đồ tròn 23
Hình 13 Biểu đồ phân bố độ tuổi 24
Hình 14 Phân chia dữ liệu 24
Hình 15 Giao diện trang chính 26
Hình 16 Giao diện phần chatbot và phần nhập thông tin 26
Hình 17 Form nhập thông tin 27
Hình 18 Hệ thống dự đoán 27
Hình 19 Đặt lịch hẹn 28
Hình 20 Email gửi đến người dùng 28
Trang 8Chương 1: TỔNG QUAN
1.1 Lý do chọn đề tài
Trong những năm gần đây, mặc dù còn mới mẻ trong lĩnh vực khoa học vàcông nghệ nhưng Chatbot đang được nghiên cứu và phát triển với tốc độ nhanh chóngbởi các trung tâm nghiên cứu, trường đại học và học viện…với rất nhiều ứng dụng trêncác lĩnh vực khác nhau như: giải trí, y tế, thương mại, tự động hóa,…Đặc biệt, Chatbottrong ngành y học sẽ giúp rất nhiều cho các bác sĩ trong việc tư vấn và thẩm chí hướngdẫn bệnh nhân điều trị các bệnh có thể được chữa khỏi Vậy tại sao không cho nó thêmnhiệm vụ để dự đoán thông tin đầu vào là những thông số cơ thể rồi sau đó thông báokết qủa đến người bệnh là người đó đang mắc căn bệnh gì
Để làm điều đó chúng ta cần kịch bản về câu hỏi mà bác sĩ đã hỏi, dữ liệu thôngtin đầu vào Và với các câu hỏi được đặt ra, Chatbot sử dụng các hệ thống xử lý ngônngữ tự nhiên (Natural Language Processing) và phương pháp phân loại dữ liệu SVM
để phân tích dữ liệu, sau đó kết hợp hai thuật toán học máy để đưa ra phản hồi về dựđoán và phản hồi chính xác nhất có thể
Vì vây, đề tài “Xây dựng hệ thống dự đoán bệnh tim sử dụng Chatbot” sẽ giúpcho các bác sĩ giảm thiểu được thời gian tư vấn cho bệnh nhân với một số câu được sửdụng hằng ngày và thì hoàn thành công việc Chatbot sẽ yêu cầu thời gian về ngày, giờ
để sắp xếp lịch đặt hẹn với các bác sĩ chuyên khoa giúp bệnh nhân không cần phảingồi chờ đợi Với mỗi người dùng truy cập hệ thống để tư vấn, khi kết thúc phiên tưvấn, người dùng sẽ nhập thông tin và sau khi có đầy đủ thông tin hệ thống sẽ báo kếtquả là bạn có đang bị mắc bệnh tim hay không
Dữ liệu cho việc huấn luyện dữ liệu được lấy từ bệnh viện Thụy Sĩ
Hình 1 Chatbot trong nhiều lĩnh vực
1.2 Mục tiêu và nhiệm vụ nghiên cứu
Trang 91.2.1 Mục tiêu
Tìm hiểu về hệ thống chatbots, ứng dụng của chatbots cho đời sống và nhữngphương pháp trong việc dự đoán thông tin, cụ thể qua việc xây dựng hệ thống trên nềntảng của Dialogflow, ngôn ngữ Python và kết hợp phương pháp học SVM (SupportVector Machine)
1.2.2 Nhiệm vụ nghiên cứu
Nghiên cứu cơ sở lý thuyết về Dialogflow, Python, SVM, Flask
Nghiên cứu cách hoạt động của Chatbot để rồi kết hợp phương pháp SVMtrong việc dự đoán thông tin
Đào tạo dữ liệu tim mạch được lấy từ bệnh viện Thụy Sĩ
Xây dựng các nội dung, kịch bản để bác sĩ Chatbot tư vấn
1.3 Đối tượng và khách thể nghiên cứu:
1.3.1 Đối tượng nghiên cứu
Hệ thống dự đoán tim mạch thông qua Chatbot
Chương I: Giới thiệu tổng quan
Chương II: Cơ sở lý thuyết
Chương III: Triển khai xây dựng
Chương 2: CƠ SỞ LÝ THUYẾT
2.1 Giới thiệu về Python
Trang 10Python là một ngôn ngữ lập trình thông dịch (interpreted), hướng đối tượng (object-oriented), và là một ngôn ngữ bậc cao (high-level) ngữ nghĩa động (dynamic semantics) Python hỗ trợ các module và gói (packages), khuyến khích chương trình module hóa và tái sử dụng mã Trình thông dịch Python và thư viện chuẩn mở rộng có sẵn dưới dạng mã nguồn hoặc dạng nhị phân miễn phí cho tất cả các nền tảng chính và
có thể được phân phối tự do
Sau đây là các đặc điểm của Python:
Ngữ pháp đơn giản, dễ đọc
Vừa hướng thủ tục (procedural-oriented), vừa hướng đối tượng oriented)
(object- Hỗ trợ module và hỗ trợ gói (package)
Xử lý lỗi bằng ngoại lệ (Exception)
Kiểu dữ liệu động ở mức cao
Có các bộ thư viện chuẩn và các module ngoài, đáp ứng tất cả các nhu cầu lập trình
Có khả năng tương tác với các module khác viết trên C/C++ (Hoặc Java choJython, hoặc Net cho IronPython)
Ưu điểm:
Có thể nhúng vào ứng dụng như một giao tiếp kịch bản (scripting interface)
Python dễ dàng kết nối với các thành phần khác:
Python có thể kết nối với các đối tượng COM, NET (Ironpython, Python for net), và CORBA, Java… Python cũng được hỗ trợ bởi Internet
Communications Engine (ICE) và nhiều công nghệ kết nối khác
Có thể viết các thư viện trên C/C++ để nhúng vào Python và ngược lại
Python là ngôn ngữ có khả năng chạy trên nhiều nền tảng
Python có cho mọi hệ điều hành: Windows, Linux/Unix, OS/2, Mac, Amiga,
và những hệ điều hành khác Thậm chí có cả những phiên bản chạy
trên NET, máy ảo Java, và điện thoại di động (Nokia Series 60) Với cùng một mã nguồn sẽ chạy giống nhau trên mọi nền tảng
Python rất đơn giản và dễ học
Python có cộng đồng lập trình rất lớn, hệ thống thư viện chuẩn, và cả các thư viện mã nguồn mở được chia sẻ trên mạng
Python là ngôn ngữ mã nguồn mở
Cài đặt Python dùng giấy phép nguồn mở nên được sử dụng và phân tối tự
do, ngay cả trong việc thương mại Giấy phép Python được quản lý bởi Python Software Foundation
2.2 Giới thiệu về Flask
Flask là một web frameworks, nó thuộc loại micro-framework được xây dựng bằng ngôn ngữ lập trình Python Flask cho phép bạn xây dựng các ứng dụng web từ đơn giản tới phức tạp Nó có thể xây dựng các api nhỏ, ứng dụng web chẳng hạn như
Trang 11các trang web, blog, trang wiki hoặc một website dựa theo thời gian hay thậm chí là một trang web thương mại Flask cung cấp cho bạn công cụ, các thư viện và các công nghệ hỗ trợ bạn làm những công việc trên.
Flask là một micro-framework Điều này có nghĩa Flask là một môi trường độc lập, ít sử dụng các thư viện khác bên ngoài Do vậy, Flask có ưu điểm là nhẹ, có rất ít lỗi do ít bị phụ thuộc cũng như dễ dàng phát hiện và xử lý các lỗi bảo mật
Ưu điểm:
Tốc độ
Hỗ trợ cho NoQuery
Độ phức tạp tối thiểu
Chủ nghĩa tối giản tuyệt đối
Không có ORM, dễ dàng kết nối với tiện ích mở rộng
Trình gỡ lỗi được nhúng trong trình duyệt
Mã ngắn và đơn giản trong số các bộ xương Python khác
Điểm nổi bật khi sử dụng Flask để lập trình web là sẽ rất ít bị phụ thuộc bên thứ 3, do đó đề phòng được các lỗi bảo mật
Nhược điểm:
Vì là micro framework nên cần phải làm nhiều việc hơn
2.3 Giới Thiệu Về Trí Tuệ Nhân Tạo (AI), Machine Learning, SVM và thư viện Scikit-Learn
2.3.1 Giới thiệu về Trí Tuệ Nhân Tạo (AI- Artificial Intelligence)
Ngày nay thì trí tuệ nhân tạo thì có mặt ở khắp mọi nơi Trí tuệ nhân tạo là xu hướng mà các hãng công nghệ lớn đang hướng đến như Google, Facebook, Amazon, Microsoft, Các hãng đó đều đầu tư rất lớn vào trí tuệ nhân tạo nhằm tạo ra các sản phẩm phục vụ cho lợi ích của con người
Trí tuệ nhân tạo là trí tuệ được biểu diễn bởi bất cứ một hệ thống nhân tạo nào Thuật ngữ này thường dùng để nói đến các máy tính có mục đích không nhất định và ngành khoa học nghiên cứu về các lý thuyết và ứng dụng của trí tuệ nhân tạo Nó liên quan đến việc cư xử, sự học hỏi, khả năng thích ứng thông minh của máy móc
Bellman ( 1978 ) định nghĩa trí tuệ nhân tạo là tự động hoá các hoạt động phù hợp với suy nghĩ con người, chẳng hạn các hoạt động ra quyết định, giải bài toán, Rich anh Knight ( 1991 ) thì cho rằng: Trí tuệ nhân tạo là khoa học nghiên cứu xem làm thế nào để máy tính có thể thực hiện những công việc mà hiện con người còn làm tốt hơn máy tính
Mỗi khái niệm, định nghĩa đều có điểm đúng riêng, nhưng để đơn giản chúng ta
có thể hiểu trí tuệ nhân tạo là một ngành khoa học máy tính Nó xây dựng trên một nềntảng lý thuyết vững chắc và có thể ứng dụng trong việc tự động hóa các hành vi thông minh của máy tính Giúp máy tính có được những trí tuệ của con người như: biết suy
Trang 12nghĩ và lập luận để giải quyết vấn đề, biết giao tiếp do hiểu ngôn ngữ, tiếng nói, biết học và tự thích nghi
Nó là thứ giúp ta sử dụng để trả lời tin nhắn tự động, học cách lái xe, lái máy bay để chúng ta có thể ngồi đó quan sát không cần phải điều khiển , sắp xếp lại các ảnh của những chuyến đi chơi khác nhau vào những cuốn album riêng biệt, thậm chí
AI còn giúp chúng ta quản lí nhà của khi đi vắng hoặc đi mua sắm nữa
2.3.2 Giới thiệu về Machine Learning
Machine Learning là một thuật ngữ rộng để chỉ hành động bạn dạy máy tính cảithiện một nhiệm vụ mà nó đang thực hiện Cụ thể hơn, machine learning đề cập tới bất
kỳ hệ thống mà hiệu suất của máy tính khi thực hiện một nhiệm vụ sẽ trở nên tốt hơnsau khi hoàn thành nhiệm vụ đó nhiều lần Hay nói cách khác, khả năng cơ bản nhấtcủa machine learning là sử dụng thuật toán để phân tích những thông tin có sẵn, họchỏi từ nó rồi đưa ra quyết định hoặc dự đoán về một thứ gì đó có liên quan Thay vì tạo
ra một phần mềm với những hành động, hướng dẫn chi tiết để thực hiện một nhiệm vụ
cụ thể, máy tính được “huấn luyện” bằng cách sử dụng lượng dữ liệu và các thuật toán
Sau khi máy đã nhận được đủ dữ liệu cần thiết về mèo, nó phải biết cách tìm một con mèo trong một bức tranh - “Nếu trong hình ảnh có chứa các chi tiết X, Y, hoặc Z nào đó, thì 95% khả năng đó là một con mèo”
Trang 13Hình 2 Mối tương quan giữa AL, ML và DL
2.3.3 Giới thiệu SVM
SVM (Support Vector Machine) là 1 thuật toán học máy thuộc nhóm
Supervised Learning (học có giám sát) được sử dụng trong các bài toán phân lớp dữ liệu (classification) hay hồi qui (Regression)
SVM là 1 thuật toán phân loại nhị phân, SVM nhận dữ liệu vào và phân loại chúng vào hai lớp khác nhau Với 1 bộ các ví dụ luyện tập thuộc hai thể loại cho trước,thuật toán luyện tập SVM xây dựng 1 mô hình SVM để phân loại các ví dụ khác vào hai thể loại đó
Hình 3 Đồ thị biểu hiện thuật toán SVM
Support Vectors hiểu một cách đơn giản là các đối tượng trên đồ thị tọa độ quan sát, Support Vector Machine là một biên giới để chia hai lớp tốt nhất
Trang 14Ta có ví dụ về 3 đường hyper-lane (A, B, C) Xác định hyper-lane nào đúng cho nhóm ngôi sao và hình tròn
Ưu điểm của SVM
Xử lý trên không gian số chiều cao: SVM là một công cụ tính toán hiệu quả
trong không gian chiều cao, trong đó đặc biệt áp dụng cho các bài toán phân loại văn bản và phân tích quan điểm nơi chiều có thể cực kỳ lớn
Tiết kiệm bộ nhớ: Do chỉ có một tập hợp con của các điểm được sử dụng
trong quá trình huấn luyện và ra quyết định thực tế cho các điểm dữ liệu mớinên chỉ có những điểm cần thiết mới được lưu trữ trong bộ nhớ khi ra quyết dịnh
Tính linh hoạt: Phân lớp thường là phi tuyến tính Khả năng áp dụng Kernel
mới cho phép linh động giữa các phương pháp tuyến tính và phi tuyến tính
từ đó khiến cho hiệu suất phân loại lớn hơn
Nhược điểm của SVM
Bài toán số chiều cao: Trong trường hợp số lượng thuộc tính (p) của tập dữ
liệu lớn hơn rất nhiều so với số lượng dữ liệu (n) thì SVM cho kết quả khá
tồi
Chưa thể hiện rõ tính xác suất: Việc phân lớp của SVM chỉ là việc cố gắng
tách các đối tượng vào hai lớp được phân tách bởi siêu phẳng SVM Điều này chưa giải thích được xác suất xuất hiện của một thành viên trong một nhóm là như thế nào Tuy nhiên hiệu quả của việc phân lớp có thể được xác
định dựa vào khái niệm margin từ điểm dữ liệu mới đến siêu phẳng phân
lớp mà chúng ta đã bàn luận ở trên
2.3.4 Giới thiệu Scikit-Learn – thư viện hỗ trợ trong việc phân loại
Scikit-learn là một thư viện Python mã nguồn mở dành cho học máy Thư viện này hỗ trợ các thuật toán hiện đại như KNN, XGBoost, random forest, SVM và một sốthuật toán khác.
Scikit-learn được sử dụng rộng rãi trong các cuộc thi kaggle cũng như trong cáccông ty công nghệ nổi tiếng Nó giúp tiền xử lý, giảm chiều dữ liệu (lựa chọn tham số), phân loại, hồi quy, phân cụm và model selection
2.4 Giới thiệu Ngrok
Ngrok là công cụ tạo đường hầm (tunnel) giữa localhost của bạn và internet Giúp người khác mạng có thể truy cập được localhost của bạn thông qua custom
domain của ngrok
Trang 15 Xây dựng webhook tới localhost của bạn một cách dễ dàng
đã được lập trình sẵn
Trong đa số các trường hợp thì chatbot được sử dụng qua ứng dụng nhắn tin đểnói chuyện với con người Nó có khả năng trả lời những câu hỏi mà người dùng đề ra,thông thường lúc ban đầu thì nó sẽ dựa vào những từ khóa trong câu hỏi của ngườidùng để trả lời và dần dần nó sẽ học hỏi được thêm từ trải nghiệm người dùng và làmnhững cuộc trò chuyện tiếp xúc với con người trở nên cá nhận hơn, giống thật hơn
Ví dụ 1: Nếu như bạn muốn nhắn tin để tìm kiếm thông tin một sản phẩm củamột cửa hàng hoặc công ty đã tạo Chatbot, bạn chỉ việc nhập vào từ khóa, chúng sẽ lậptức tìm và hiện kết quả thông tin sản phẩm cho bạn Đôi khi thuật ngữ “Chatbot” được
sử dụng để chỉ các trợ lý ảo nói chung hoặc cụ thể là chỉ chương trình máy tính trả lời
tự động trên nền tảng tin nhắn (Messaging Platform)
Ví dụ 2: Nếu như bạn đã hỏi “trợ lý ảo” Siri của Apple hay Cortana củaMicrosoft một vấn đề gì đó như: “Thời tiết hôm nay như thế nào?”, là bạn đã làm việcvới một chatbot
2.5.2 Cấu tạo chatbot
Cấu tạo cơ bản của Chatbot gồm có ba phần bao gồm: cơ sở dữ liệu, lớp ứngdụng, quyền truy cập vào các API và giao diện đồ họa người dùng Nhờ những thànhphần cơ bản đó mà nó có thể hoạt động được
- Cơ sở dữ liệu: Cơ sở dữ liệu lưu trữ các thông tin, dữ liệu và nội dung.
- Tầng ứng dụng: Các giao thức của tầng ứng dụng thường được dùng để trao đổi
dữ liệu giữa các chương trình chạy trên máy nguồn và máy đích Tầng này đóngvai trò như cửa sổ dành cho hoạt động xử lý các trình ứng dụng, nó biểu diễnnhững dịch vụ hỗ trợ trực tiếp các ứng dụng người dùng, chẳng hạn như phầnmềm chuyển tin, truy nhập cơ sở dữ liệu và email, v.v
- Giao diện lập trình ứng dụng (API): là một giao diện mà một hệ thống máy tính
hay ứng dụng cung cấp để cho phép các yêu cầu dịch vụ có thể được tạo ra từ
Trang 16các chương trình máy tính khác, và/hoặc cho phép dữ liệu có thể được trao đổiqua lại giữa chúng
2.5.3 Cách thức hoạt động
Chatbot là sự kết hợp của các kịch bản có trước và tự học trong quá trình tươngtác Ta sẽ tương tác với Chatbot qua nền tảng tin nhắn Với các câu hỏi được đặt ra,Chatbot sử dụng các hệ thống xử lý ngôn ngữ tự nhiên (Natural Language Processing)
để phân tích dữ liệu sau đó chúng lựa chọn các thuật toán học máy để đưa ra các loạiphản hồi khác nhau, chúng sẽ dự đoán và phản hồi chính xác nhất có thể Chatbot sửdụng nhiều hệ thống quét các từ khoá bên trong đầu vào, sau đó bot khởi động mộthành động, kéo một câu trả lời với các từ khóa phù hợp nhất và trả lời thông tin từ một
cơ sở dữ liệu / API, hoặc bản giao cho con người Nếu tình huống đó chưa xảy ra(không có trong dữ liệu), Chatbot sẽ bỏ qua nhưng sẽ đồng thời tự học để áp dụng chocác cuộc trò chuyện về sau
Một trong các yếu tố làm nên sức mạnh của Chatbot là khả năng tự học hỏi.Càng được sử dụng, tương tác với người dùng nhiều, nền tảng Chatbot cảng thôngminh” Chatbot thông minh có khả năng tự học hỏi dựa trên các dữ liệu đưa vào màkhông cần phải được lập trình cụ thể (đó được gọi là phương pháp máy học - MachineLearning) Chính điều này làm cho các nhà phát triển dễ dàng tạo các chương trình tròchuyện và tự động hóa các cuộc trò chuyện với người dung Để biết thêm chi tiết vềcác ý tưởng và khái niệm đằng sau Chatbot ta xem sơ đồ quá trình sau:
Hình 5 Nguyên lý hoạt động Chatbot
2.5.4 Một số nền tảng hỗ trợ phát triển cho chatbot.
- Dialogflow
- Wit.ai
Trang 17- Watsion Conversation Service.
- Thời tiết: Poncho là ChatBot được thiết kế để trở thành một chuyên gia thời tiết,ngoài dự báo thời tiết chúng còn gửi cảnh báo khi thời tiết xấu với sự chấpthuận của người dùng
- Từ thiện: Để nâng cao nhận thức của con người về cuộc khủng hoảng nước ởEthiopia (dưới 50% dân số được sử dụng nước sạch), tổ chức từ thiện: Nướchợp tác với Lokai để tạo ra Yeshi Yeshi là một ChatBot đại diện các cô gái trẻ
ở Ethiopia, người phải đi bộ 2,5 giờ mỗi ngày để tìm nước sạch Khi ai đó bắtđầu trò chuyện với bot, Yeshi sẽ gửi hình ảnh, video, clip âm thanh và bản đồ
để tạo ra trải nghiệm cảm xúc sâu sắc giúp người dùng khám phá ra thực tếkhắc nghiệt của người Ethiopia như Yeshi
- Nhà hàng và các ngành bán lẻ: Khách hàng được Chatbot chào đón và đượccung cấp các tùy chọn menu như: chọn vị trí chỗ ngồi, thanh toán và đượcthông báo khi nào họ có thể bắt đầu lấy thức ăn của họ
- Khách sạn và Du lịch: Chatbot có thể giúp khách sạn trong một số lĩnh vực, baogồm quản lý thời gian, dịch vụ khách hàng và giảm chi phí nhân lực Chúng cóthể giúp khách hàng với các câu hỏi cơ bản và yêu cầu Chúng có thể được lậptrình để trò chuyện với khách bằng các ngôn ngữ khác nhau, làm cho các kháchhàng nói chuyện bằng ngôn ngữ địa phương của mình dễ dàng hơn
- Y tế: Chatbot này sẽ hỏi về các triệu chứng, các thông số cơ thể và lịch sử y tế,sau đó biên soạn một danh sách các nguyên nhân gây ra hầu hết các triệu chứng
và xếp hạng chúng theo thứ tự nghiêm trọng Chatbot có thể hướng dẫn bệnhnhân điều trị các bệnh có thể được chữa khỏi mà không cần đến bác sĩ
- Hàng không: Bạn có thể nhận tài liệu chuyến bay của mình qua Messenger, baogồm xác nhận đặt vé, thông báo đăng ký, thẻ lên máy bay, và cập nhật trạngthái chuyến bay
- Nông nghiệp: Chatbots giúp ích cho việc tự động hóa các quy trình chiếu sáng(đóng mở đèn tự động), tưới tiêu, quản lý thời gian, cây trồng, …
2.6 Dialogflow
2.6.1 Khái niệm
Trang 18Dialogflow (trước đây là Api.ai, Speaktoit) là một nền tảng UX đàm thoại chophép tương tác độc đáo của Google về công nghệ, Dialogflow tương tác giữa conngười và máy tính dựa trên các cuộc trò chuyện bằng ngôn ngữ tự nhiên Nói cáchkhác, Dialogflow là một framework cung cấp các dịch vụ NLP / NLU (NaturalLanguage Processing / Natural Language Understanding) xử lý ngôn ngữ tự nhiên.Hơn thế nữa, Dialogflow cung cấp tích hợp một cú nhấp chuột với hầu hết các nềntảng nhắn tin phổ biến như Facebook, Telegram, Twitter, Viber, Kik, và hỗ trợ lýthoại như Trợ lý Google và Amazon Alexa
Hình 6 Dialogflow – Dịch vụ của Google
Dialogflow cho phép bạn tạo ra một giao diện ngôn ngữ tự nhiên bằng cáchcung cấp dữ liệu có thể hành động dựa trên đầu vào đã cho Nền tảng này bao gồmnhận dạng giọng nói, hiểu ngôn ngữ tự nhiên, học tập cơ bản cũng như khả năngchuyển văn bản thành giọng nói Nền tảng hoạt động trên cơ sở các ý định và thực thểđược nhận ra từ lời nói của người dùng thay vì chỉ dựa trên phản hồi của người dùng
Có một số giao diện cho người dùng dựa trên web để xác định thực thể, ý định và phảnhồi cho chatbot hoặc cho giao diện ngôn ngữ tự nhiên khác Nhật ký của hệ thống sẽphát triển dựa trên các ý định được xác định đại diện cho ý định của người dùng cuối.Luồng của hộp thoại có thể được xác định bằng cách định dạng cấu hình ngữ cảnh, ưutiên ý định, điền vào khe, và thực hiện bằng cách sử dụng các webhook
Dialogflow bao gồm khả năng học máy để cải thiện hơn nữa việc phát hiện các
ý định từ những phát biểu của người dùng Mục đích bao gồm các phần nối tiếp :người dùng nói, hệ thống hành động, phản hồi Các câu nói của người dùng có thểđược viết ở chế độ mẫu hoặc ví dụ mẫu Chế độ mẫu được viết bằng ngôn ngữ tựnhiên và có thể được chú thích cho các tham số Trong chế độ mẫu, các tham số đượctham chiếu trực tiếp trong các lời nói và chúng không cần phải chú thích Bạn nên sửdụng chế độ ví dụ, vì chế độ ví dụ dễ sử dụng hơn và việc học máy có thể học nhanhhơn ở chế độ này Các ngữ cảnh có thể được sử dụng để truyền thông tin từ các cuộchội thoại trước hoặc các nguồn bên ngoài Để ý định được kích hoạt, tất cả các ngữcảnh được xác định cho mục đích phải hoạt động Có thể ưu tiên các ý định trongtrường hợp một số ý định được xác định, xác định dự phòng và các ý định tiếp theo, vàxác định các phản hồi văn bản