Tải bản đầy đủ (.docx) (37 trang)

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.docx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1 MB, 37 trang )

ĐẠ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 những năm gần đây, khoa học công nghệ đang dần tiến đến một tầm cao
mớ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ác
trườ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ập
trì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 Language
API, 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ây
dựng trên ngôn ngữ Python, nhận thông tin từ Dialogflow, trả lời tự động, thực hiện dự
đố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.


LỜ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à hồn thành đồ án
của mình. Đặc biệt em xin chân thành cảm ơn thầy Nguyễn Quang Vũ, người đã trực
tiế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ơi
trong q 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!



MỤ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


2.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


DANH 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 tốn SVM........................................................................7
Hình 4 Đồ thị biểu hiện thuật tốn SVM........................................................................7
Hình 5 Ngun 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ự đốn............................................................................................27
Hình 19 Đặt lịch hẹn.....................................................................................................28
Hình 20 Email gửi đến người dùng...............................................................................28



Chươ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óng
bở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ên
cá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, Chatbot
trong 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ướng
dẫ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êm
nhiệm vụ để dự đốn thơng tin đầu vào là những thơng số cơ thể rồi sau đó thơng báo
kế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ông
tin đầ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ôn
ngữ 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úp
cho 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ì hồ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ải
ngồ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ết
quả 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



1.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ững
phương pháp trong việc dự đốn thơng tin, cụ thể qua việc xây dựng hệ thống trên nền
tảng của Dialogflow, ngôn ngữ Python và kết hợp phương pháp học SVM (Support
Vector 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 SVM
trong việc dự đố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

1.3.2. Khách thể nghiên cứu
Hệ thống bằng phương pháp máy học Machine Learning cụ thể là phương pháp
SVM, Python

1.4. Cấu trúc đề tài
Đồ án gồm các chương chính:





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 IV: Kết luận và hướng phát triển

Chương 2: CƠ SỞ LÝ THUYẾT
2.1. Giới thiệu về Python


Python 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 (objectoriented)
 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 cho
Jython, 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ư


cá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 ngồ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.
 Cần tự gọi thêm các gói mở rộng.

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ền
tả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



nghĩ 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ải
thiệ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ơn
sau khi hồn thành nhiệm vụ đó nhiều lần. Hay nói cách khác, khả năng cơ bản nhất
của machine learning là sử dụng thuật tốn để phân tích những thơng tin có sẵn, học
hỏi từ nó rồi đưa ra quyết định hoặc dự đố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
để học cách thực hiện nhiệm vụ.
Nếu khơng có machine learning, AI hiện tại sẽ bị hạn chế khá nhiều bởi nó
mang lại cho máy tính sức mạnh để tìm ra mọi thứ mà khơng được lập trình rõ ràng.
Ví dụ về một loại machine learning, giả sử bạn muốn một chương trình có thể xác định
được mèo trong các bức ảnh:
Đầu tiên, chúng ta cung cấp cho AI một tập hợp các đặc điểm của lồi mèo để
máy nhận dạng, ví dụ như màu sắc lơng, hình dáng cơ thể, kích thước…
Tiếp theo, chúng ta sẽ cung cấp một số hình ảnh cho AI, trong đó một số hoặc
tất cả các hình ảnh có thể được dán nhãn "mèo" để máy có thể chọn hiệu quả hơn các
chi tiết, đặc điểm có liên quan đến mèo.
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”.



Hì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.
SVM (Support Vector Machine) là 1 thuật tố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 tố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 4 Đồ thị biểu hiện thuật tố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.
Cách làm việc của thuật toán SVM:

Ở trên, chúng ta đã thấy được việc chia hyper-lane. Bây giờ làm thế nào chúng ta có thể xác định "Làm sao để vẽ-xác định đúng hyper-plane"
Ta 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 tố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ới
nê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ác
cô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.
Ví dụ: -> http://localhost:5000
Các ứng dụng chính của ngrok
 Giúp bạn chạy demo dự án cho khách hàng xem từ chính máy của bạn mà
khơng cần deploy lên server
 Bạn có thể test responsive trên mobile một cách dễ dàng thông qua URL mà
ngrok cung cấp


 Xây dựng webhook tới localhost của bạn một cách dễ dàng
 Hỗ trợ http, https, tcp
 Hỗ trợ IP whitelist

2.5. Giới thiệu Chatbot
2.5.1. Khái niệm
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 được 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ậ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ười
dù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àm
nhữ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ủa
mộ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ập
tứ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ủa
Microsoft một vấn đề gì đó như: “Thời tiết hôm nay như thế nào?”, là bạn đã làm việc
vớ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 ứng
dụ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ành
phầ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 đóng
vai trị như cửa sổ dành cho hoạt động xử lý các trình ứng dụng, nó biểu diễn
nhữ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ần
mề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ừ


các chương trình máy tính khác, và/hoặc cho phép dữ liệu có thể được trao đổi
qua 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 q trình tương
tá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ại

phả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ột
hà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 cho
cá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ơng
minh”. 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 - Machine
Learning). 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.


-

Watsion Conversation Service.
Microsoft’s LUIS.
Google Natural Language API.
Amazon Lex.



2.5.5. Một số ứng dụng chatbot.
-

-

-

-

-

-

-

-

Giải trí: Các Chatbot giải trí trực tuyến tốt nhất dựa trên AI có thể là Mitsuku,
Rose, Insomno Bot… người dùng có thể nói chuyện tương tác với chúng hàng
giờ, nó trả lời câu hỏi của bạn theo cách nhân văn nhất và hiểu được tâm trạng
của bạn với ngôn ngữ bạn đang sử dụng.
Thời tiết: Poncho là ChatBot được thiết kế để trở thành một chuyên gia thời tiết,
ngồ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ấp
thuậ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ước
hợ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à được
cung cấp các tùy chọn menu như: chọn vị trí chỗ ngồi, thanh tốn và được
thơ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, bao
gồ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ập
trình để trị chuyện với khách bằng các ngơn ngữ khác nhau, làm cho các khách
hà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ệnh
nhâ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, bao
gồ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ạng
thá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.


Dialogflow (trước đây là Api.ai, Speaktoit) là một nền tảng UX đàm thoại cho
phép tương tác độc đáo của Google về công nghệ, Dialogflow tương tác giữa con
ngườ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ách
khác, Dialogflow là một framework cung cấp các dịch vụ NLP / NLU (Natural
Language 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ền

tả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ách
cung 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ồm
nhậ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ăng
chuyể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ản
hồ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, ưu
tiê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ố được
tham 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 nhanh
hơn ở chế độ này. Các ngữ cảnh có thể được sử dụng để truyền thơng tin từ các cuộc
hộ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 trong
trườ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.


2.6.2. Lịch sử ra đời và hoạt động.

Dialoglow trước đây (Speaktoit hay API.AI) được biết đến nhiều nhất khi tạo
Trợ lý (Assistant), một người bạn ảo cho điện thoại thông minh Android, iOS và
Windows Phone thực hiện các tác vụ và trả lời câu hỏi của người dùng bằng ngôn ngữ
tự nhiên. Dialogflow cũng đã tạo ra một công cụ xử lý ngơn ngữ tự nhiên kết hợp ngữ
cảnh trị chuyện như lịch sử đối thoại, vị trí và sở thích của người dùng. Nó được
Google đổi tên chính thức vào ngày 10 tháng 10 năm 2017 dưới dạng Dialogflow.
Phần mềm bao gồm việc nhận dạng giọng nói, hiểu ngơn ngữ tự nhiên và
chuyển văn bản thành giọng nói. Dialogflow cung cấp một giao diện web để xây dựng
và kiểm tra các kịch bản hội thoại. Nền tảng này dựa trên công cụ xử lý ngôn ngữ tự
nhiên cho phép các nhà phát triển Internet of Things có giao diện thoại ngôn ngữ tự
nhiên trong các sản phẩm của họ.
Các giao diện thoại và đảm thoại được tạo bằng Dialogflow hoạt động với
nhiều loại thiết bị bao gồm điện thoại, thiết bị đeo được, ô tô, loa và các thiết bị thơng
minh khác. Nó hỗ trợ 14 ngơn ngữ bao gồm tiếng Bồ Đào Nha, tiếng Trung, tiếng
Anh, tiếng Hà Lan, tiếng Pháp, tiếng Đức, tiếng Ý, tiếng Nhật, tiếng Hàn, tiếng Bồ
Đảo Nha, tiếng Nga, tiếng Tây Ban Nha và tiếng Ukraina.

2.6.3 Khái niệm Intents.
Intent là ý định của người dùng cuối, những ý định này được chuyển tải bởi
người dùng tới bot. Người dùng có thể chủ yếu đặt ý định vào 2 nhóm chính : Các ý
định ngẫu nhiên (casual intents) và các ý định nghiệp vụ (business intents).
Phân loại.
Ý định ngẫu nhiên - Casual Intents.
Đây là những ý định mở đầu hoặc kết thúc một cuộc hội thoại. Ví dụ lời chào
như : hi, hello, hallo, ciao, hay bye là những câu lệnh mở đầu hoặc kết thúc một cuộc
hội thoại. Những ý định này hướng bot của người dùng phản hồi bằng một câu trả lời
gợi ý như : “Xin chào, tơi có thể giúp được gì cho bạn ?” hay “Tạm biệt, cảm ơn đã trị
chuyện cùng với tơi”.
Các ý định ngẫu nhiên cũng bao gồm các ý định Khẳng định (Affirmative) và
Phủ định (Negative) cho các câu nói như : “Ok”, “vâng”, “Khơng, không phải cái

này.” Bằng các ý định chung chung, Casual Intents của bọt có thể xử lý tất cả các
tương tác với người dùng thay vì phải đưa câu chuyện vào một cuộc trò chuyện với
bot.
Ý định nghiệp vụ - Business Intents.
Đây là các ý định được kết nối trực tiếp với ý đồ ban đầu của các bot khi được
xây dựng, nghĩa là bot cần phải hỗ trợ và xử lý được các ý định này của người dùng


cuối khi họ truy cập vào website. Nó tập trung vào việc xử lý các vấn đề chuyên sâu
hơn và cần có thời gian xử lý cũng như thực hiện một u cầu cụ thể nào đó.
Ví dụ, khi người dùng bắt đầu bằng câu : “Khi nào Resident Evil 7 được phát
hành ?”, bot sẽ xác định ý định của người dùng lúc này là cần biết thông tin của một
đối tượng, mà cụ thể ở đây là game. Đây chính là một ý định nghiệp vụ (Business
Intents), bot lúc này sẽ phải tìm ra ngày phát hành của bộ game và đồng thời sẽ gắn
nhãn câu hỏi đó theo một cái tên có thể hiểu được, giống như
“GetReleaseYearByTile” để sau đó tiến hành xử lý thơng tin và tiếp tục tương tác với
người dùng.

2.6.4. Khái niệm Entities.
Entities là những cơng cụ mạnh mẽ đượ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à người dùng muốn biết từ nội dung
của mình đều sẽ có một ENTITY tương ứng.
Ví dụ : Trong câu nói : “Thứ 6 này, Trung sẽ bay từ Hà Nội đến Đà Nẵng thay
vì ngày mai”. 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 ... entity tương ứng sẽ là “Vị trí”.

2.6.5. Khái niệm Contexts.
Contexts có nghĩa là bối cảnh, ngữ cảnh, phạm vi. Lấy ví dụ trong Chatbot,
người dùng vừa hỏi “Thời tiết ở Hà Nội” và đã nhận được câu trả lời, họ đặt tiếp thêm
một câu hỏi nữa “Vậy ở Đà Nẵng thì thế nào ? ”, trường hợp nếu khơng có context

Chatbot khơng thể nào hiểu được người dùng đang hỏi vấn đề gì liên quan đến Đà
Nẵng, cịn trường hợp có context Chatbot sẽ biết ngay người dùng đang hỏi tiếp về
thời tiết của Đà Nẵng. Trong một Intent của Dialogflow có input context và output
context như hình dưới đây :

Input context có nhiệm vụ giúp Dialoglow xác định Intent này chỉ được thực
hiện khi đang có các context tương ứng.



×