Luan Van Tot Nghiep Le Trung Kien Nop

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 137

ĐẠI HỌC KỸ THUẬT – CÔNG NGHỆ CẦN THƠ

KHOA KỸ THUẬT CƠ KHÍ

----------  ----------

LÊ TRUNG KIÊN

1700218

MÔ HÌNH CHATBOT GIAO TIẾP, HỖ TRỢ THỦ TỤC


GIẤY TỜ HÀNH CHÍNH CHO SINH VIÊN TẠI KHOA KỸ
THUẬT CƠ KHÍ

Ngành: Công nghệ kỹ thuật Cơ điện tử - 2017

Mã số: 7510204

LUẬN VĂN ĐẠI HỌC

TP.CẦN THƠ, tháng 06 năm 2021


CÔNG TRÌNH ĐƯỢC HOÀN THÀNH TẠI

TRƯỜNG ĐẠI HỌC KỸ THUẬT – CÔNG NGHỆ CẦN THƠ

Cán bộ hướng dẫn: Th.S NGUYỄN LÊ THẾ DUY

Luận văn đại học được bảo vệ tại Trường Đại học Kỹ thuật – Công nghệ Cần Thơ
ngày 28 tháng 06 năm 2021.

Thành phần Ban chấm đánh giá luận văn đại học gồm:

1. Trưởng ban: Th.S PHÓ HOÀNG LINH

2. Uỷ viên phản biện: Th.S ĐƯỜNG KHÁNH SƠN

3. Thư ký ban chấm: Th.S NGUYỄN LÊ THẾ DUY

Xác nhận của Ban chấm đánh giá sau khi luận văn đã được sửa chữa.

TRƯỞNG BAN UỶ VIÊN PHẢN BIỆN THƯ KÝ

Th.S Phó Hoàng Linh Th.S Đường Khánh Sơn Th.S Nguyễn Lê Thế Duy
TRƯỜNG ĐẠI HỌC CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT NAM

KỸ THUẬT – CÔNG NGHỆ CẦN THƠ Độc lập – Tự do – Hạnh phúc

KHOA KỸ THUẬT CƠ KHÍ

NHIỆM VỤ LUẬN VĂN ĐẠI HỌC

Họ tên sinh viên: LÊ TRUNG KIÊN MSSV: 1700218

Ngày, tháng, năm, sinh: 05/08/1998 Nơi sinh: Bạc Liêu

Ngành: Công nghệ kỹ thuật Cơ điện tử Mã số: 7510204

TÊN ĐỀ TÀI: MÔ HÌNH CHATBOT GIAO TIẾP, HỖ TRỢ THỦ TỤC GIẤY TỜ
HÀNH CHÍNH CHO SINH VIÊN TẠI KHOA KỸ THUẬT CƠ KHÍ

NHIỆM VỤ VÀ NỘI DUNG

❖ Nhiệm vụ: Xây dựng chương trình chatbot để quản lý, hỗ trợ thủ tục tài liệu
và giao tiếp.
❖ Nội dung:
- Thiết kế, chế tạo mô hình quản lý tài liệu.
- Xây dựng chương trình chatbot và điều khiển hệ thống bằng ngôn ngữ Python.
- Thiết kế giao diện người dùng cho chatbot bằng ngôn ngữ Python.

CÁN BỘ HƯỚNG DẪN: Th.S NGUYỄN LÊ THẾ DUY

THỜI GIAN GIAO ĐỀ TÀI: 15/02/2021

THỜI GIAN HOÀN THÀNH: 18/06/2021

Cần Thơ, ngày 10 tháng 07 năm 2021

CÁN BỘ HƯỚNG DẪN BỘ MÔN CƠ ĐIỆN TỬ

KHOA KỸ THUẬT CƠ KHÍ


LỜI CAM ĐOAN

LỜI CAM ĐOAN

Tôi xin cam đoan đây là đề tài nghiên cứu do tôi thực hiện với sự hướng dẫn
của Th.s Nguyễn Lê Thế Duy và không sao chép từ tài liệu hay công trình đã có trước
đó. Tất cả những nội dung có sự tham khảo từ các tài liệu khác đều được ghi lại trong
phần tài liệu tham khảo.

Cần Thơ, Ngày 10 tháng 07 năm 2021

Sinh viên thực hiện

Lê Trung Kiên

SVTH: LÊ TRUNG KIÊN I


LỜI CẢM ƠN

LỜI CẢM ƠN

Tôi xin chân thành cảm ơn quý thầy, cô giảng viên Khoa Kỹ Thuật Cơ Khí,
Trường Đại Học Kỹ thuật – Công nghệ Cần Thơ, đã giúp đỡ cung cấp tài liệu cần
thiết, truyền đạt rất nhiều kiến thức hữu ích và tạo mọi điều kiện thuận lợi nhất để tôi
có thể hoàn thành tốt đề tài luận văn này.

Tôi xin chân thành cảm ơn Thầy Nguyễn Lê Thế Duy – Giảng viên hướng dẫn
đề tài, thầy đã quan tâm và tạo mọi điều kiện thuận lợi nhất về cơ sở vật chất cũng
như các tài liệu tham khảo đồng thời cũng là người định hướng, và góp ý các ưu
khuyết điểm của đề tài để luận văn đạt mức hoàn chỉnh nhất có thể.

Đặc biệt tôi xin gửi lời biết ơn sâu sắc đến người thân, gia đình, cha mẹ đã tạo
mọi điều kiện tốt về kinh tế cũng như tình thần cho tôi có một quá trình nghiên cứu.

Tôi cũng xin cảm ơn đến bạn bè, anh chị khóa trước đã hỗ trợ cũng như động
viên và chia sẻ kinh nghiệm cho tôi trong suốt quá trình thực hiện luận văn.

Xin trân trọng cảm ơn

Cần Thơ, Ngày 10 tháng 07 năm 2021

Lê Trung Kiên

SVTH: LÊ TRUNG KIÊN II


TÓM TẮT LUẬN VĂN

TÓM TẮT LUẬN VĂN

Chatbot trong những năm gần đây đ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. Chatbots
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. Có rất nhiều công cụ cũng như thư viện hỗ trợ cho Chatbots như: Deep
learning, Dialogflow, Wit.ai, Watson Conversation Service, Microsoft „s LUIS,
Google Natural Language API,...

Đề tài luận văn “Mô Hình Chatbot Giao Tiếp, Hỗ Trợ Thủ Tục Giấy Tờ Hành
Chính Cho Sinh Viên Tại Khoa Kỹ Thuật Cơ Khí” thực hiện giải quyết những nhiệm
vụ bao gồm các nội dung như sau: Tìm hiểu về Deep learning trong việc đào tạo dữ
liệu cho chatbot, thiết kế và điều khiển cơ cấu quản lý và thu thập tài liệu từ yêu cầu
điều khiển của chatbot.

SVTH: LÊ TRUNG KIÊN III


DANH MỤC CHỮ VIẾT TẮT

DANH MỤC CHỮ VIẾT TẮT

Chữ viết tắt Chữ đầy đủ


ANN Artificial Neural Network
ASR Automatic Speech Recognition
BoW Bag of Words
CNN Convolution Neural Network
DNN Deep neural Network
GMM Gaussian mixture models
GPU Graphics Processing Unit
GND Ground
HMM Hidden Markov Mode
HTML Hypertext Markup Language
I2C Inter-Integrated Circuit
JSON JavaScript Object Notation
LSTM Long Short-Term Memory
NLP Natural Language Processing
NLTK Natural Language Toolkit
NLU Natural Language Understanding
PCA Principal component analysis
PE Processing Elements
PWM Pulse Width Modulation
PSF Python Software Foundation
RFID Radio Frequency Identification
RNN Recurrent Neural Network
SGD Stochastic Gradient Descent
UART Universal Asynchronous Receiver / Transmitter
USB Universal Serial Bus
SVM Vector Support Machine
IDE Arduino integreated Development Environment

SVTH: LÊ TRUNG KIÊN IV


MỤC LỤC

MỤC LỤC

LỜI CAM ĐOAN ....................................................................................................... I

LỜI CẢM ƠN ............................................................................................................ II

TÓM TẮT LUẬN VĂN ........................................................................................... III

DANH MỤC CHỮ VIẾT TẮT.................................................................................IV

MỤC LỤC ..............................................................................................................i

DANH MỤC HÌNH ..................................................................................................vii

DANH MỤC BẢNG .................................................................................................xii

MỞ ĐẦU ......................................................................................................... xiii

CHƯƠNG 1: TỔNG QUAN ..................................................................................... 1

1.1 Giới thiệu về chatbot ......................................................................................1

1.1.1 Cấu tạo chatbot ........................................................................................2

1.1.2 Phân loại chatbot .....................................................................................3

1.1.3 Cách thức hoạt động ................................................................................3

1.2 Hiểu ngôn ngữ tự nhiên (NLU) ......................................................................4

1.3 Xác định ý định người dùng...........................................................................7

1.4 Vấn đề tập trung nghiên cứu của đề tài ..........................................................9

CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU ...................... 11

2.1 Đối tượng nghiên cứu ..................................................................................11

2.1.1 Phần mềm Inventor................................................................................11

2.1.2 Tổng quan Arduino................................................................................12

2.1.2.1 Giới thiệu Arduino ..........................................................................12

SVTH: LÊ TRUNG KIÊN i


MỤC LỤC

2.1.2.2 Phần cứng của Arduino ...................................................................13

2.1.2.3 Một số loại Arduino điển hình ........................................................14

2.1.2.4 Ứng dụng của Arduino....................................................................15

2.1.3 Phần mềm IDE Arduino ........................................................................16

2.1.3.1 Khái niệm IDE Arduino ..................................................................16

2.1.3.2 Cấu trúc chương trình .....................................................................17

2.1.4 Ngôn ngữ lập trình Python ....................................................................18

2.1.4.1 Khái niệm Python ...........................................................................18

2.1.4.2 Lịch sử hình thành ..........................................................................20

2.1.4.3 Ứng dụng Python ............................................................................21

2.1.5 Phần mềm PyCharm ..............................................................................23

2.1.5.1 Khái niệm PyCharm ........................................................................23

2.1.5.2 Ứng dụng ........................................................................................24

2.1.6 Thuật toán học sâu (Deep Learning) .....................................................25

2.1.6.1 Giới thiệu ........................................................................................25

2.1.6.2 Phương thức hoạt động của Deep learning .....................................28

2.2 Phương pháp nghiên cứu .............................................................................29

2.2.1 Phương thức truyền dữ liệu I2C ............................................................29

2.2.1.1 Giới thiệu về giao tiếp I2C ..............................................................29

2.2.1.2 Đặc điểm .........................................................................................30

2.2.2 Phương thức truyền dữ liệu UART .......................................................30

2.2.2.1 Giới thiệu về giao tiếp UART .........................................................30

SVTH: LÊ TRUNG KIÊN ii


MỤC LỤC

2.2.2.2 Đặc điểm .........................................................................................33

CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT ............................................. 34

3.1 Thiết kế mô hình cơ khí ...............................................................................34

3.1.1 Cơ sở thiết kế .........................................................................................34

3.1.2 Bản thiết kế mô hình trên Inventor ........................................................34

3.1.3 Thiết kế cơ khí .......................................................................................39

3.1.3.1 Thiết kế khung trữ tài liệu ...............................................................39

3.1.3.2 Cơ cấu thu tài liệu vào ....................................................................39

3.1.3.3 Cơ cấu chuyển đổi ngăn chứa tài liệu .............................................40

3.1.3.4 Cơ cấu mở cửa lấy tài liệu ..............................................................41

3.2 Thiết kế mạch điện .......................................................................................42

3.2.1 Lưu đồ giải thuật và sơ đồ mạch điều khiển robot bằng chatbot ..........42

3.2.2 Arduino Mega2560 (Master) .................................................................45

3.2.3 Arduino Uno R3 (Slave) ........................................................................48

3.2.4 Động cơ DC ...........................................................................................51

3.2.5 Động cơ và module điều khiển động cơ bước ULN2003 V2 ...............51

3.2.6 Module LM2596 ....................................................................................53

3.2.7 Module LM393 ......................................................................................53

3.2.8 Module RFID RC522 ............................................................................54

3.2.9 Màn hình hiển thị và cảm ứng MageDok T116D .................................55

3.2.10 Pin hệ thống ...........................................................................................56

3.3 Mô hình hoàn chỉnh .....................................................................................57

SVTH: LÊ TRUNG KIÊN iii


MỤC LỤC

CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT......... 58

4.1 Ứng dụng mạng nơ ron nhân tạo vào chatbot ..............................................58

4.2 Một số thư viện Python hỗ trợ luận văn.......................................................63

4.2.1 Thư viện json .........................................................................................63

4.2.1.1 Giới thiệu ........................................................................................63

4.2.1.2 Kiểu dữ liệu của Json ......................................................................65

4.2.1.3 Ưu điểm của Json ............................................................................65

4.2.2 Thư viện SpeechRecognition ................................................................66

4.2.2.1 Giới thiệu ........................................................................................66

4.2.2.2 Nhận đầu vào âm thanh từ micrô ....................................................66

4.2.3 Thư viện NLU .......................................................................................67

4.2.3.1 Giới thiệu ........................................................................................67

4.2.4 Thư viện Numpy....................................................................................68

4.2.5 Thư viện Openpyxl ................................................................................69

4.2.5.1 Giới thiệu ........................................................................................69

4.2.5.2 Quy trình làm việc của Openpyxl ...................................................69

4.2.5.3 Đọc, ghi dữ liệu vào Excel ..............................................................69

4.2.5.4 Thư viện chuyển văn bản thành giọng nói python..........................70

4.2.6 Thư viện Pytorch ...................................................................................72

4.2.6.1 Giới thiệu về Pytorch ......................................................................72

4.2.6.2 Tổng quan Pytorch ..........................................................................73

4.2.6.3 Load và xử lý data...........................................................................74

SVTH: LÊ TRUNG KIÊN iv


MỤC LỤC

4.2.6.4 Xây dựng Neural Network ..............................................................74

4.2.6.5 Model Inference & Compability .....................................................75

4.2.7 Thư viện tkinter .....................................................................................75

4.3 Xây dựng, thiết kế chương trình cho chatbot ...............................................77

4.3.1 Mục đích và nội dung chương trình ......................................................77

4.3.2 Thiết kế sơ đồ khối hệ thống .................................................................78

4.3.2.1 Bước huấn luyện mô hình ...............................................................78

4.3.2.1.1 Dữ liệu huấn luyện .................................................................78

4.3.2.1.2 Tiền xử lý ...............................................................................79

4.3.2.1.3 Trích xuất đặc trưng ...............................................................81

4.3.2.1.4 Huấn luyện mô hình ...............................................................83

4.3.2.2 Bước phân lớp (xác định intent) mô hình .......................................89

4.3.2.2.1 Dữ liệu đầu vào ......................................................................89

4.3.2.2.2 Tiền xử lý ...............................................................................91

4.3.2.2.3 Trích xuất đặc trưng ...............................................................91

4.3.2.2.4 Mô hình phân lớp ...................................................................92

4.3.2.2.5 Kết quả ...................................................................................93

4.3.2.2.6 Dữ liệu đầu ra .........................................................................93

4.3.3 Xây dựng chương trình quản lý cơ sở dữ liệu người dùng. ..................94

4.4 Thiết kế giao diện người dùng .....................................................................96

4.4.1 Hướng dẫn thao tác với giao diện..........................................................96

4.4.2 Xây dựng giao diện ...............................................................................97

SVTH: LÊ TRUNG KIÊN v


MỤC LỤC

CHƯƠNG 5: PHẦN KẾT HỢP ĐỀ TÀI ................................................................ 99

5.1 Thiết kế mô hình ..........................................................................................99

5.1.1 Cơ sở thiết kế .........................................................................................99

5.1.2 Bản thiết kế mô hình trên Inventor ........................................................99

5.2 Sơ đồ mạch điều khiển ...............................................................................100

5.3 Mô hình hoàn chỉnh ...................................................................................102

5.4 Đánh giá .....................................................................................................103

CHƯƠNG 6: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN......................................... 105

6.1 Kết quả .......................................................................................................105

6.1.1 Tạo dữ liệu cho chatbot .......................................................................105

6.1.2 Kết quả đào tạo mô hình huấn luyện ...................................................106

6.1.3 Kết quả phát hiện giọng nói tiếng việt ................................................107

6.1.4 Kết quả phát hiện giọng nói tiếng anh .................................................108

6.1.5 Kết quả lưu trữ dữ liệu người dùng .....................................................110

6.1.6 Điều khiển robot ..................................................................................110

6.2 Đánh giá .....................................................................................................111

6.3 Kết luận ......................................................................................................111

6.3.1 Kết quả đạt được..................................................................................111

6.3.2 Các hạn chế của đề tài .........................................................................112

6.4 Hướng phát triển ........................................................................................112

TÀI LIỆU THAM KHẢO ....................................................................................... 113

PHỤ LỤC ......................................................................................................... 115

SVTH: LÊ TRUNG KIÊN vi


DANH MỤC HÌNH

DANH MỤC HÌNH

Hình 1.1: Ví dụ về chatbot ................................................................................2

Hình 1.2: Các bước xử lý chính trong pipeline của NLU .................................5

Hình 1.3: Các bước xử lý trong NLU ................................................................5

Hình 1.4: Mô hình các bước xác định ý định ....................................................7

Hình 1.5: Xử lý dữ liệu của một câu .................................................................8

Hình 2.1: Logo AUTODESK INVENTOR ....................................................12

Hình 2.2: Arduino Mega 2560 và Arduino Uno R3 ........................................13

Hình 2.3: Phần cứng của Arduino Uno R3 .....................................................13

Hình 2.4: Các Arduino phổ biến .....................................................................14

Hình 2.5: Một số Arduino cao cấp ..................................................................15

Hình 2.6: Logo Arduino IDE ..........................................................................16

Hình 2.7: Giao diện Arduino IDE ...................................................................17

Hình 2.8: Logo Python ....................................................................................18

Hình 2.9: Một số ứng dụng Python .................................................................22

Hình 2.10: Logo PyCharm ..............................................................................24

Hình 2.11 Deep learning trong mảng AI .........................................................26

Hình 2.12: Phương thức hoạt động của Deep learning ...................................28

Hình 2.13: Sơ đồ giao tiếp I2C ........................................................................30

Hình 2.14: Cách truyền dữ liệu UART ...........................................................31

Hình 2.15: Sơ đồ biểu diễn truyền data ...........................................................33

Hình 3.1: Bản vẽ tổng thể mô hình quản lý tài liệu ........................................35

SVTH: LÊ TRUNG KIÊN vii


DANH MỤC HÌNH

Hình 3.2: Bản vẽ bộ phận cuốn giấy vào ........................................................36

Hình 3.3: Bản vẽ bộ phận chuyển đổi ngăn chứa............................................37

Hình 3.4: Bản vẽ bộ phận mở cửa lấy giấy ra .................................................38

Hình 3.5:Cơ cấu thu tài liệu được thiết kế trên inventor .................................39

Hình 3.6: Cơ cấu thu tài liệu thực tế ...............................................................40

Hình 3.7: Cơ cấu chuyển đổi ngăn chứa tài liệu được thiết kế trên inventor ..40

Hình 3.8: Cơ cấu chuyển đổi ngăn chứa tài liệu thực tế .................................41

Hình 3.9: Cơ cấu mở cửa lấy tài liệu thiết kế trên inventor ............................41

Hình 3.10: Cơ cấu mở cửa lấy tài liệu thực tế .................................................42

Hình 3.11: Lưu đồ giải thuật điều khiển robot từ giọng nói ...........................42

Hình 3.12: Sơ đồ khối mạch điện điều khiển ..................................................43

Hình 3.13: Sơ đồ Layout mạch điều khiển hai lớp..........................................44

Hình 3.14: Sơ đồ đấu nối dây ..........................................................................44

Hình 3.15: Mạch điện sau khi gia công ...........................................................45

Hình 3.16: Sơ đồ chân Arduino Mega 2560 ...................................................48

Hình 3.17: Sơ đồ chân Arduino Uno ...............................................................50

Hình 3.18: Động cơ DC giảm tốc ....................................................................51

Hình 3.19: Động cơ bước 28BYJ-48...............................................................51

Hình 3.20: Module điều khiển động cơ L298 V2 ...........................................52

Hình 3.21: Module LM2596 ...........................................................................53

Hình 3.22: Module LM393 .............................................................................53

Hình 3.23: Sơ đồ nguyên lý cảm biến LM393 ................................................54

SVTH: LÊ TRUNG KIÊN viii


DANH MỤC HÌNH

Hình 3.24: Module RFID RC522 ....................................................................54

Hình 3.25: Màn hình hiển thị có cảm ứng .......................................................55

Hình 3.26: Pin Lithium Polymer .....................................................................56

Hình 3.27: Mô hình hoàn chỉnh của robot.......................................................57

Hình 4.1: Kiến trúc mạng nơ ron nhân tạo ......................................................58

Hình 4.2: Quá trình xử lý thông tin của một mạng nơ-ron nhân tạo ...............60

Hình 4.3: Ví dụ về json ...................................................................................64

Hình 4.4: Dữ liệu Excel sau khi được ghi bởi Openpyxl ................................70

Hình 4.5: Logo Pytorch ...................................................................................73

Hình 4.6: Quy trình công việc của Pytorch .....................................................73

Hình 4.7: Ví dụ phương thức pack() Tkinter ..................................................77

Hình 4.8: Ví dụ phương thức grid() Tkinter....................................................77

Hình 4.9: Ví dụ phương thức place() Tkinter..................................................77

Hình 4.10: Sơ đồ khối các bước phân loại ý định ...........................................78

Hình 4.11: Cấu trúc dữ liệu intents .................................................................79

Hình 4.12: Sơ đồ khối tiền xử lý huấn luyện ..................................................80

Hình 4.13: Tách từ trong câu với nltk .............................................................80

Hình 4.14: Chuyển từ về nguyên mẫu với nltk ...............................................81

Hình 4.15: Sơ đồ khối trích xuất đặc trưng huấn luyện ..................................81

Hình 4.16: Tạo vector từ trên python ..............................................................83

Hình 4.17: Lưu đồ giải thuật huấn luyện mô hình chatbot .............................84

Hình 4.18: Mô hình học có giám sát ...............................................................87

SVTH: LÊ TRUNG KIÊN ix


DANH MỤC HÌNH

Hình 4.19: Lưu đồ giải thuật phân tích đầu vào là giọng nói (Tiếng Anh) ....89

Hình 4.20: Lưu đồ giải thuật phân tích đầu vào là giọng nói (Tiếng Việt) ....89

Hình 4.21: Nhận dạng giọng nói tự động tiếng anh ........................................90

Hình 4.22: Nhận dạng giọng nói tự động tiếng việt ........................................91

Hình 4.23: Sơ đồ khối tiền xử lý phân lớp ......................................................91

Hình 4.24: Sơ đồ khối trích xuất đặc trưng phân lớp ......................................91

Hình 4.25: Sơ đồ khối phân lớp của mô hình..................................................92

Hình 4.26: Sơ đồ khối tính toán đầu ra cho kết quả ........................................93

Hình 4.27: Sơ đồ khối đầu ra âm thanh tiếng anh ...........................................93

Hình 4.28: Sơ đồ khối đầu ra âm thanh tiếng việt ...........................................93

Hình 4.29: Sơ đồ quản lý dữ liệu người dùng .................................................94

Hình 4.30: Dữ liệu lịch sử người dùng gửi tài liệu .........................................95

Hình 4.31: Dữ liệu lịch sử người dùng hỏi bị lỗi ............................................95

Hình 4.32: Dữ liệu lịch sử truy cập của người quản lý ...................................96

Hình 4.33: Giao diện người dùng hệ thống chatbot ........................................96

Hình 4.34: Sơ đồ điều khiển từ giao diện ........................................................97

Hình 5.1: Mô hình tổng quát kết hợp đề tài ....................................................99

Hình 5.2:Sơ đồ điều khiển toàn hệ thống trên giao diện ...............................100

Hình 5.3: Sơ đồ đấu nối dây ..........................................................................102

Hình 5.4: Mô hình kết hợp thực tế ................................................................103

Hình 5.5: Dữ liệu người gửi bao gồm thông tin và ảnh ................................104

Hình 6.1: Kết quả huấn luyện mô hình .........................................................107

SVTH: LÊ TRUNG KIÊN x


DANH MỤC HÌNH

Hình 6.2: Phân tích dữ liệu trên excel ...........................................................110

Hình 6.3: Hoạt động khi giấy tờ vào .............................................................110

Hình 6.4: Hoạt động khi mở cửa sau .............................................................111

SVTH: LÊ TRUNG KIÊN xi


DANH MỤC BẢNG

DANH MỤC BẢNG

Bảng 4.1: Các phương thức có sẵn trong mô-đun JSON ................................64

Bảng 4.2: Các đối tượng Python sau khi được dịch sang Python ...................65

Bảng 4.3: Các Widget của Tkinter ..................................................................75

Bảng 4.4: Bảng câu hỏi và ý định sau khi tạo mảng .......................................85

Bảng 4.5: Dữ liệu đào tạo ................................................................................86

Bảng 4.6: Các nút chức năng...........................................................................96

Bảng 6.1: Dữ liệu huấn luyện. .......................................................................105

Bảng 6.2: Kết quả phát hiện giọng nói tiếng việt ..........................................107

Bảng 6.3: Kết quả phát hiện giọng nói tiếng anh ..........................................108

SVTH: LÊ TRUNG KIÊN xii


MỞ ĐẦU

MỞ ĐẦU

Lý do chọn đề tài:

Trong thời đại hội nhập, thời đại của công nghiệp hóa, hiện đại hóa đất nước,
ngành cơ điện tử ngày càng có nhiều đóng góp rất to lớn vào cuộc cách mạng khoa
học kỹ thuật hiện đại, đặc biệt là sự ra đời và phát triển nhanh chóng của kỹ thuật số
cũng như hệ thống nhúng làm cho kỹ thuật điện tử cũng như các vi mạch điều khiển
phong phú đa dạng hơn. Hiện tại phần lớn trong công việc đều đưa kỹ thuật hiện đại
vào rộng rãi trong mọi lĩnh vực của hoạt động sản xuất, kinh tế đời sống xã hội,...
Chúng được thể hiện qua các nhà máy, khu công nghiệp,... vận hành các thiết bị điện,
điều khiển cánh tay robot, lập trình robot làm những công việc thường ngày ngoài ra
còn có cả trong đời sống xã hội và gia đình một cách chi tiết, linh hoạt và đồng bộ.

Ngày nay, ngoài ứng dụng sơ khai ban đầu của robot trong chế tạo máy thì ứng
dụng khác trong y tế, chăm sóc sức khỏe, nông nghiệp đóng tàu, xây dựng, an ninh
quốc phòng đang là động lực cho sự phát triển robot. Đặc biệt nhất là robot y tế đang
được quan tâm vì cần phục vụ cho nhu cầu y tế hiện tại.

Đề tài được phát triển từ Đồ án kỹ thuật điều khiển và Đồ án thiết kế hệ thống


cơ điện tử, đề tài ở hai đồ án chỉ dừng lại ở việc điều khiển thiết bị bằng giọng nói
với sự hỗ trợ của Google Assistant nhưng dữ liệu được đưa vào khá ít và chưa đạt
hiệu quả cao, chính vì thế tôi đã quyết định phát triển và chọn đề tài: “MÔ HÌNH
CHATBOT GIAO TIẾP, HỖ TRỢ THỦ TỤC GIẤY TỜ HÀNH CHÍNH CHO
SINH VIÊN TẠI KHOA KỸ THUẬT CƠ KHÍ”

Đề tài được kết hợp với đề tài của bạn Nguyễn Minh Phước để tạo ra một sản
phẩm hoàn chỉnh.

Mục tiêu và phạm vi nghiên cứu

+ Mục tiêu nghiên cứu:

SVTH: LÊ TRUNG KIÊN xiii


MỞ ĐẦU

Thiết kế mô hình chatbot áp dụng deep learning để hỗ trợ người dùng, giao tiếp
UART với Arduino, giao tiếp I2C.

Nghiên cứu phương pháp đào tạo dữ liệu cho chatbot và tạo giao diện tương tác
với người dùng.

+ Phạm vi nghiên cứu:

Đề tài áp dụng tổng hợp các kiến thức chuyên ngành Cơ Điện Tử và đại diện ở
các môn: Kỹ thuật lập trình, vi điều khiển, kỹ thuật số, điều khiển thông minh.. ngoài
ra còn các kiến thức tự tìm hiểu và bổ sung gồm thiết kế 3D, ngôn ngữ C, Python,...

Mục tiêu của đề tài là tìm hiểu nghiên cứu chính là nhận dạng giọng nói tiếng
việt với tiếng anh và trả lời theo đúng mẫu câu đã đào tạo trước đồng thời giao tiếp
với vi điều khiển điều khiển động cơ để thu thập lưu trữ tài liệu mỗi khi yêu cầu.

Diện tích mô hình robot quản lý tài liệu khoản 420x323x283, chatbot trả lời câu
hỏi dựa trên cơ sở của deep learning và mạng nơ ron với sự can thiệp, đào tạo của
con người.

Đề tài giới hạn bởi tiếng ồn, phải đảm bảo người dùng nói to và chuẩn đặc biệt
là tiếng anh.

Ý nghĩa khoa học và thực tiễn của đề tài

Ngày nay, trí tuệ nhân tạo đang ngày càng mạnh mẽ và ngày càng phát triển
giúp con người làm việc hiệu quả và tiết kiệm thời gian và sức lực.

Hệ thống chatbot áp dụng deep learning là một hệ thống giúp con người giao
tiếp với máy thực hiện các yêu cầu ý muốn của người dùng.

Bố cục đề tài

CHƯƠNG 1: TỔNG QUAN

CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

SVTH: LÊ TRUNG KIÊN xiv


MỞ ĐẦU

CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

CHƯƠNG 4: THIẾT KẾ ĐIỀU VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

CHƯƠNG 5: PHẦN KẾT HỢP ĐỀ TÀI

CHƯƠNG 6: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

SVTH: LÊ TRUNG KIÊN xv


CHƯƠNG 1: TỔNG QUAN

CHƯƠNG 1: TỔNG QUAN

1.1 Giới thiệu về chatbot

Chatbot hay còn gọi là Conversational Agents hay Dialog Systems, hiện đang
là một chủ đề nóng. Microsoft đang đặt cược cực lớn cho chatbot và tương tự với các
công ty Facebook(M), Apple (Siri), Google, WeChat, Slack. Có nhiều startup đang
thay đổi cách giao tiếp người dùng với dịch vụ của họ bằng cách tạo ra các ứng dụng
giống như Operator hay x.ai, hay các nền tảng như Chatfuel, và các thư viện như
Howdy’s Botkit. Microsoft cũng đã phát hành bot developer framework của họ. Rất
nhiều công ty đang hi vọng phát triển bot có thể giao tiếp tự nhiên như con người và
rất nhiều tuyên bố sử dụng NLP (Natural Language Processing – xử lý ngôn ngữ tự
nhiên) hay kỹ thuật Deep learning (học sâu) để tạo ra bot có khả năng trên

Chatbot là một ứng dụng được xây dựng dựa trên trí tuệ nhân tạo, cho phép con
người có thể giao tiếp với máy tính. Nó có thể tự động trả lời những câu hỏi hoặc xử
lý tình huống. Phạm vi và sự phức tạp của chatbot được xác định bởi thuật toán của
người tạo nên chúng. Chatbot thường được ứng dụng trong nhiều lĩnh vực như thương
mại điện tử, dịch vụ khách hàng, y tế, tài chính ngân hàng, các dịch vụ giải trí… ngoài
ra nó còn giúp ích cho quá trình 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,... phục vụ cho nông nghiệp giúp giảm
thiểu công sức, chi phí và thời gian

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ừ khoá, 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).

SVTH: LÊ TRUNG KIÊN 1


CHƯƠNG 1: TỔNG QUAN

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.

Hình 1.1: Ví dụ về chatbot


1.1.1 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…

SVTH: LÊ TRUNG KIÊN 2


CHƯƠNG 1: TỔNG QUAN

- 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
1.1.2 Phân loại chatbot

Có 2 loại chatbot chính:

- Chatbot viết kịch bản (Scripted chatbot): Đây là những chatbot có hành vi
được xác định bởi các quy tắc. Tại mỗi bước trong cuộc trò chuyện, người dùng sẽ
cần chọn các tùy chọn rõ ràng để xác định bước tiếp theo trong cuộc trò chuyện. Các
cách tùy chọn được trình bày cho người dùng ở mỗi bước trong cuộc hội thoại, tức là
liệu họ cần phản hồi bằng một văn bản, giọng nói hoặc cảm ứng thì sẽ phụ thuộc vào
các tính năng của nền tảng trò chuyện mà người dùng đang sử dụng và thiết kế của
chatbot.
- Chatbot thông minh (Intelligent Chatbot): Chatbot thông minh là chatbot được
xây dựng với các kỹ thuật nhân tạo trí thông minh. Trí tuệ nhân tạo (AI) cho phép
chúng cải thiện linh hoạt hơn về đầu vào người dùng mà chúng có thể thu nhận.
Chúng có thể thu nhận đầu vào dạng tự do dưới hình thức trình bày bằng văn bản
hoặc giọng nói và cũng không giới hạn các dạng đầu vào khác nếu nó có ý nghĩa. Ví
dụ: Khi bạn muốn mua quần áo, Bot sẽ tự động hỏi bạn một danh sách câu hỏi về
phong cách quần áo ưa thích của bạn và sẽ đưa ra mẫu gợi ý và giá của mặt hàng.
1.1.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ương
tác. Ta sẽ tương tác với chatbot qua nền tảng tin nhắn hoặc giọng nói. 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

SVTH: LÊ TRUNG KIÊN 3


CHƯƠNG 1: TỔNG QUAN

đó 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, 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.

1.2 Hiểu ngôn ngữ tự nhiên (NLU)

NLU được sử dụng để hoàn thành hai nhiệm vụ chính: xác định mục đích đằng
sau những gì một người đang nói và tạo ra phản hồi dựa trên mục đích đã xác định.
Dựa trên nhu cầu của người dùng, NLU cung cấp phản hồi bằng văn bản hoặc giọng

nói. Trong mọi trường hợp, nó phải được tùy biến điều chỉnh theo nhu cầu của người
dùng.

Đây có thể nói là thành phần quan trọng nhất của chatbot. Chatbot có thông
minh hay không thì đây là thành phần quyết định. Mục tiêu của thành phần này là
trích xuất ra 3 thành phần thông tin từ câu nói của người dùng:

• Đầu tiên là phân loại lĩnh vực (domain classification), nó có thể là lĩnh vực
trường học, ngân hàng, y tế hay bảo hiểm. Nếu trong trường hợp chỉ có một lĩnh vực
thì không cần thiết cho bước phân loại này.
• Tiếp đến là phân loại ý định (intent classification), ví dụ như xác định được ý
định tra cứu thông tin tài khoản hoặc ý định kiểm tra số dư.
• Cuối cùng là bước trích xuất thông tin (slot fillter hay entity extraction) trong
câu hỏi người dùng. Ví dụ ta phải trích chọn được thông tin tên người trong câu hỏi
người dùng: “What is Kien's phone number?”. Từ việc trích xuất được thông tin Kien
thì chatbot mới có cơ sở trả lời cho người dùng.

NLU xử lý tin nhắn người dùng bằng một đường ống (pipeline) nơi mà cấu hình
các bước xử lý liên tiếp theo tuần tự :

SVTH: LÊ TRUNG KIÊN 4


CHƯƠNG 1: TỔNG QUAN

Hình 1.2: Các bước xử lý chính trong pipeline của NLU


Trong đường ống này thì bạn có thể tùy chỉnh các thành phần từ bước tiền xử
lý dữ liệu, mô hình hóa ngôn ngữ, các thuật toán dùng để tách từ và trích xuất thông
tin thực thể…

Để chi tiết các bước xử lý ta xem trong mô hình 1.3: Trong đó bước entity
extraction chính là bước slot filling ở hình 1.2

Hình 1.3: Các bước xử lý trong NLU


Để phân loại ý định của một câu nói của người dùng, chúng ta cần mô hình hóa
ngôn ngữ, nghĩa là biểu diễn ngôn ngữ dưới dạng một vector số học để máy tính hiểu

SVTH: LÊ TRUNG KIÊN 5


CHƯƠNG 1: TỔNG QUAN

(vector hóa). Phương pháp phổ biến nhất hiện nay là nhúng từ (word embedding).
Word embedding là tên chung cho một tập hợp các mô hình và phương pháp ngôn
ngữ dành riêng cho xử lý ngôn ngữ tự nhiên (NLP), trong đó các từ hoặc cụm từ vựng
được ánh xạ tới các vector số thực. Về mặt khái niệm, nó liên quan đến việc nhúng
toán học từ một không gian có một chiều cho mỗi từ vào không gian vector liên tục
với các kích thước thấp hơn nhiều.

Sau khi mô hình hóa ngôn ngữ bao gồm dữ liệu đầu vào training cho bot thì việc
xác định ý định người dùng từ câu hỏi người dùng dựa trên tập đã training là bước
phân loại ý định (intent classification) hay phân loại văn bản. Ở bước này ta có thể
dùng một số kỹ thuật như:

- Naive Bayes.
- Decision Tree (Random Forest).
- Vector Support Machine (SVM).
- Convolution Neural Network (CNN).
- Recurrent Neural Network (RNN).
- Long Short-Term Memory (LSTM, Bi-LSTM).

Hầu hết các Chatbot hiện tại đều ứng dụng mô hình deep learning như RNN và
LSTM để phân loại ý định người dùng. Bài toán thách thức lớn nhất cho các chatbot
ở bước này là xác định nhiều ý định (multiple intents) trong một câu nói người dùng.
Ví dụ nếu bạn nói “Hello, where is the training room” thì bot phải xác định được hai
ý định là “hello” và “training room” trong câu nói người dùng. Nếu bot có thể hiểu
và trả lời được câu hỏi loại này sẽ giúp việc tương tác với bot trở nên tự nhiên hơn.

Tiếp đến là việc trích xuất thông tin trong câu hội thoại người dùng. Các thông
tin cần trích xuất thường dưới dạng số, chuỗi hoặc thời gian và chúng phải được khai
báo và huấn luyện trước.

SVTH: LÊ TRUNG KIÊN 6


CHƯƠNG 1: TỔNG QUAN

Phân tách các từ (Tokenization hay word segmention): Tách từ là một quá trình
xử lý nhằm mục đích xác định ranh giới của các từ trong câu văn, cũng có thể hiểu
đơn giản rằng tách từ là quá trình xác định các từ đơn, từ ghép… có trong câu. Đối
với xử lý ngôn ngữ, để có thể xác định cấu trúc ngữ pháp của câu, xác định từ loại
của một từ trong câu, yêu cầu nhất thiết đặt ra là phải xác định được đâu là từ trong
câu. Vấn đề này tưởng chừng đơn giản với con người nhưng đối với máy tính, đây là
bài toán rất khó giải quyết. Thông thường thì các ngôn ngữ phân tách các từ bởi
khoảng cách.

1.3 Xác định ý định người dùng

Hình 1.4: Mô hình các bước xác định ý định


Mô hình phân loại ý định của người dùng bao gồm một số bước cơ bản:

✓ Bước 1: Tiền xử lý dữ liệu

✓ Bước 2: Trích xuất đặc trưng

✓ Bước 3: Huấn luyện mô hình

✓ Bước 4: Phân lớp

Trong bước thứ nhất tiền xử lý dữ liệu chính là thao tác “làm sạch” dữ liệu như:
xử lý loại bỏ các thông tin dư thừa, chuẩn hoá dữ liệu và chuẩn hoá các từ viết tắt,
tách các từ trong câu… Bước tiền xử lý dữ liệu đóng một vai trò vô cùng quan trọng

SVTH: LÊ TRUNG KIÊN 7


CHƯƠNG 1: TỔNG QUAN

trong hệ thống chatbot. Nếu ở bước tiền xử lý này dữ liệu đầu vào được làm sạch và
chuẩn hoá tốt thì sẽ làm tăng khả năng độ chính xác cũng như sự thông minh cho
chatbot.

Hình 1.5: Xử lý dữ liệu của một câu


Tiếp đến bước thứ hai là trích xuất đặc trưng (feature extraction hay feature
engineering) từ những dữ liệu đã được chuẩn hoá và làm sạch. Trong mô hình học
sâu, bước trích xuất đặc trưng này có sự ảnh hưởng lớn đến độ chính xác của mô hình
phân lớp. Để trích xuất được những đặc trưng tốt nhất, chúng ta cần phân tích dữ liệu
tỉ mỉ, chuyên sâu.

Ở bước thứ ba này là bước huấn luyện mô hình có input đầu vào là các đặc trưng
quan trọng đã được trích xuất ở bước thứ hai và áp dụng các thuật toán học máy để
tạo ra một mô hình phân lớp. Các mô hình phân lớp ở đây có thể là các quy tắc phân
lớp (nếu sử dụng cây quyết định) hoặc là các vector trọng số tương ứng với các đặc
trưng được trích xuất (như trong mạng Nơ-ron, mô hình mạng SVM hoặc các mô
hình hồi quy logistic)

Sau khi đã xây dựng được một mô hình phân lớp intent, chúng ta có thể sử dụng
nó để phân loại yêu cầu mới. Câu hỏi, yêu cầu này cũng phải tuân theo các bước tiền
xử lý dữ liệu và trích xuất đặc trưng, sau đó mô hình phân lớp sẽ chấm “điểm số” cho
từng ý định trong tập các ý định và đưa ra ý định nào có điểm cao nhất.

SVTH: LÊ TRUNG KIÊN 8


CHƯƠNG 1: TỔNG QUAN

Để đưa câu trả lời chính xác nhất với câu hỏi và yêu cầu của người dùng,
chatbot cần xác định được chính xác ý định của người dùng. Việc xác định ý định của
người dùng sẽ quyết định hội thoại tiếp được diễn ra như thế nào. Vì thế, nếu xác
định sai ý định người dùng, Chatbot sẽ đưa ra những câu trả lời sai, không hợp ngữ
cảnh. Khi đó, người dùng có thể cảm thấy không hài lòng. Từ lý do trên cho thấy, bài
toán xác định chính xác ý định người dùng đóng một vai trò rất quan trọng trong hệ
thống chatbot.

Để xây dựng một mô hình phân lớp ý định chính xác, chúng ta cần một tập dữ
liệu huấn luyện bao gồm các cách diễn đạt câu hỏi hoặc yêu cầu khác nhau cho mỗi
ý định. Ví dụ, khi cùng một mục đích hỏi về địa chỉ thì người dùng có thể sư dụng
những cách diễn đạt sau:

▪ Where is the PLC practice room?


▪ PLC practice room?
▪ What floor is the PLC practice room on?
▪ I do not know the practice room PLC?
▪ ….

Có thể nói, bước tạo dữ liệu huấn luyện cho bài toán phân lớp intent là một trong
những công việc quan trọng nhất khi phát triển hệ thống chatbot và ảnh hưởng lớn
tới chất lượng sản phẩm của hệ thống chatbot về sau. Công việc này cũng đòi hỏi thời
gian, công sức khá lớn của nhà phát triển chatbot.

1.4 Vấn đề tập trung nghiên cứu của đề tài

Việc áp dụng chatbot vào việc hỗ trợ giao tiếp với người dùng cùng với việc thu
thập và lưu trữ tài liệu là vô cùng cần thiết với xã hội trong nhiều lĩnh vực. Giúp con
người tiết kiệm thời gian và tăng cường việc tự động hóa trong đời sống, công việc.

Chính vì những lợi ích mang lại trên, đề tài tập trung nghiên cứu là:

• Thiết kế chế tạo mô hình chatbot và quản lý tài liệu.

SVTH: LÊ TRUNG KIÊN 9


CHƯƠNG 1: TỔNG QUAN

• Xây dựng chương trình cho chatbot và đào tạo bởi người xây dựng.
• Xây dựng giao diện chatbot và điều khiển.
• Giao tiếp chương trình chatbot với vi điều khiển

SVTH: LÊ TRUNG KIÊN 10


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

2.1 Đối tượng nghiên cứu


2.1.1 Phần mềm Inventor

Autodesk Inventor được phát triển bởi công ty phần mềm Autodesk_USA, là
phần mềm thiết kế mô hình 3D phổ biến hiện nay. Đây là phần mềm được phát triển
chuyên cho thiết kế các sản phẩm cơ khí, có giao diện trực quan, giúp người dùng
thuận tiện khi sử dụng với những tính năng nổi trội như sau:

- Xây dựng dễ dàng mô hình 3D của chi tiết (Part).


- Thiết lập các bản 2D từ mô hình 3D nhanh chóng và chuẩn xác (Drawing).
- Tạo bản vẽ lắp từ các chi tiết đã thiết kế một cách tối ưu (Assembly).
- Mô phỏng quá trình tháo lắp các chi tiết từ bản vẽ lắp hoàn chỉnh một cách
trực quan và sinh động (Presentation).
- Thiết kế nhanh các chi tiết kim loại dạng tấm (Sheet metal).
- Thiết kế các chi tiết máy như: Trục, bộ truyền bánh răng, bộ truyền đai, bộ
truyền xích, mối ghép bulông-đai ốc, cam, chốt, then, ổ bi, lò xo,… một cách nhanh
chóng trong môi trường Assembly.
- Thiết kế nhanh và chính xác các loại khuôn mẫu (Mold Design).
- Thiết kế nhanh các đường ống phức tạp (Pipe&Tupe).
- Cho phép sử dụng thư viện các loại dây điện và cáp điện để chạy dây với bán
kính uốn phù hợp trong thiết kế điện (Cable &Wiring):.
- Mô phỏng động và động lực học của cơ cấu máy (Dynamic simulation).
- Phân tích ứng suất, tối ưu hóa thiết kế sản phẩm (Analysis Stress and
Optimize).
- Thiết kế nhanh các sản phẩm nhựa (Inventor plastic & tooling).
- Có thư viện chi tiết đa dạng và chuẩn hóa (Content center).

Liên kết được với nhiều phần mềm CAD khác.

SVTH: LÊ TRUNG KIÊN 11


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Hình 2.1: Logo AUTODESK INVENTOR


Những tiện ít của Autodesk Inventor mang lại hiệu quả khá cao trong việc xây
dựng mô hình, vì thế robot được xây dựng trên môi trường Inventor.

2.1.2 Tổng quan Arduino


2.1.2.1 Giới thiệu Arduino

Arduino là một bo mạch vi điều khiển do một nhóm giáo sư và sinh viên Ý thiết
kế và đưa ra đầu tiên vào năm 2005. Mạch Arduino được sử dụng để cảm nhận và
điều khiển nhiều đối tượng khác nhau. Nó có thể thực hiện nhiều nhiệm vụ từ lấy tín
hiệu từ cảm biến đến điều khiển đèn, động cơ, và nhiều đối tượng khác. Ngoài ra
mạch còn có khả năng liên kết với nhiều module khác nhau như module đọc thẻ từ,
ethernet shield, sim900A, ….để tăng khả ứng dụng của mạch.

Phần cứng bao gồm một board mạch nguồn mở được thiết kế trên nền tảng vi
xử lý AVR Atmel 8bit, hoặc ARM, Atmel 32-bit,… Hiện phần cứng của Arduino có
tất cả 6 phiên bản, tuy nhiên phiên bản thường được sử dụng nhiều nhất là Arduino
Uno và Arduino Mega. Arduino là vi điều khiển được sử dụng rộng rãi trên thế giới
với những ưu điểm như rẻ, tương thích được với nhiều hệ điều hành, chương trình
lập trình đơn giản, rõ ràng, dễ sử dụng, sử dụng mã nguồn mở và có thể kết hợp với
nhiều module khác nhau.

SVTH: LÊ TRUNG KIÊN 12


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Hình 2.2: Arduino Mega 2560 và Arduino Uno R3


2.1.2.2 Phần cứng của Arduino

Hình 2.3: Phần cứng của Arduino Uno R3


Mỗi loại Arduino sẽ có cấu hình phần cứng khác nhau, tuy nhiên nó vẫn có đầy
đủ các phần cơ bản như trên Arduino UNO R3, gồm có 6 phần cơ bản:

1. Cổng USB (loại B): Đây là cổng giao tiếp để ta upload code từ máy tính lên
vi điều khiển. Đồng thời nó cũng là giao tiếp serial để truyền dữ liệu giữa vi điều
khiển với máy tính.
2. Jack nguồn: Để chạy Arduino thì có thể lấy nguồn từ cổng USB ở trên, nhưng
không phải lúc nào cũng có thể cắm với máy tính được. Lúc đó, ta cần một nguồn từ
9V đến 12V.
3. Hàng header thứ nhất: Đánh số từ 0 đến 12 là hàng digital pin, nhận vào hoặc
xuất ra các tín hiệu số. Ngoài ra có một pin mass (GND) và pin điện áp tham chiếu
(AREF).

SVTH: LÊ TRUNG KIÊN 13


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

4. Hàng header thứ hai: Chủ yếu liên quan đến điện áp mass (GND), nguồn.
5. Hàng header thứ ba: Các chân để nhận vào hoặc xuất ra các tín hiệu analog.
Ví dụ như đọc thông tin của các thiết bị cảm biến.
6. Vi điều khiển AVR: Đây là bộ xử lý trung tâm của toàn bo mạch. Với mỗi
mẫu Arduino khác nhau thì con chip này khác nhau. Ở con Arduino Uno này thì sử
dụng ATMega328.

Đối với các Arduino khác tùy vào kích thước và phần cứng sẽ có cách sắp xếp
linh kiện khác nhau, tuy nhiên vẫn giữ cấu hình cơ bản như Arduino UNO R3, một
số Arduino có kích thước nhỏ sẽ không có jack cấp nguồn DC.

2.1.2.3 Một số loại Arduino điển hình

Arduino gồm rất nhiều phiên bản với các cấu hình khác nhau nhưng hầu như
vẫn đảm nhận được các chức năng cơ bản tương đương nhau.

Ba loại Arduino được sử dụng phổ biến nhất là Arduino UNO R3, Nano, Mega
2560:

Hình 2.4: Các Arduino phổ biến


Bên cạnh đó còn nhiều loại Arduino được nâng cao hơn nhắm đáp ứng nhu cầu
sử dụng cao hơn trong công nghiệp như: Arduino Yun, Arduino Ethernet, Arduino
Tre, Arduino Robot,…

SVTH: LÊ TRUNG KIÊN 14


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Hình 2.5: Một số Arduino cao cấp


2.1.2.4 Ứng dụng của Arduino

Arduino có nhiều ứng dụng trong đời sống, trong học tập phục vụ hỗ trợ những
người bắt đầu nghiên cứu với vi điều khiển, trong việc chế tạo các thiết bị điện tử
chất lượng cao. Một số ứng dụng có thể kể đến như:

- Lập trình Robot: Arduino chính là một phần quan trọng trong trung tâm xử lý
giúp điều khiển được hoạt động của Robot.
- Lập trình máy bay không người lái. Có thể nói đây là ứng dụng có nhiều kì
vọng trong tương lai.
- Game tương tác: Chúng ta có thể dùng Arduino để tương tác với Joystick, màn
hình,... để chơi các trò như Tetrix, phá gạch, Mario,... và nhiều game rất sáng tạo.
- Arduino cũng được ứng dụng trong máy in 3D và nhiều ứng dụng khác tùy
thuộc vào khả năng sáng tạo của người sử dụng.

Trong đề tài, sử dụng một board Arduino Mega 2560 (Master) làm trung tâm
giao tiếp với máy tính, truyền tính hiệu điều khiển và hai board Arduino Uno (Slave)
làm nhiệm vụ điều khiển trực tiếp hai động cơ truyền động cho robot. Có thể nói rằng
Arduino đảm nhiệm vai trò là bộ xử lý trung tâm cho toàn bộ Robot, vừa đảm nhiệm

SVTH: LÊ TRUNG KIÊN 15


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

vai trò nhận tín hiệu điều khiển từ máy tính vừa xử lý và xuất tín hiệu để động cơ
hoạt động.

2.1.3 Phần mềm IDE Arduino


2.1.3.1 Khái niệm IDE Arduino

Hình 2.6: Logo Arduino IDE


Arduino IDE được viết tắt (Arduino integreated Development Environment) là
một phần mềm mã nguồn mở chủ yếu được sử dụng để soạn thảo văn bản và biên
dịch mã vào module Arduino. Đây là một phần mềm Arduino chính thức, giúp cho
việc biên dịch mã trở nên dễ dàng mà ngay cả một người bình thường không có kiến
thức kỹ thuật cũng có thể làm được.

Nó có các phiên bản cho các hệ điều hành như MAC, Windows, Linux và chạy
trên nền tảng Java đi kèm với các chức năng và lệnh có sẵn đóng vai trò quan trọng
để gỡ lỗi, chỉnh sửa và biên dịch mã trong môi trường.

Có rất nhiều các module Arduino như Arduino Uno, Arduino Mega, Arduino
Leonardo, Arduino Micro và nhiều module khác. Mỗi module chứa một bộ vi điều
khiển trên bo mạch được lập trình và chấp nhận thông tin dưới dạng mã.

Mã chính, còn được gọi là sketch, được tạo trên nền tảng IDE sẽ tạo ra một file
Hex, sau đó được chuyển và tải lên trong bộ điều khiển trên bo. Môi trường IDE chủ
yếu chứa hai phần cơ bản: Trình chỉnh sửa và Trình biên dịch, phần đầu sử dụng để
viết mã được yêu cầu và phần sau được sử dụng để biên dịch và tải mã lên module
Arduino. Môi trường này hỗ trợ cả ngôn ngữ C và C ++. Khi người dùng viết mã và

SVTH: LÊ TRUNG KIÊN 16


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

biên dịch, IDE sẽ tạo file Hex cho mã. File Hex là các file thập phân Hexa được
Arduino hiểu và sau đó được gửi đến bo mạch bằng cáp USB. Mỗi board Arduino
đều được tích hợp một bộ vi điều khiển, bộ vi điều khiển sẽ nhận file hex và chạy
theo mã được viết. Các thư viện rất hữu ích để thêm chức năng bổ sung vào module
Arduino. Có một danh sách các thư viện bạn có thể thêm bằng cách nhấp vào nút
Sketch trong thanh menu và đi tới Include Library.

Hình 2.7: Giao diện Arduino IDE


2.1.3.2 Cấu trúc chương trình

Một chương trình Arduino cơ bản có 2 phần chính: void setup() và void loop().
Phần setup() gọi là phần “cài đặt” dùng để chuẩn bị cho một chương trình Arduino.
Các câu lệnh của phần này được đặt trong cặp dấu ngoặc nhọn ngay sau void setup().

Ví dụ: Cài đặt chân 13 của board Arduino hoạt động ở chế độ xuất tín hiệu thì
viết như sau:

void setup() {

// put your setup code here, to run once:

pinMode(13,OUTPUT);

SVTH: LÊ TRUNG KIÊN 17


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Phần loop() là nơi chứa mã thực thi chính. Những lệnh trong phần này sẽ chạy
liên tục. Các câu lệnh của phần này được đặt trong cặp dấu ngoặc nhọn ngay sau void
loop()

Ví dụ: Điều khiển một bóng LED nối với chân 13 nhấp nháy liên tục thì viết
như sau:

void loop() {

// put your main code here, to run repeatedly:

digitalWrite(13, HIGH);

delay(1000);

digitalWrite(13, LOW);

delay(1000);

2.1.4 Ngôn ngữ lập trình Python


2.1.4.1 Khái niệm Python

Python là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng,
do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991. Python được thiết kế
với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ. Python là ngôn ngữ có hình thức rất
bắt mắt , cấu trúc rõ ràng, thuận tiện cho người mới học lập trình. Cấu trúc của Python
còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu. Vào tháng 7
năm 2018, Van Rossum đã từ chức Leader trong cộng đồng ngôn ngữ Python sau 30
năm lãnh đạo.

Hình 2.8: Logo Python

SVTH: LÊ TRUNG KIÊN 18


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; do vậy
nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl. Python được phát triển trong
một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý.

Ban đầu, Python được phát triển để chạy trên nền Unix. Nhưng rồi theo thời
gian, Python dần mở rộng sang mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2,
Windows, Linux và các hệ điều hành khác thuộc họ Unix. Mặc dù sự phát triển của
Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nay vẫn
là tác giả chủ yếu của Python. Ông giữ vai trò chủ chốt trong việc quyết định hướng
phát triển của Python

+ Đặc điểm:

Ngôn ngữ lập trình đơn giản, dễ học: Python có cú pháp rất đơn giản, rõ ràng.
Nó dễ đọc và viết hơn rất nhiều khi so sánh với những ngôn ngữ lập trình khác như
C++, Java, C#. Python làm cho việc lập trình trở nên thú vị, cho phép bạn tập trung
vào những giải pháp chứ không phải cú pháp. Miễn phí, mã nguồn mở: có thể tự do
sử dụng và phân phối Python, thậm chí là dùng cho mục đích thương mại. Vì là mã
nguồn mở, bạn không những có thể sử dụng các phần mềm, chương trình được viết
trong Python mà còn có thể thay đổi mã nguồn của nó. Python có một cộng đồng rộng
lớn, không ngừng cải thiện nó mỗi lần cập nhật.

Khả năng di chuyển, chạy trên nhiều nền tảng: Các chương trình Python có thể
di chuyển từ nền tảng này sang nền tảng khác và chạy nó mà không có bất kỳ thay
đổi nào. Nó chạy liền mạch trên hầu hết tất cả các nền tảng như Windows, macOS,
Linux. Khả năng mở rộng và có thể nhúng: Giả sử một ứng dụng đòi hỏi sự phức tạp
rất lớn, bạn có thể dễ dàng kết hợp các phần code bằng C, C++ và những ngôn ngữ
khác (có thể gọi được từ C) vào code Python. Điều này sẽ cung cấp cho ứng dụng của
bạn những tính năng tốt hơn cũng như khả năng scripting mà những ngôn ngữ lập
trình khác khó có thể làm được.

SVTH: LÊ TRUNG KIÊN 19


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Ngôn ngữ thông dịch cấp cao: Không giống như C/C++, với Python, bạn không
phải lo lắng những nhiệm vụ khó khăn như quản lý bộ nhớ, dọn dẹp những dữ liệu
vô nghĩa... Khi chạy code Python, nó sẽ tự động chuyển đổi code sang ngôn ngữ máy
tính có thể hiểu. Bạn không cần lo lắng về bất kỳ hoạt động ở cấp thấp nào. Thư viện
tiêu chuẩn lớn để giải quyết những tác vụ phổ biến: Python có một số lượng lớn thư
viện tiêu chuẩn giúp cho công việc lập trình của bạn trở nên dễ thở hơn rất nhiều, đơn
giản vì không phải tự viết tất cả code.

Hướng đối tượng: Mọi thứ trong Python đều là hướng đối tượng. Lập trình
hướng đối tượng (OOP) giúp giải quyết những vấn đề phức tạp một cách trực quan.
Với OOP, bạn có thể phân chia những vấn đề phức tạp thành những tập nhỏ hơn bằng
cách tạo ra các đối tượng.

2.1.4.2 Lịch sử hình thành

Python 1: bao gồm các bản phát hành 1.x. Giai đoạn này, kéo dài từ đầu đến
cuối thập niên 1990. Từ năm 1990 đến 1995, Guido làm việc tại CWI (Centrum voor
Wiskunde en Informatica - Trung tâm Toán-Tin học tại Amsterdam, Hà Lan). Vì vậy,
các phiên bản Python đầu tiên đều do CWI phát hành. Phiên bản cuối cùng phát hành
tại CWI là 1.2.

Vào năm 1995, Guido chuyển sang CNRI (Corporation for National Research
Initiatives) ở Reston, Virginia. Tại đây, ông phát hành một số phiên bản khác. Python
1.6 là phiên bản cuối cùng phát hành tại CNRI.

Sau bản phát hành 1.6, Guido rời bỏ CNRI để làm việc với các lập trình viên
chuyên viết phần mềm thương mại. Tại đây, ông có ý tưởng sử dụng Python với các
phần mềm tuân theo chuẩn GPL. Sau đó, CNRI và FSF (Free Software Foundation -
Tổ chức phần mềm tự do) đã cùng nhau hợp tác để làm bản quyền Python phù hợp
với GPL. Cùng năm đó, Guido được nhận Giải thưởng FSF vì Sự phát triển Phần
mềm tự do (Award for the Advancement of Free Software).

SVTH: LÊ TRUNG KIÊN 20


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Phiên bản 1.6.1 ra đời sau đó là phiên bản đầu tiên tuân theo bản quyền GPL.
Tuy nhiên, bản này hoàn toàn giống bản 1.6, trừ một số sửa lỗi cần thiết.

Python 2: vào năm 2000, Guido và nhóm phát triển Python dời đến BeOpen.com
và thành lập BeOpen PythonLabs team. Phiên bản Python 2.0 được phát hành tại đây.
Sau khi phát hành Python 2.0, Guido và các thành viên PythonLabs gia nhập Digital
Creations.

Python 2.1 ra đời kế thừa từ Python 1.6.1 và Python 2.0. Bản quyền của phiên
bản này được đổi thành Python Software Foundation License. Từ thời điểm này trở
đi, Python thuộc sở hữu của Python Software Foundation (PSF), một tổ chức phi lợi
nhuận được thành lập theo mẫu Apache Software Foundation.

Python 3, còn gọi là Python 3000 hoặc Py3K: Dòng 3.x sẽ không hoàn toàn
tương thích với dòng 2.x, tuy vậy có công cụ hỗ trợ chuyển đổi từ các phiên bản 2.x
sang 3.x. Nguyên tắc chủ đạo để phát triển Python 3.x là "bỏ cách làm việc cũ nhằm
hạn chế trùng lặp về mặt chức năng của Python". Trong PEP (Python Enhancement
Proposal) có mô tả chi tiết các thay đổi trong Python.

Đề tài sử dụng Python biên bản 3.7.9 cho việc xây dựng chương trình chatbot.

2.1.4.3 Ứng dụng Python

Như đã mô tả giới thiệu, về Python là ngôn ngữ lập trình hướng đối tượng bậc
cao, dùng để phát triển website và nhiều ứng dụng khác. Với cú pháp cực kì đơn giản,
Python là lựa chọn hoàn hảo cho các lập trình viên trong nhiều lĩnh vực lập trình phần
mềm, sau đây là những ứng dụng nỗi bật và được sử dụng rộng rãi.

Xây dựng website với Framework của Python: Các web frameworks Django
và Flask ngày càng trở nên phố biến thì việc phát triển web bằng Python trở nên dễ
dàng hơn bao giờ hết. Flask cung cấp cho người dùng các thành phần cốt lõi thường
được sử dụng nhất của khung ứng dụng web như URL routing, request & response
object, template... Django được thiết kế để giúp các nhà phát triển đưa các ứng dụng

SVTH: LÊ TRUNG KIÊN 21


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

từ ý tưởng đến hoàn thành càng nhanh càng tốt, nó có đầy đủ các thư viện/module
cần thiết.

Python dùng để tạo nguyên mẫu phần mềm: Bên cạnh mảng lập trình ứng dụng
web, Python còn được ứng dụng trong tạo nguyên mẫu phần mềm. Nếu nói về tốc độ
thì Python sẽ chậm hơn so với các ngôn ngữ biên dịch như Java và C++. Python sẽ
không phải lựa chọn tốt nhất nếu bạn đang bị giới hạn về nguồn lực, yêu cầu hiệu quả
cao. Tuy nhiên, bên cạnh đó Python lại là một ngôn ngữ lập trình tuyệt vời để tạo ra
những nguyên mẫu - bản chạy thử.

Hình 2.9: Một số ứng dụng Python


Ứng dụng trong khoa học và tính toán: Ngoài việc lập trình ứng dụng web, tạo
nguyên mẫu phần mềm, Python còn được ứng dụng trong khoa học và tính toán.
Python sở hữu thư viện cho khoa học, tính toán số liệu như NumPy, SciPy. Chúng
được sử dụng cho mục đích chung trong việc tính toán. Bên cạnh đó, trong thư viện

SVTH: LÊ TRUNG KIÊN 22


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

của mình, Python còn có EarthPy cho khoa học Trái Đất, AstroPy cho thiên văn
học... Python cũng được ứng dụng trong khai thác dữ liệu, deep learning, machine
learning.

Viết tool để tự động hóa công việc: Chắc hẳn những ai đam mê công nghệ chắc
chắn biết những tool thú vị ở trong Google Chrome Extension hoặc nhiều tool hữu
ích bạn có thể download trên bất kỳ trang web nào. Nếu như trước kia, những tool
này cần phải viết bằng các ngôn ngữ khó như Java, PHP... thì hiện nay, với Python,
tốc độ sản xuất tool có thể tăng lên gấp 10 lần. Python sẽ giúp bạn nhanh chóng tạo
ra các công cụ như tạo từ điển, công cụ dò quét trang web, công cụ xử lý dữ liệu file,
gửi email...

Ngôn ngữ lập trình Python là một trong những ngôn ngữ lập trình được sử dụng
nhiều nhất trong việc phát triển trí tuệ nhân tạo. Python được nhiều người lựa chọn
để lập trình trí tuệ nhân tạo vì tính phổ biến, dễ học và khả năng tương tích với công
nghệ 4.0. Nó có thể được sử dụng một cách dễ dàng với các cấu trúc dữ liệu và các
thuật toán AI được sử dụng thường xuyên khác. Rất nhiều thư viện Python có thể và
đang được sử dụng cho lĩnh vực Machine Learning, Deep Learning và AI. Có thể kể
tới: Tensorflow, Pytorch, Theano và PyTorce. Càng nhiều lập trình viên làm việc
trong lĩnh vực này thì số lượng nguồn (resources) và thư viện (libraries) lại càng tăng
lên.

2.1.5 Phần mềm PyCharm


2.1.5.1 Khái niệm PyCharm

Phần mềm PyCharm cung cấp một bộ công cụ hoàn chỉnh cho các nhà phát triển
Python chuyên nghiệp. PyCharm được xây dựng xung quanh một trình soạn thảo hiểu
mã sâu sắc, và một trình sửa lỗi cho cái nhìn rõ ràng về hoạt động của mã. PyCharm
cung cấp khả năng tích hợp với các công cụ cộng tác như hệ thống kiểm soát phiên
bản và các tracker. Trình biên tập chuyên nghiệp mở rộng các yếu tố cần thiết bằng

SVTH: LÊ TRUNG KIÊN 23


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

cách tích hợp liền mạch với các khuôn khổ web, các công cụ JavaScript, ảo hóa và
hỗ trợ containerization.

Hình 2.10: Logo PyCharm


Một khía cạnh quan trọng của chương trình là hiểu được nền tảng mã mà bạn
đang đưa vào. PyCharm đảm bảo bạn có thể khám phá dự án của bạn chỉ với một vài
thao tác trên phím, nó cung cấp cho bạn một cái nhìn tổng quan về cấu trúc dự án và
cho phép bạn truy cập vào các tài liệu có liên quan ngay từ trình soạn thảo. Hiểu được
một nền tảng code nhanh hơn có nghĩa là thúc đẩy nhanh hơn quá trình phát triển của
bạn.

Pycharm là một giải pháp phù hợp cho Python developers vì IDE này hỗ trợ
nhiều extensions, môi trường ảo (Virtual Environment), nhiều tính năng thông minh
như bộ code completion, tự động thụt lề, phát hiện văn bản trùng lặp và kiểm tra lỗi.
Ngoài ra còn có các tính năng tìm kiếm mã nguồn thông minh để tìm kiếm từng từ
một trong nháy mắt.

2.1.5.2 Ứng dụng

Giúp chúng ta viết mã chất lượng cao hơn. Nó bao gồm các lược đồ màu (color
schemes) cho từ khóa, lớp và hàm. Điều này giúp tăng khả năng đọc và hiểu mã. Giúp
xác định lỗi một cách dễ dàng. Cung cấp tính năng tự động hoàn thành và hướng dẫn
để hoàn thành mã.

SVTH: LÊ TRUNG KIÊN 24


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Nó giúp các nhà phát triển chỉnh sửa và cải thiện mã với ít nỗ lực và thời gian
hơn. Với điều hướng mã, lập trình viên có thể dễ dàng điều hướng đến một hàm, lớp
hoặc tệp. Một lập trình viên có thể xác định vị trí một phần tử, một ký hiệu hoặc một
biến trong mã nguồn trong thời gian ngắn. Hơn nữa, bằng cách sử dụng chế độ thấu
kính, nhà phát triển có thể kiểm tra và vá lỗi toàn bộ mã nguồn một cách kỹ lưỡng.

Nó có lợi thế là thực hiện các thay đổi hiệu quả và nhanh chóng đối với cả biến
cục bộ (local variables) và biến toàn cục (global variables). Tái cấu trúc trong
PyCharm cho phép các nhà phát triển cải thiện cấu trúc bên trong mà không thay đổi
hiệu suất bên ngoài của code. Pycharm cũng giúp phân chia các lớp và chức năng mở
rộng tốt hơn với sự trợ giúp của phương pháp trích xuất.

Nó giúp các nhà phát triển tạo các ứng dụng web bằng Python. Nó hỗ trợ các
công nghệ web phổ biến như HTML, CSS và JavaScript. Các nhà phát triển có lựa
chọn chỉnh sửa trực tuyến với IDE này. Đồng thời, họ có thể xem trước trang web đã
cập nhật/đã tạo. Các nhà phát triển có thể theo dõi các thay đổi trên trình duyệt web
trực tiếp. PyCharm cũng hỗ trợ AngularJS và NodeJS để phát triển các ứng dụng web.

PyCharm hỗ trợ các thư viện khoa học của Python như Matplotlib, NumPy và
Anaconda. Các thư viện khoa học này giúp xây dựng các dự án về Khoa học Dữ liệu
và Học máy. Hỗ trợ các biểu đồ tương tác giúp các nhà phát triển hiểu dữ liệu tốt hơn.
Nó có khả năng tích hợp với những công cụ khác nhau như IPython, Django và Pytest.
Sự tích hợp này giúp thúc đẩy các giải pháp độc đáo.

2.1.6 Thuật toán học sâu (Deep Learning)


2.1.6.1 Giới thiệu

Deep learning được bắt nguồn từ thuật toán Neural network vốn xuất phát chỉ
là một ngành nhỏ của machine learning. Deep Learning là một chi của ngành máy
học dựa trên một tập hợp các thuật toán để cố gắng mô hình dữ liệu trừu tượng hóa ở
mức cao bằng cách sử dụng nhiều lớp xử lý với cấu trúc phức tạp, hoặc bằng cách

SVTH: LÊ TRUNG KIÊN 25


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

khác bao gồm nhiều biến đổi phi tuyến. Nó được lấy cảm hứng từ cấu trúc của bộ não
con người. Bộ não con người bao gồm các tế bào thần kinh xử lý và truyền thông tin
giữa chúng. Các tế bào thần kinh này được kết nối tinh vi để nhận đầu vào và tạo ra
đầu ra giữa các tế bào thần kinh. Khi mắt chúng ta nhìn thấy một con mèo, hình ảnh
con mèo được truyền qua một sợi trục đến một tế bào thần kinh khác và sau đó não
của chúng ta nhận ra một con mèo. Mạng nơron được lấy cảm hứng từ các nơron đầu
vào, mạng truyền thông tin, các nơron thực hiện tính toán và các nơron đầu ra.

Các thuật toán học sâu đã được phát triển thành công trong nhiều ứng dụng như
nhận dạng hình ảnh hoặc xử lý ngôn ngữ tự nhiên. Ví dụ, một chiếc ô tô tự lái sử
dụng sâu học rộng rãi trong việc nhận dạng các đối tượng chuyển động, nghe ngôn
ngữ, phát âm ngôn ngữ, v.v. Các ngân hàng và công ty bảo hiểm sử dụng học sâu để
phát hiện các giao dịch gian lận. Xem “ Nhận dạng hình ảnh là gì? “Và“ Dễ dàng phát
hiện bất thường bằng mã tự động ”.

Hình 2.11 Deep learning trong mảng AI

SVTH: LÊ TRUNG KIÊN 26


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Ví dụ: Tại sao bạn biết một bức ảnh là ảnh con mèo hay ảnh con chó? Đối với
con người, việc định nghĩa điều này vô cùng đơn giản (Ví dụ: Tai mèo nhọn, mỏ chó
thì dài ra, …), tuy nhiên, bạn lại rất khó khăn để biểu diễn những thứ này dưới các
dòng lệnh của máy tính. Nhưng nhờ vào Deep Learning thì vấn đề đó được giải quyết
một cách cụ thể.

Deep learning là một phần của Machine Learning, một ngành rất rộng và nặng
về toán, gồm rất nhiều thuật toán và mỗi thuật toán có ứng dụng riêng tùy vào bài
toán:

•  Linear Regression
• Logistic Regresstion
• Decision Tree and Random Forest
• Naive Bayes
• Support Vector Machines
• K-Nearest Neighbors
• Principal component analysis (PCA)
• Neural network
• .....

SVTH: LÊ TRUNG KIÊN 27


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

2.1.6.2 Phương thức hoạt động của Deep learning

Hình 2.12: Phương thức hoạt động của Deep learning


Cách thức hoạt động của thuật toán Deep Learning diễn ra như sau: Các dòng
thông tin sẽ được trải qua nhiều lớp cho đến lớp sau cùng. Lấy quy trình học của con
người làm ví dụ cụ thể. Qua các lớp đầu tiên sẽ tập trung vào việc học các khái niệm
cụ thể hơn trong khi các lớp sâu hơn sẽ sử dụng thông tin đã học để nghiên cứu và
phân tích sâu hơn trong các khái niệm trừu tượng. Quy trình xây dựng biểu diễn dữ
liệu này được gọi là trích xuất tính năng.

Kiến trúc phức tạp của việc học sâu được cung cấp từ mạng lưới thần kinh sâu
với khả năng thực hiện trích xuất tính năng tự động. Ngược lại, trong học máy thông
thường còn gọi là học nông, nhiệm vụ này được thực hiện khi truy xuất các thuật toán
cụ thể.

SVTH: LÊ TRUNG KIÊN 28


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

2.2 Phương pháp nghiên cứu


2.2.1 Phương thức truyền dữ liệu I2C
2.2.1.1 Giới thiệu về giao tiếp I2C

I2C là tên viết tắt của cụm từ tiếng anh “Inter-Integrated Circuit”. Nó là một
giao thức giao tiếp được phát triển bởi Philips Semiconductors để truyền dữ liệu giữa
một bộ xử lý trung tâm với nhiều IC trên cùng một board mạch chỉ sử dụng hai đường
truyền tín hiệu.

Do tính đơn giản của nó nên loại giao thức này được sử dụng rộng rãi cho giao
tiếp giữa vi điều khiển và mảng cảm biến, các thiết bị hiển thị, thiết bị IoT,
EEPROMs, v.v …

I2C là giao thức truyền tin nối tiếp đồng bộ sử dụng 2 dây: SDA và SCL trong
đó SDA (serial data) là đường truyền nhận dữ liệu và SCL(serial clock) là đường
truyền xung nhịp. Các đường SDA và SCL trên các thiết bị có cấu hình cực máng hở
(open-drain) hoặc collector hở (open-collector) vì thế chúng cần điện trở kéo lên
(pull-up resistor) khoảng từ 1 đến 10(kΩ). Ở trạng thái nghỉ thì 2 chân này ở mức
cao. Lý do sử dụng một hệ thống cực máng hở (open drain) là để không xảy ra hiện
tượng ngắn mạch, điều này có thể xảy ra khi một thiết bị cố gắng kéo đường dây lên
cao và một số thiết bị khác cố gắng kéo đường dây xuống thấp

Tốc độ truyền: 100Kbits/s ở chế độ chuẩn (Standard mode), có thể lên tới
400Kbits/s ở chế độ nhanh(Fast mode) và cao nhất là 3,4Mbits/s ở chế độ cao tốc
(High-speed mode).

Trên đường truyền giao tiếp I2C: Có thể là một chủ-một tớ (One Master One
Slave), một chủ- nhiều tớ (One Master-Multi Slave) hoặc nhiều chủ-nhiều tớ (Multi
Master –Multi Slave). Một thiết bị tớ Slave cũng có thể trở thành chip chủ nếu nó có
khả năng.

SVTH: LÊ TRUNG KIÊN 29


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Hình 2.13: Sơ đồ giao tiếp I2C


2.2.1.2 Đặc điểm

Sau đây là một số đặc điểm quan trọng của giao thức giao tiếp I2C:

- Chỉ cần có hai đường bus (dây) chung để điều khiển bất kỳ thiết bị / IC nào
trên mạng I2C
- Không cần thỏa thuận trước về tốc độ truyền dữ liệu như trong giao tiếp
UART. Vì vậy, tốc độ truyền dữ liệu có thể được điều chỉnh bất cứ khi nào cần thiết
- Cơ chế đơn giản để xác thực dữ liệu được truyền
- Sử dụng hệ thống địa chỉ 7 bit để xác định một thiết bị / IC cụ thể trên bus I2C
- Các mạng I2C dễ dàng mở rộng. Các thiết bị mới có thể được kết nối đơn giản
với hai đường bus chung I2C.
2.2.2 Phương thức truyền dữ liệu UART
2.2.2.1 Giới thiệu về giao tiếp UART

UART có tên đầy đủ là Universal Asynchronous Receiver – Transmitter. Nó là


một mạch tích hợp được sử dụng trong việc truyền dẫn dữ liệu nối tiếp giữa máy tính
và các thiết bị ngoại vi.

SVTH: LÊ TRUNG KIÊN 30


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

UART có chức năng chính là truyền dữ liệu nối tiếp. Trong UART, giao tiếp
giữa hai thiết bị có thể được thực hiện theo hai phương thức là giao tiếp dữ liệu nối
tiếp và giao tiếp dữ liệu song song.

Trong giao tiếp UART cơ bản, thiết bị truyền và thiết bị nhận giao tiếp theo
cách thức như sau: Phần cứng – hardware- UART sẽ chuyển đổi dữ liệu song song
nhận được từ vi xử lý, vi điều khiển và chuyển chúng thành dữ liệu nối tiếp. Dữ liệu
nối tiếp này sẽ được truyền đến thiết bị nhận và tại đây, hardware UART sẽ chuyển
đổi ngược lại thành dữ liệu song song để truyền về vi điều khiển, vi xử lý của thiết bị
nhận.

Hình 2.14: Cách truyền dữ liệu UART


Các chân sử dụng cho giao tiếp UART được gọi là TX ở thiết bị truyền và RX
ở thiết bị nhận. Đồng thời, có các thanh ghi – shift registers – được hiểu như là một
phần của UART hardware (2 loại thanh ghi được sử dụng ở đây là: Transmitter Shift
Register và Receiver Shift Register).

Trong giao tiếp UART, dữ liệu được truyền không đồng bộ, nghĩa là không cần
tín hiệu clock hoặc các tín hiệu timming khác để đồng bộ, kiểm tra dữ liệu giữa thiết
bị truyền và thiết bị nhận. Thay vào đó, UART sử dụng các bit đặc biệt được gọi là
Start và Stop bits.

SVTH: LÊ TRUNG KIÊN 31


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Các bits này được thêm vào đầu và cuối gói dữ liệu. Các bits được thêm vào sẽ
giúp bên nhận xác định được phần nào là phần dữ liệu thực tế cần nhận.

Bộ phận truyền UART sẽ nhận dữ liệu từ vi điều khiển thông qua bus điều khiển
và bus dữ liệu. Với dữ liệu này, UART sẽ thêm vào Start, Parity và Stop bits theo cầu
hình và convert nó thành 1 gói dữ liệu. Gói dữ liệu này sẽ được chuyển đổi từ song
song sang nối tiếp được lưu dưới các thanh ghi – shift register và truyền đi từng bit
một qua chân TX.

Thiết bị nhận UART sẽ nhận dữ liệu từ chân RX và xác định đâu là dữ liệu thực
sau khi loại trừ start và stop bits. Parity bit được sử dụng để kiểm tra độ chính xác
của dữ liệu. Phụ thuộc vào sự chia cắt của start, parity và stop bits từ gói dữ liệu, tất
cả dữ liệu sẽ được chuyển từ nối tiếp sang song song và được lưu dưới các thanh ghi
– shift register. Những dữ liệu song song này sẽ được truyền đến vi điều khiển thông
qua data bus.

Như đã đề cập lúc đầu, giao tiếp UART không cần sử dụng tín hiệu clock để
đồng bộ dữ liệu. Tuy nhiên có một số quy luật cần phải tuân thủ để tránh các lỗi trong
quá trình truyền nhận dữ liệu qua UART. Các quy luật này bao gồm: Bits đồng bộ
(Start and Stop bits), Parity Bit, Data Bits, Baud Rate – Tốc độ truyền nhận

Chúng ta đã tìm hiểu các bits đồng bộ và parity bit and data bits. Tuy nhiên, có
1 yếu tố quan trọng trong quá trình truyền nhận dữ liệu UART là Baud Rate.

Baud Rate: là tốc độ dùng để truyền và nhận dữ liệu. Cả thiết bị truyền và thiết
bị nhận cần giao tiếp trên cùng 1 tốc độ để quá trình truyền nhận được hoàn thành.

Baud Rate được đo bởi số bit / giây (bits per second). Một số baud rates tiêu
chuẩn là: 4800 bps, 9600 bps, 19200 bps, 115200 bps, …. Trong đó, tốc độ 9600 bps
là tốc độ thường được sử dụng nhiều nhất.

SVTH: LÊ TRUNG KIÊN 32


CHƯƠNG 2: ĐỐI TƯỢNG VÀ PHƯƠNG PHÁP NGHIÊN CỨU

Hình 2.15: Sơ đồ biểu diễn truyền data


Cùng tìm hiểu 2 block data: 00101101 and 11010011 được truyền như thế nào
qua UART. Các thông số bus UART là: 9600 8N1 nghĩa là tốc độ 9600 bps với 8 bits
data, không có bit parity và 1 stop bit. Trong ví dụ này, chúng ta sẽ không có parity
bit.

2.2.2.2 Đặc điểm

+ Đặc điểm thiết yếu:

➢ Chỉ cần 2 dây để truyền nhận song song dữ liệu


➢ Không cần tín hiệu clock hay bất kỳ tín hiệu đồng bộ nào khác
➢ Parity bit đảm bảo dữ liệu được truyền đi chính xác

Tuy nhiên vẫn còn bị hạn chế bởi :

➢ Kích thước gói dữ liệu bị giới hạn


➢ Tốc độ truyền chậm hơn khi so sánh với kiểu truyền dữ liệu song song
➢ Thiết bị truyền và thiết bị nhận cần phải đồng nhất một số thông số với nhau

SVTH: LÊ TRUNG KIÊN 33


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

3.1 Thiết kế mô hình cơ khí


3.1.1 Cơ sở thiết kế

Mô hình quản lý và thu thập tài liệu được thiết kế trong luận văn gồm có các bộ
phận chính như sau:

Bộ phận khung, vỏ: Phần khung, vỏ có tác dụng liên kết các bộ phận khác của
robot. Đồng thời, nó cũng có tác dụng trong việc tăng độ cứng vững, bảo vệ robot
khỏi các tác động bên ngoài.

Bộ phận công suất: Bộ phận công suất có tác dụng cung cấp năng lượng cho
robot hoạt động. Bộ phận này phải cung cấp công suất đủ lớn cho toàn bộ hệ thống.
Do đó, robot được sử dụng pin Lipo Lithium làm nguồn cung cấp năng lượng chính
cho toàn hệ thống.

Bộ phận truyền động: Robot cần được truyền động để có thể cuốn tài liệu vào
hộp cùng với bộ phận chia ngăn cho tài liệu và bộ phận cửa sau chịu trách nhiệm lấy
tài liệu khi đầy.

Bộ phận mạch điều khiển: Module điều khiển trung tâm có vai trò điều khiển
hoạt động của robot thông qua giao tiếp với máy tính qua cổng COM. Board Arduino
Mega 2560 được sử dụng làm Master làm nhiệm vụ điều khiển động cơ thu tài liệu
và nhận tín hiệu từ máy tính cùng với Arduino Uno làm Slave nhận tín hiệu từ Master
để điều khiển động cơ kéo cửa sau lên.

3.1.2 Bản thiết kế mô hình trên Inventor

Bản vẽ tổng thể mô hình quản lý tài liệu:

SVTH: LÊ TRUNG KIÊN 34


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

Hình 3.1: Bản vẽ tổng thể mô hình quản lý tài liệu

SVTH: LÊ TRUNG KIÊN 35


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

Hình 3.2: Bản vẽ bộ phận cuốn giấy vào

SVTH: LÊ TRUNG KIÊN 36


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

Hình 3.3: Bản vẽ bộ phận chuyển đổi ngăn chứa

SVTH: LÊ TRUNG KIÊN 37


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

Hình 3.4: Bản vẽ bộ phận mở cửa lấy giấy ra

SVTH: LÊ TRUNG KIÊN 38


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

3.1.3 Thiết kế cơ khí


3.1.3.1 Thiết kế khung trữ tài liệu

Phân khung là nơi lắp ráp các chi tiết của robot. Yêu cầu cơ bản của khung
là độ cứng vững, độ chính xác về vị trí tương đối của các bề mặt lắp ghép và khả
năng chịu tải tốt. Chính vì thế khung xe được chế tạo bằng nhôm định hình, các
thanh nhôm được lắp với nhau bằng các ke góc. Nhôm định hình có khối lượng
nhẹ, các gân tăng cứng nên khả năng chịu tải đảm bảo. Nhôm được chọn cho thiết
kế là nhôm định hình 20x20cm.

3.1.3.2 Cơ cấu thu tài liệu vào

Hình 3.5:Cơ cấu thu tài liệu được thiết kế trên inventor
Cơ cấu hoạt động khi có tính hiệu từ máy tính và khi cảm biến phát hiện tài liệu
thì động cơ DC dẫn động hai trục quay ngược chiều nhau để cuốn tài liệu vào cơ cấu
phải đảm bảo khi giấy vào không quá nhanh và bị kẹt nên tôi chọn động cơ có tỉ số
truyền là 1: 120 moment 1 Kg.Cm và điện áp là 3-9V.

SVTH: LÊ TRUNG KIÊN 39


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

Hình 3.6: Cơ cấu thu tài liệu thực tế


3.1.3.3 Cơ cấu chuyển đổi ngăn chứa tài liệu

Hình 3.7: Cơ cấu chuyển đổi ngăn chứa tài liệu được thiết kế trên inventor
Cơ cấu hoạt động khi có tính hiệu từ máy tính cho phép tài liệu chứa ở ngăn nào
thì động cơ xoay một góc phù hợp để thanh gạt lên hoặc xuống để chuyển ngăn. Để
thanh gạt xoay đúng vị trí tôi dùng động cơ bước 28BYJ.

SVTH: LÊ TRUNG KIÊN 40


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

Hình 3.8: Cơ cấu chuyển đổi ngăn chứa tài liệu thực tế
3.1.3.4 Cơ cấu mở cửa lấy tài liệu

Hình 3.9: Cơ cấu mở cửa lấy tài liệu thiết kế trên inventor
Cơ cấu hoạt động khi có sự cho phép của máy tính hoặc thẻ RFID chủ thì động
cơ sẽ kéo cửa lên để có thể lấy tài liệu cả hai ngăn. Cơ cấu phải đảm bảo không bị kẹt
cửa và phải kín lúc đóng lại nên tôi chọn hai động cơ bước 28BYJ để kéo cùng lúc
hai bên cửa.

SVTH: LÊ TRUNG KIÊN 41


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

Hình 3.10: Cơ cấu mở cửa lấy tài liệu thực tế


3.2 Thiết kế mạch điện
3.2.1 Lưu đồ giải thuật và sơ đồ mạch điều khiển robot bằng chatbot

Hình 3.11: Lưu đồ giải thuật điều khiển robot từ giọng nói

SVTH: LÊ TRUNG KIÊN 42


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

Hình 3.12: Sơ đồ khối mạch điện điều khiển


Giải thích:

Đầu tiên máy tính sẽ nghe và xử lý thông qua chương trình tính toán và đưa ra
ý định để máy tính trả lời khi máy tính phân tích ý định là muốn gửi tài liệu vào ngăn
một thì chương trình sẽ gửi tính hiệu xuống vi điều khiển thông qua giao tiếp UART
làm cơ cấu thu tài liệu hoạt động và đưa tài liệu vào. Tương tự với ngăn một thì cơ
cấu đổi ngăn chuyển cần gạt lên sau đó cơ cấu thu tài liệu hoạt động cuốn tài liệu vào
ngăn hai sau khi cuốn xong thì cần gạt trở lại vị trí ban đầu. Còn muốn mở cửa sau
thì máy tính yêu cầu người dùng nhập tài khoản truy cập mới khởi động cơ cấu mở
cửa.

Robot cần có một mạch điện thành một hệ thống do đó mạch điện robot cần
đảm bảo yêu cầu sau: Đảm bảo đủ công suất cho Robot hoạt động, ổn định và tính
linh hoạt cao trong việc thay thế sử dụng. Để làm được điều đó tôi đã dùng phần mềm
thiết kế mạch điện Altium để thực hiện và Fritzing thực hiện sơ đồ đấu nối dây.

SVTH: LÊ TRUNG KIÊN 43


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

Hình 3.13: Sơ đồ Layout mạch điều khiển hai lớp

Hình 3.14: Sơ đồ đấu nối dây


Mạch điều khiển sau khi gia công:

SVTH: LÊ TRUNG KIÊN 44


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

Hình 3.15: Mạch điện sau khi gia công


3.2.2 Arduino Mega2560 (Master)

Trong đề tài, Arduino Mega 2560 được dùng làm trung tâm quản lý điều khiển
(Master) nhận tín hiệu điều khiển từ Python thông qua giao tiếp cổng COM và gửi dữ
liệu xuống cho các Slave điều khiển động cơ.

❖ Thông số kỹ thuật:
- Vi điều khiển: ATmega 2560.
- Điện áp hoạt động: 5V.
- Nguồn ngoài (jack tròn DC) 7-9V. Không nên cấp nguồn 12v vì sẽ gây hỏng
IC ổn áp.
- Số chân Digital: 54 ( 15 chân PWM).
- Số chân Analog: 16.
- Giao tiếp UART: 4 bộ Serial.
- Giao tiếp SPI: 1 bộ ( chân 50 đến chân 53) dùng với thư viện SPI của Ardunio.
- Giao tiếp I2C: 1 bộ.
- Ngắt ngoài: 6 chân.
- Bộ nhớ Flash: 256 Kb, 8Kb sử dụng cho Bootloader.
- SRAM: 8 Kb.

SVTH: LÊ TRUNG KIÊN 45


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

- Xung clock: 16MHz.


❖ Chức năng của các chân Arduino Mega 2560
- Chân Vin: Đây là điện áp đầu vào được cung cấp cho board mạch Arduino
Uno. Khác với chân 5V được cung cấp qua cổng USB. Chân này được sử dụng để
cung cấp điện áp toàn mạch thông qua jack nguồn, thông thường khoảng từ 7 đến
12VDC.
- Chân 5V: Chân này được sử dụng để cung cấp điện áp đầu ra. Arduino Uno
được cấp nguồn bằng ba cách đó là USB, chân Vin của board mạch hoặc jack nguồn.
- USB: Dùng để giao tiếp với máy tính thông qua cáp USB chúng ta có thể nạp
chương trình cho Arduino hoạt động. Ngoài ra, USB còn là nguồn cho Arduino nó
hỗ trợ điện áp khoảng 5 VDC trong khi Vin và jack nguồn hỗ trợ điện áp trong khoảng
từ 7V đến 20VDC.
- Chân GND: Chân mass chung cho toàn mạch Arduino.
❖ Chân điều khiển:

RESET: Arduino Mega Mega 2560 có sẵn mạch reset với nút ấn để thiết lập lại
hệ thống và chân này có thể được sử dụng khi kết nối các thiết bị khác để thiết lập lại
bộ điều khiển.

XTAL1, XTAL2: Thạch anh(16Mhz) được kết nối với xung clock cung cấp cho
bộ điều khiển.

AREF: Chân này được dùng khi sử dụng ADC để chuyển đổi tín hiệu với điện
áp tham chiếu bên ngoài mà không muốn sử dụng điện áp tham chiếu nội bộ 1.1V
hoặc 5V.

Các chân Digital (70): Chân số: Từ 0-53 (số) và 0-15 (tương tự) có thể được sử
dụng làm đầu vào hoặc đầu ra cho thiết bị.

Chân tương tự (16):

SVTH: LÊ TRUNG KIÊN 46


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

Từ 0-15 (analog) có thể được sử dụng như chân đầu vào tương tự cho bộ ADC,
nếu không sử dụng nó hoạt động như chân digital bình thường

❖ Chân có Chức năng thay thế:

Chân SPI: Chân 22-SS, 23_SCK, 24-MOSI, 25-MISO

Các chân này được sử dụng cho giao tiếp nối tiếp với giao thức SPI để liên lạc
giữa 2 thiết bị trở lên. SPI cho phép bit phải được thiết lập để bắt đầu giao tiếp với
các thiết bị khác.

Chân I2C: Chân 20 cho SDA và 21 cho SCK (Tốc độ 400khz) để cho phép liên
lạc hai dây với các thiết bị khác.

Chân PWM : Chân 2-13 có thể được sử dụng như đầu ra PWM với hàm
analogWrite () để ghi giá trị PWM từ 0-255.

Chân UART: Chân này được sử dụng cho giao tiếp nối tiếp giữa bo mạch với
máy tính hoặc hệ thống khác để chia sẻ và ghi dữ liệu.

❖ Chân ngắt :
- Chân digital: 0, 22, 23, 24, 25, 10, 11 ,12 ,13 ,15 ,14.
- Chân analog: 6 ,7 ,8 ,9, 10, 11, 12, 13 ,14, 15.
- Chân này được sử dụng để ngắt. Để kích hoạt chân ngắt phải cài đặt bật ngắt
toàn cục.
- Chân ngắt phần cứng: Chân 18 - 21,2,3 ngắt phần cứng được sử dụng cho các
ứng dụng ngắt. Ngắt phần cứng phải được bật với tính năng ngắt toàn cục để ngắt
quãng từ các thiết bị khác.

SVTH: LÊ TRUNG KIÊN 47


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

Hình 3.16: Sơ đồ chân Arduino Mega 2560


3.2.3 Arduino Uno R3 (Slave)

Trong đề tài, Arduino Uno R3 được dùng làm Slave nhận tín hiệu từ Master để
điều khiển động cơ thông qua giao tiếp I2C.

Thông số kỹ thuật:

- Chip: ATmega328P.
- Nguồn cấp: từ 7 đến 12 VDC.
- Dòng max chân 5V: 500 mA.
- Dòng max chân 3.3V: 50 mA.
- Dòng max chân I/O: 30 mA.
- Số chân Digital: 14 chân (Bao 6 chân PWM).

SVTH: LÊ TRUNG KIÊN 48


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

- Số chân Analog: 6 chân.


- Flash Memory: 32 kb.
- SRAM: 2 kb.
- EEPROM: 1 kb.
- Clock Speed: 16 Mhz.
- Kích thước: 68.6 x 53.4mm.
- Khối lượng: 25 gam.
❖ Chức năng của các chân Arduino Uno
- Chân Vin: Đây là điện áp đầu vào được cung cấp cho board mạch Arduino
Uno. Khác với chân 5V được cung cấp qua cổng USB. Chân này được sử dụng để
cung cấp điện áp toàn mạch thông qua jack nguồn, thông thường khoảng từ 7 đến
12VDC.
- Chân 5V: Chân này được sử dụng để cung cấp điện áp đầu ra. Arduino Uno
được cấp nguồn bằng ba cách đó là USB, chân Vin của board mạch hoặc jack nguồn.
- USB: Dùng để giao tiếp với máy tính thông qua cáp USB chúng ta có thể nạp
chương trình cho Arduino hoạt động. Ngoài ra, USB còn là nguồn cho Arduino nó
hỗ trợ điện áp khoảng 5 VDC trong khi Vin và jack nguồn hỗ trợ điện áp trong khoảng
từ 7V đến 20VDC.
- Chân GND: Chân mass chung cho toàn mạch Arduino.
- Chân Reset: Để thiết lập lại toàn bộ và đưa chương trình đang chạy trở về ban
đầu.
- Chân này rất hữu ích khi Arduino bị treo khi đang chạy chương trình.
- Các chân Digital: Có 14 chân Digital trên board mạch Arduino Uno được ký
hiệu từ 0 đến 13 với chức năng input và output sử dụng các hàm pinMode(),
digitalWrite(), digitalRead() để điều khiển các chân này.
- Chân PWM: Được cung cấp bởi các chân 3,5,6,9,10,11. Các chân này được
cấu hình để cung cấp PWM đầu ra 8 bit.

SVTH: LÊ TRUNG KIÊN 49


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

- Các chân Analog: Có 6 chân Analog trên board mạch Arduino Uno được ký
hiệu từ A0 đến A5. Được sử dụng để đo điện áp tương tự trong khoảng từ 0 đến 5V.
- Chân Rx, Tx: Dùng để thực hiện giao tiếp nối tiếp thông qua hai chân 0 (Rx)
và chân 1 (Tx).
- Chân LED: Arduino Uno tích hợp đèn LED kết nối với chân 13. Cung cấp
mức logic HIGH tương ứng ON và LOW tương ứng OFF.
- Chân AREF: Chân này được gọi là tham chiếu tương tự, được sử dụng để cung
cấp điện áp tham chiếu cho các đầu vào tương tự.
- Chân SPI: Được dùng để giao tiếp ngoại vi nối tiếp. Các chân 10 (SS), 11
(MOSI), 12 (MISO), 13 (SCK) cung cấp liên lạc SPI với sự trợ giúp của thư viện SPI.
- Chân ngắt ngoài: Chân 2 và 3 được sử dụng để cung cấp các ngắt ngoài.
- Chân I2C: Dùng để giao tiếp I2C với các thiết bị. Chân A4 (SDA)và A5 (SCL)
được sử dụng cho mục đích này.

Hình 3.17: Sơ đồ chân Arduino Uno

SVTH: LÊ TRUNG KIÊN 50


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

3.2.4 Động cơ DC

Hình 3.18: Động cơ DC giảm tốc


Thông số động cơ:

- Điện áp hoạt động: 3-9V.


- Dòng điện tiêu thụ: 110-150 mA
- Tỉ số truyền: 1:120
- Tốc độ động cơ: 100000 (vòng/phút)
- Tốc độ qua hộp giảm tốc: 83 (vòng/phút)
3.2.5 Động cơ và module điều khiển động cơ bước ULN2003 V2

Động cơ bước 28BYJ-48: Động cơ bước 28BYJ-48 là động cơ bước 4 pha, 5


dây điều khiển 4 trong 5 dây này được kết nối với 4 cuộn dây trong động cơ và 1 dây
là dây nguồn chung cho cả 4 cuộn dây. Mỗi bước của động cơ quét 1 góc 5,625 độ,
vậy để quay 1 vòng động cơ phải thực hiện 64 bước.

Hình 3.19: Động cơ bước 28BYJ-48


Thông số động cơ:

SVTH: LÊ TRUNG KIÊN 51


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

- Điện áp hoạt động: 5V.


- Số pha: 4.
- Tần số: 100Hz.
- Số bước trên vòng chưa qua giảm tốc: 64.
- Góc mỗi bước: 5,625 độ.
- Tỉ số truyền: 1:64.
- Số bước sau hộp số giảm tốc (trục chính): 64 x 64 = 4096/1 (bước/vòng).
- Đường kính trục: 5mm.

Hình 3.20: Module điều khiển động cơ L298 V2


Module điều khiển động cơ bước ULN2003 V2: Là một module có kích thước
nhỏ và dễ sử dụng. Mạch sử dụng IC ULN2003A để khuếch đại các tín hiệu điều
khiển từ mạch điều khiển và điện áp sử dụng cấp cho động cơ có thể lên đến 12V.

Thông số kỹ thuật:

- Điện áp cung cấp: 5 ~ 12VDC.


- Tín hiệu ngõ vào: 4 chân in1, in2, in3, in4.
- Tín hiệu ngõ ra: Jack cắm động cơ bước 28BYJ-48.
- 4 led hiển thị trạng thái hoạt động của động cơ.
- Mức điện áp logic: 3 - 5.5V.
- Nhiệt độ hoạt động: -25 ~ 90℃.
- Kích thước: 25mm x 35mm.
- Trọng lượng: ~20g.

SVTH: LÊ TRUNG KIÊN 52


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

3.2.6 Module LM2596

Hình 3.21: Module LM2596


Thông số kỹ thuật:

- Điện áp đầu vào: Từ 3V đến 30V.


- Điện áp đầu ra: Điều chỉnh được trong khoảng 1.5V đến 30V.
- Dòng đáp ứng tối đa là 3A.
- Hiệu suất: 92%
- Công suất: 15W

Module LM2596 trong hệ thống dùng để giảm áp từ nguồn pin, cấp nguồn cho
Arduino và động cơ.

3.2.7 Module LM393

Hình 3.22: Module LM393


Thông số kỹ thuật:

SVTH: LÊ TRUNG KIÊN 53


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

- Điện áp làm việc: 3.3V – 5V DC.


- Kích thước: 3.2cm * 1.4cm

Hình 3.23: Sơ đồ nguyên lý cảm biến LM393


Module LM393 trong hệ thống giúp phát hiện tài liệu khi đưa vào cửa trước.

3.2.8 Module RFID RC522

Hình 3.24: Module RFID RC522


Thông số kỹ thuật:

- Điện áp: 3.3V


- Dòng điện:13-26mA
- Dòng điện ở chờ: 10-13mA
- Dòng điện ở chế độ nghỉ: <80uA
- Tần số hoạt động: 13.56MHz

SVTH: LÊ TRUNG KIÊN 54


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

- Khoảng cách hoạt động: 0 ~ 60 mm (mifarel card)


- Cổng giao tiếp: SPI
- Tốc độ truyền dữ liệu tối đa 10Мbps
- Kích thước: 40мм х 60мм
- Các loại card RFID hỗ trợ: mifare1 S50, mifare1 S70, mifare UltraLight,
mifare Pro,mifare Desfire

Module RFID 522 trong hệ thống dùng để kích động cơ để mở cửa sau với thẻ
từ.

3.2.9 Màn hình hiển thị và cảm ứng MageDok T116D

Thông số kỹ thuật:

- Loại màn hình: A-Si, TFT-LCD


- Độ phân giải: 1920 X 1080
- Kích thước: 11,6 inch
- Khu vực hoạt động: 256,896 × 144,504 mm
- Độ sáng: 300cd / M2 (Typ.)
- Tỷ lệ tương phản: 800: 1 (Typ.)
- Thời gian phản hồi: 26 (Typ.) (Ms)
- Đầu vào: Nguồn, cảm ứng, HDMI, Jack âm thanh 3,5 mm

Hình 3.25: Màn hình hiển thị có cảm ứng

SVTH: LÊ TRUNG KIÊN 55


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

Màn hình ở đây ta sử dụng để thiết kế giao diện điều khiển cho chatbot.

3.2.10 Pin hệ thống

Hình 3.26: Pin Lithium Polymer


Thông số kỹ thuật:

- Dung lượng :~10000mAh


- Điện áp định mức : 3.7 V
- Điện áp tối đa : 4.2 V
- Điện áp cắt: 2.5 V
- Công suất : 37Wh
- Dòng điện tối đa: 3C
- Nội trở : < 40 Ohm
- Nhiệt độ xả: 20 ° C ~ 60 ° C
- Chu kỳ nạp xả: >1000 lần
- Kích thước: 18 x 65 x 131 (mm)

Robot được sử dụng 4 cell pin để cấp nguồn cho toàn bộ hệ thống bao gồm
nguồn cho Arduino, cảm biến và động cơ.

SVTH: LÊ TRUNG KIÊN 56


CHƯƠNG 3: THIẾT KẾ VÀ XÂY DỰNG ROBOT

3.3 Mô hình hoàn chỉnh

Mô hình được thiết kế hoàn chỉnh với bộ khung chắc chắn và các cơ cấu chuyển
động ổn định.

Hình 3.27: Mô hình hoàn chỉnh của robot

SVTH: LÊ TRUNG KIÊN 57


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO


CHATBOT

4.1 Ứng dụng mạng nơ ron nhân tạo vào chatbot

Mạng nơ-ron nhân tạo (Artificial Neural Network – ANN) là một mô phỏng xử
lý thông tin hay thường được gọi ngắn gọn là mạng nơ-ron, được nghiên cứu dựa trên
hệ thống thần kinh của sinh vật, giống như một bộ não con người để xử lý các thông
tin. ANN bao gồm một số lượng lớn các mối gắn kết để xử lý các yếu tố làm việc
trong mối quan hệ giải quyết vấn đề rõ ràng. ANN được giới thiệu năm 1943 bởi nhà
thần kinh học Warren McCulloch và nhà logic học Walter Pits, hoạt động của nó
giống như hoạt động bộ não của con người, được học hỏi bởi kinh nghiệm thông qua
việc đào tạo, huấn luyện, có khả năng lưu giữ được các tri thức và sử dụng những tri
thức đó trong việc phán đoán các dữ liệu mới, chưa biết (unseen data). Processing
Elements (PE) của ANN gọi là nơ-ron, nhận các dữ liệu vào (inputs) xử lý chúng và
cho ra một kết quả (output) duy nhất. Kết quả xử lý của một nơ-ron có thể làm input
cho các nơ-ron khác.

Hình 4.1: Kiến trúc mạng nơ ron nhân tạo

SVTH: LÊ TRUNG KIÊN 58


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Kiến trúc chung của một ANN gồm 3 thành phần đó là Input Layer, Hidden
Layer và Output Layer

Trong đó, lớp ẩn (Hidden Layer) gồm các nơ-ron, nhận dữ liệu input từ các
Nơ- ron ở lớp (Layer) trước đó và chuyển đổi các input này cho các lớp xử lý tiếp
theo. Trong một mạng ANN có thể có nhiều Hidden Layer.

Lợi thế lớn nhất của các mạng ANN là khả năng được sử dụng như một cơ chế
xấp xỉ hàm tùy ý mà “học” được từ các dữ liệu quan sát. Tuy nhiên, sử dụng chúng
không đơn giản như vậy, một số các đặc tính và kinh nghiệm khi thiết kế một mạng
nơ-ron ANN.

Phương pháp này là tính toán tỷ lệ chính xác dữ liệu đầu ra (output) từ dữ liệu
đầu vào (input) bằng cách tính toán các trọng số cho mỗi kết nối (connection) từ các
lần lặp lại trong khi “huấn luyện” dữ liệu cho chatbot. Mỗi bước “huấn luyện” dữ liệu
cho chatbot sẽ sửa đổi các trọng số dẫn đến dữ liệu output được xuất ra với độ chính
xác cao.

• Chọn mô hình: Điều này phụ thuộc vào cách trình bày dữ liệu và các ứng
dụng. Mô hình quá phức tạp có xu hướng dẫn đền những thách thức trong quá trình
học.
• Cấu trúc và sự liên kết giữa các nơ-ron.
• Thuật toán học: Có hai vấn đề cần học đối với mỗi mạng ANN, đó là học
tham số của mô hình (parameter learning) và học cấu trúc (structure learning). Học
tham số là thay đổi trọng số của các liên kết giữa các nơ-ron trong một mạng, còn học
cấu trúc là việc điều chỉnh cấu trúc mạng bằng việc thay đổi số lớp ẩn, số nơ-ron mỗi
lớp và cách liên kết giữa chúng. Hai vấn đề này có thể được thực hiện đồng thời hoặc
tách biệt. Nếu các mô hình, hàm chi phí và thuật toán học được lựa chọn một cách
thích hợp, thì mạng ANN sẽ cho kết quả có thể vô cùng mạnh mẽ và hiệu quả.

SVTH: LÊ TRUNG KIÊN 59


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Hình 4.2: Quá trình xử lý thông tin của một mạng nơ-ron nhân tạo
Inputs: Mỗi Input tương ứng với 1 đặc trưng của dữ liệu. Ví dụ như trong ứng
dụng của ngân hàng xem xét có chấp nhận cho khách hàng vay tiền hay không thì
mỗi input là một thuộc tính của khách hàng như thu nhập, nghề nghiệp, tuổi, số con,…

Output: Kết quả của một ANN là một giải pháp cho một vấn đề, ví dụ như với
bài toán xem xét chấp nhận cho khách hàng vay tiền hay không thì output là yes hoặc
no.

Connection Weights (Trọng số liên kết) : Đây là thành phần rất quan trọng của
một ANN, nó thể hiện mức độ quan trọng, độ mạnh của dữ liệu đầu vào đối với quá
trình xử lý thông tin chuyển đổi dữ liệu từ Layer này sang layer khác. Quá trình học
của ANN thực ra là quá trình điều chỉnh các trọng số Weight của các dữ liệu đầu vào
để có được kết quả mong muốn.

Summation Function (Hàm tổng): Tính tổng trọng số của tất cả các input được
đưa vào mỗi Nơ-ron. Hàm tổng của một Nơ-ron đối với n input được tính theo công
thức sau:
𝑛

𝑌 = ∑ 𝑋𝑖 𝑊𝑖 ( 4.1 )
𝑖=1

SVTH: LÊ TRUNG KIÊN 60


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Transfer Function (Hàm chuyển đổi): Hàm tổng của một nơ-ron cho biết khả
năng kích hoạt của nơ-ron đó còn gọi là kích hoạt bên trong. Các nơ-ron này có thể
sinh ra một output hoặc không trong mạng ANN, nói cách khác rằng có thể output
của 1 Nơ-ron có thể được chuyển đến layer tiếp trong mạng Nơ-ron theo hoặc không.
Mối quan hệ giữa hàm tổng và kết quả output được thể hiện bằng hàm chuyển đổi.

Việc lựa chọn hàm chuyển đổi có tác động lớn đến kết quả đầu ra của mạng
ANN. Hàm chuyển đổi phi tuyến được sử dụng phổ biến trong mạng ANN là sigmoid
hoặc tanh.

1
𝑓 (𝑠 ) = ≜ 𝜎 (𝑠 ) ( 4.2 )
1 + 𝑒 −𝑠
𝑒 𝑠 − 𝑒 −𝑠
tanh(𝑠) = 𝑠 ( 4.3 )
𝑒 + 𝑒 −𝑠
Trong đó, hàm tanh là phiên bản thay đổi tỉ lệ của sigmoid , tức là khoảng giá
trị đầu ra của hàm chuyển đổi thuộc khoảng [-1, 1] thay vì [0,1] của Sigmoid nên
chúng còn gọi là hàm chuẩn hóa (Normalized Function).

Kết quả xử lý tại các nơ-ron (Output) đôi khi rất lớn, vì vậy hàm chuyển đổi
được sử dụng để xử lý output này trước khi chuyển đến layer tiếp theo. Đôi khi thay
vì sử dụng Transfer Function người ta sử dụng giá trị ngưỡng (Threshold value) để
kiểm soát các output của các neuron tại một layer nào đó trước khi chuyển các output
này đến các Layer tiếp theo. Nếu output của một neuron nào đó nhỏ hơn Threshold
thì nó sẻ không được chuyển đến Layer tiếp theo.

Mạng nơ-ron của chúng ta dự đoán dựa trên lan truyền thẳng (forward
propagation) là các phép nhân ma trận cùng với activation function để thu được kết
quả đầu ra. Nếu input x là vector 2 chiều thì ta có thể tính kết quả dự đoán 𝑦̂ bằng
công thức :

SVTH: LÊ TRUNG KIÊN 61


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

𝑧1 = 𝑥𝑊1 + 𝑏1

𝑎1 = tanh (𝑧1 )

𝑧2 = 𝑎1 𝑊1 + 𝑏2

𝑎2 = 𝑦̂ = 𝑠𝑜𝑓𝑡𝑚𝑎𝑥(𝑧2 )

Trong đó, 𝑧𝑖 là input của layer thứ 𝑖, 𝑎𝑖 là output của layer thứ 𝑖 sau khi áp dụng
activation function. 𝑊1 , 𝑏1 , 𝑊2 , 𝑏2 là các tham số (parameters) cần tìm của mô hình
mạng nơ-ron. Huấn luyện để tìm các tham số cho mô hình tương đương với việc tìm
các tham số 𝑊1 , 𝑏1 , 𝑊2 , 𝑏2 sao cho hàm lỗi của mô hình đạt được là thấp nhất. Ta
gọi hàm lỗi của mô hình là loss function. Đối với softmax function, ta dùng
crossentropy loss (còn gọi là negative log likelihood). Nếu ta có N ví dụ dữ liệu huấn
luyện, và C nhóm phân lớp, khi đó hàm lỗi giữa giá trị dự đoán 𝑦̂ và 𝑦 được tính:

1
𝐿(𝑦, 𝑦̂) = − ∑ ∑ 𝑦𝑛,𝑖 𝑙𝑜𝑔𝑦̂𝑛,𝑖 ( 4.4 )
𝑁
𝑛∈𝑁 𝑖∈𝑁

Ý nghĩa công thức trên nghĩa là: lấy tổng trên toàn bộ tập huấn luyện và cộng
dồn vào hàm loss nếu kết quả phân lớp sai. Độ dị biệt giữa hai giá trị 𝑦̂ và 𝑦 càng lớn
thì độ lỗi càng cao. Mục tiêu của chúng ta là tối thiểu hóa hàm lỗi này. Ta có thể sử
dụng phương pháp gradient descent để tối tiểu hóa hàm lỗi. Có hai loại gradient
descent, một loại với fixed learning rate được gọi là batch gradient descent, loại còn
lại có learning rate thay đổi theo quá trình huấn luyện được gọi là SGD (stochastic
gradient descent) hay minibatch gradient descent.

Gradient descent cần các gradient là các vector có được bằng cách lấy đạo hàm
𝜕𝐿 𝜕𝐿 𝜕𝐿 𝜕𝐿
của loss function theo từng tham số , , , để tính các gradient này, ta sử
𝜕𝑊1 𝜕𝑏1 𝜕𝑊2 𝜕𝑏2

dụng thuật toán lan truyền ngược (backpropagation). Đây là cách hiệu quả để tính
gradient khởi điểm từ output layer.

Áp dụng giải thuật lan truyền ngược ta có các đại lượng:

SVTH: LÊ TRUNG KIÊN 62


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

𝜕3 = 𝑦 − 𝑦̂

𝜕2 = (1 − 𝑡𝑎𝑛ℎ2 𝑧1 ) ∗ 𝜕3 𝑊2𝑇

𝜕𝐿
= 𝑎1𝑇 𝛿3
𝜕𝑊2

𝜕𝐿
= 𝛿3
𝜕𝑏2

𝜕𝐿
= 𝑥 𝑇 𝛿2
𝜕𝑊1

𝜕𝐿
= 𝛿2
𝜕𝑏1

4.2 Một số thư viện Python hỗ trợ luận văn


4.2.1 Thư viện json
4.2.1.1 Giới thiệu

JSON là từ viết tắt của ký hiệu đối tượng JavaScript. Python có gói tích hợp có
tên ‘json’ để hỗ trợ làm việc với JSON trong Python. JSON về cơ bản được sử dụng
để mã hóa và giải mã dữ liệu. Quá trình mã hóa dữ liệu JSON được gọi là tuần tự hóa
vì nó liên quan đến việc chuyển đổi dữ liệu thành một chuỗi byte có thể được lưu trữ
và truyền giữa các máy chủ và ứng dụng web. Vì tuần tự hóa là mã hóa dữ liệu, chúng
ta có thể đoán thuật ngữ được sử dụng để giải mã.

Ví dụ: JSON được cho là có thể đọc được bởi bất kỳ ai sử dụng ngôn ngữ kiểu
C và Python là ngôn ngữ kiểu C.

SVTH: LÊ TRUNG KIÊN 63


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Hình 4.3: Ví dụ về json


Như bạn có thể thấy, JSON hỗ trợ các kiểu nguyên thủy, như chuỗi và số, cũng
như các danh sách và đối tượng lồng nhau. Nó trông giống như một từ điển Python.

Python hỗ trợ JSON nguyên bản!

Python đi kèm với gói tích hợp được gọi là json, thư viện này cung cấp cho
chúng ta những công cụ để làm việc cũng như để mã hóa và giải mã dữ liệu JSON.

Bảng 4.1: Các phương thức có sẵn trong mô-đun JSON

Phương thức Miêu tả

dumps() Mã hóa thành các đối tượng JSON

dump() Mã hóa chuỗi được ghi trong tệp

loads() Giải mã chuỗi JSON

load() Giải mã trong khi đọc tệp JSON

Mã hóa dữ liệu Python sang JSON

SVTH: LÊ TRUNG KIÊN 64


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Quá trình mã hóa JSON thường được gọi là tuần tự hóa . Thuật ngữ này đề cập
đến việc chuyển đổi dữ liệu thành một chuỗi byte (do đó nối tiếp ) sẽ được lưu trữ
hoặc truyền qua mạng

Các đối tượng Python được dịch sang JSON theo một chuyển đổi khá trực quan.

Bảng 4.2: Các đối tượng Python sau khi được dịch sang Python

Python JSON

dict object

list, tuple array

str string

int, long,float number

4.2.1.2 Kiểu dữ liệu của Json

Json có 5 kiểu dữ liệu chính

- Number: kiểu số bao gồm số nguyên và số thực.


- String: kiểu chuỗi, nội dung bao bởi cặp dấu nháy kép “, những ký tự đặt biệt
được escape bởi dấu .Theo chuẩn JSON thì không sử dụng dấu nháy đơn như
Javascript để bọc chuỗi.
- Boolean: kiểu luận lý bao gồm 2 giá trị là true và false
- Array: kiểu mảng, gồm các phần tử phân cách nhau bởi dấu phẩy ‘,’ và mảng
được bao bởi cặp dấu [ và ].
- Object: kiểu đối tượng, gồm những cặp giá trị đi cùng nhau, mỗi cặp phân cách
bởi dấu phẩy’,’, đối tượng được bao bởi cặp dấu { và }, cặp giá trị bao gồm tên và
giá trị được phân cách bởi dấu hai chấm’:’.
- Null: giá trị null.
4.2.1.3 Ưu điểm của Json
- Có thể đọc hiểu được (human-readability).

SVTH: LÊ TRUNG KIÊN 65


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

- Là kiểu dữ liệu trên nền cơ sở Javascript nên dễ dàng tiếp cận.


- Dữ liệu truyền tải ngắn gọn so với những định dạng dữ liệu khác như: xml,
html…
- Dễ dàng chuyển đổi(parse) dữ liệu từ dạng chuỗi (nhận từ server) sang dữ liệu
có thể sử dụng được (thành Object, Number, Array)…
- Dễ truy cập nội dung.
- Với những ứng dụng Ajax lấy và xử lý dữ liệu từ một web service nào đó khác
domain: Nếu nội dung trả về có dạng xml thì javascript từ trang web của chúng ta
không thể trực tiếp truy cập mà phải nhờ một proxy để đáp ứng yêu cầu của same
origin policy. Nhưng nếu là dạng JSON thì đó không là vấn đề. (Thường dùng lệnh
eval).
- Hai công nghệ phổ biến sử dụng JSON là PHP và .NET
4.2.2 Thư viện SpeechRecognition
4.2.2.1 Giới thiệu

Nhận dạng giọng nói, như tên cho thấy, đề cập đến việc nhận dạng tự động
giọng nói của con người. Nhận dạng giọng nói là một trong những nhiệm vụ quan
trọng nhất trong lĩnh vực tương tác với máy tính của con người. Nếu bạn đã từng
tương tác với Alexa hoặc đã từng ra lệnh cho Siri hoàn thành một nhiệm vụ, bạn đã
trải nghiệm sức mạnh của nhận dạng giọng nói.

Nhận dạng giọng nói có nhiều ứng dụng khác nhau, từ phiên âm tự động dữ liệu
giọng nói (như thư thoại) đến tương tác với rô bốt qua giọng nói.

Thực hiện lệnh sau để cài đặt thư viện:pip install SpeechRecognition

4.2.2.2 Nhận đầu vào âm thanh từ micrô

Để sử dụng micrô, chúng tôi cũng sẽ phải cài đặt mô-đun pyaudio(pip install
PyAudio). Chúng tôi sử dụng lớp micrô để lấy lời nói đầu vào từ micrô thay vì bất kỳ
phương thức nhập nào khác như tệp âm thanh.

SVTH: LÊ TRUNG KIÊN 66


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Đối với hầu hết các dự án, chúng tôi có thể sử dụng micrô mặc định. Nhưng nếu
bạn không muốn sử dụng micrô mặc định, bạn có thể lấy danh sách tên micrô bằng
phương thức list_microphone_names.

Để nắm bắt đầu vào từ micrô, chúng tôi sử dụng phương pháp nghe:

import speechrecognition as sr

r = sr.Recognizer()

with sr.Microphone() as source:

audio = sr.listen(source)

4.2.3 Thư viện NLU


4.2.3.1 Giới thiệu

NLTK là một nền tảng hàng đầu để xây dựng các chương trình Python để làm
việc với dữ liệu ngôn ngữ của con người. Nó cung cấp các giao diện dễ sử dụng cho
hơn 50 tài nguyên ngữ liệu và từ vựng như Mạng từ, cùng với một bộ thư viện xử lý
văn bản để phân loại, mã hóa, tạo gốc, gắn thẻ, phân tích cú pháp và lập luận ngữ
nghĩa, trình bao bọc cho các thư viện NLP công nghiệp, và một diễn đàn thảo luận
tích cực .

Nhờ hướng dẫn thực hành giới thiệu các nguyên tắc cơ bản về lập trình cùng
với các chủ đề trong ngôn ngữ học tính toán, cùng với tài liệu API toàn diện, NLTK
phù hợp với các nhà ngôn ngữ học, kỹ sư, sinh viên, nhà giáo dục, nhà nghiên cứu và
người dùng trong ngành. NLTK có sẵn cho Windows, Mac OS X và Linux. Hơn hết,
NLTK là một dự án miễn phí, mã nguồn mở, hướng tới cộng đồng.

NLTK đã được gọi là “một công cụ tuyệt vời để giảng dạy và làm việc trong
ngôn ngữ học tính toán sử dụng Python” và “một thư viện tuyệt vời để chơi với ngôn
ngữ tự nhiên.”

SVTH: LÊ TRUNG KIÊN 67


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Xử lý ngôn ngữ tự nhiên với Python cung cấp giới thiệu thực tế về lập trình để
xử lý ngôn ngữ. Được viết bởi những người tạo ra NLTK, nó hướng dẫn người đọc
các nguyên tắc cơ bản của việc viết chương trình Python, làm việc với kho ngữ liệu,
phân loại văn bản, phân tích cấu trúc ngôn ngữ và hơn thế nữa. Phiên bản trực tuyến
của cuốn sách đã được cập nhật cho Python 3 và NLTK 3.

Thực hiện lệnh sau để cài đặt thư viện: pip install nltk

Một số chức năng chính của NLTK:

- Mã hóa và gắn thẻ một số văn bản


- Xác định các thực thể được đặt tên:
4.2.4 Thư viện Numpy

Numpy (Numeric Python): là một thư viện toán học phổ biến và mạnh mẽ của
Python. Cho phép làm việc hiệu quả với ma trận và mảng, đặc biệt là dữ liệu ma trận
và mảng lớn với tốc độ xử lý nhanh hơn nhiều lần khi chỉ sử dụng “core Python” đơn
thuần.

NumPy được phát triển bởi Jim Hugunin. Phiên bản ban đầu là Numarray được
phát triển, có một số chức năng bổ sung. Năm 2005, Travis Oliphant đã tạo ra gói
NumPy bằng cách kết hợp các tính năng của Numarray và gói Numeric.

Sử dụng NumPy, lập trình viên có thể thực hiện các thao tác sau:

- Các phép toán học và logic trên mảng.


- Các biến đổi Fourier và các quy trình để thao tác shape.
- Các phép toán liên quan đến đại số tuyến tính. NumPy tích hợp sẵn các hàm
cho đại số tuyến tính và tạo số ngẫu nhiên.

Thực hiện lệnh sau để cài đặt thư viện: pip install numpy

SVTH: LÊ TRUNG KIÊN 68


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

4.2.5 Thư viện Openpyxl


4.2.5.1 Giới thiệu

Python cung cấp mô-đun Openpyxl, được sử dụng để xử lý các tệp Excel mà
không liên quan đến phần mềm ứng dụng Microsoft của bên thứ ba. Bằng cách sử
dụng mô-đun này, chúng ta có thể kiểm soát excel mà không cần mở ứng dụng. Nó
được sử dụng để thực hiện các tác vụ excel như đọc dữ liệu từ tệp excel, hoặc ghi dữ
liệu vào tệp excel, vẽ một số biểu đồ, truy cập trang tính excel, đổi tên trang tính, sửa
đổi (thêm và xóa) trong trang tính excel, định dạng, tạo kiểu trong trang tính và bất
kỳ nhiệm vụ nào khác. Openpyxl rất hiệu quả để thực hiện các tác vụ này cho bạn.

Các nhà khoa học dữ liệu thường sử dụng Openpyxl để thực hiện các hoạt động
khác nhau như sao chép dữ liệu để khai thác dữ liệu cũng như phân tích dữ liệu.

4.2.5.2 Quy trình làm việc của Openpyxl

Thư viện Openpyxl được sử dụng để ghi hoặc đọc dữ liệu trong tệp excel và
nhiều tác vụ khác. Tệp excel mà chúng tôi sử dụng cho hoạt động được gọi là
Workbook chứa tối thiểu một Trang tính và tối đa là hàng chục trang tính.

• Trang tính bao gồm Hàng (chuỗi ngang) bắt đầu từ 1 và Cột (chuỗi dọc) bắt
đầu từ A.
• Hàng và cột cùng nhau tạo thành một lưới và tạo thành một ô có thể lưu trữ
một số dữ liệu. Dữ liệu có thể thuộc bất kỳ kiểu nào, chẳng hạn như số, chuỗi.
• Openpyxl cung cấp tính linh hoạt để đọc dữ liệu từ ô riêng lẻ hoặc ghi dữ liệu
vào ô đó.
4.2.5.3 Đọc, ghi dữ liệu vào Excel

Chúng ta có thể đọc dữ liệu mà chúng ta đã ghi trước đó trong ô. Có hai phương
pháp để đọc một ô, thứ nhất chúng ta có thể truy cập nó bằng tên ô và thứ hai, chúng
ta có thể truy cập nó bằng hàm cell().Ghi dữ liệu vào Excel

SVTH: LÊ TRUNG KIÊN 69


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Chúng ta có thể thêm dữ liệu vào tệp excel bằng cách sử dụng mã Python sau.
Đầu tiên, chúng ta sẽ nhập hàm load_workbook từ mô-đun openpyxl , sau đó tạo đối
tượng của tệp và chuyển đường dẫn tệp làm đối số. Hãy xem xét đoạn code sau:

from openpyxl import load_workbook

wb = load_workbook(r'C:\Users\DEVANSH SHARMA\Desktop\demo.xlsx')

sheet = wb.active

sheet['A1'] = 'Devansh Sharma'

sheet.cell(row=2, column=2).value = 5

wb.save(r'C:\Users\DEVANSH SHARMA\Desktop\demo.xlsx')

Đầu ra:

Hình 4.4: Dữ liệu Excel sau khi được ghi bởi Openpyxl
4.2.5.4 Thư viện chuyển văn bản thành giọng nói python
❖ pyttsx3 đọc tiếng anh

Chuyển văn bản thành giọng nói là quá trình tạo ra giọng nói từ văn bản ngôn
ngữ bình thường. Ở đây trong bài đăng này, tôi sẽ giới thiệu với bạn về mô-đun
pyttsx3 , một trong những thư viện python tốt nhất để chuyển đổi văn bản thành giọng
nói. Phần tốt nhất về thư viện này là nó hoàn toàn ngoại tuyến, vì vậy bạn không cần
phải có kết nối internet đang hoạt động để thư viện này hoạt động.

Để cài đặt thư viện này, bạn cần nhập lệnh sau vào thiết bị đầu cuối của mình.

SVTH: LÊ TRUNG KIÊN 70


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

pip install pyttsx3

Bây giờ chúng ta đã sẵn sàng để bắt đầu làm việc với thư viện này.

Chuyển văn bản thành giọng nói

Đầu tiên, bạn cần nhập và khởi tạo pyttsx3. Tên biến là engine vì vậy nó sẽ được
sử dụng trong toàn bộ mã để thiết lập tất cả các loại thuộc tính.

import pyttsx3

engine = pyttsx3.init()

Bây giờ, chúng ta chỉ cần sử dụng hàm và chuyển bất kỳ văn bản nào làm đối
số.

engine.say("Hello Master!")

engine.runAndWait()

Khi bạn thực thi mã, Bạn sẽ nghe thấy một giọng nói "Xin chào Chủ nhân!".

Thay đổi sang giọng nữ

Bạn có thể nhận thấy rằng giọng nói hiện tại là nam. Điều gì sẽ xảy ra nếu chúng
ta muốn thay đổi kiểu giọng nói thành nữ? Đối với điều đó, chúng tôi sẽ sử dụng
getPropery phương pháp để tìm nạp danh sách tất cả các giọng nói. Sau đó, chúng tôi
sẽ sử dụng setProperty phương pháp để thay đổi giọng nói thành nữ.

voices = engine.getProperty('voices')

engine.setProperty('voice', voices[1].id)

engine.say("Hi, I am a female!")

engine.runAndWait()

Bây giờ bạn sẽ nghe thấy một giọng nữ thay vì nam.

Thay đổi tốc độ giọng nói

SVTH: LÊ TRUNG KIÊN 71


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Giả sử rằng bạn thích một bài phát biểu có tốc độ nhanh hơn nhiều. Bạn có thể
dễ dàng sử dụng thuộc tính tỷ lệ để sửa đổi tốc độ giọng nói.

rate = engine.getProperty('rate')

engine.setProperty('rate', rate+50)

engine.say("Rate has now increased.")

engine.runAndWait()

Bây giờ bạn sẽ nhận thấy rằng bài phát biểu được nói có tốc độ nhanh hơn nhiều.

❖ Google TTS đọc tiếng việt

Đọc được tiếng việt thì ta bắt buộc phải dùng thư viện của Google hỗ trợ vì rất
ít thư viện có thể chuyển được đầu ra thành tiếng việt.

Để cài đặt thư viện này, bạn cần nhập lệnh sau pip install gTTS.

pip install gTTS

Bắt đầu sử dụng:

from gtts import gTTS

import playsound

text = "Xin chào bạn"

output = gTTS(text,lang="vi", slow=False)

output.save("output.mp3")

playsound.playsound('output.mp3', True)

4.2.6 Thư viện Pytorch


4.2.6.1 Giới thiệu về Pytorch

PyTorch là 1 thư viện Python-based hỗ trợ tạo ra các Deep Learning models và
sử dụng chúng cho các ứng dụng khác nhau. Trên thực tế, PyTorch không chỉ là 1

SVTH: LÊ TRUNG KIÊN 72


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

thư viện Deep Learning, mà chính là 1 package về tính toán khoa học (scientific
computing).

PyTorch, tương tự như Python, nó được thiết kế tập trung vào tính dễ sử dụng
và thậm chí người dùng có kiến thức lập trình rất cơ bản cũng có thể sử dụng nó trong
các dự án có liên quan đến Deep Learning.

Cấu trúc dữ liệu cốt lõi được sử dụng trong PyTorch là Tensor. Tương tự numpy
array, Tensor là 1 mảng n-chiều với các phần tử có cùng kiểu dữ liệu.

Để cài đặt thư viện này, bạn cần nhập lệnh sau pip install torch.

Hình 4.5: Logo Pytorch


4.2.6.2 Tổng quan Pytorch

Xem xét pipeline cơ bản của 1 dự án PyTorch. Hình dưới đây mô tả một quy
trình công việc điển hình cùng với các modules quan trọng được liên kết với mỗi
bước.

Hình 4.6: Quy trình công việc của Pytorch

SVTH: LÊ TRUNG KIÊN 73


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Các modules cơ bản mà chúng ta sẽ đề cập là torch.nn, torch.optim, torch.utils


và torch.autograd.

4.2.6.3 Load và xử lý data

Đây luôn là một trong những bước đầu tiên trong bất kì một project về Deep
Learning nào. Vì thế PyTorch đã hỗ trợ các tiện ích để thực hiện bước này với module
torch.utils.data.

Hai class quan trọng trong module này là Dataset và DataLoader:

• Dataset được xây dựng trên nền kiểu dữ liệu Tensor và được sử dụng chủ yếu
cho các bộ dữ liệu tùy chỉnh.
• DataLoader được sử dụng khi bạn có một tập dữ liệu lớn và bạn muốn tải dữ
liệu từ Dataset ở chế độ nền để nó sẵn sàng và chờ sử dụng cho quá trình training
loop.

Chúng ta cũng có thể sử dụng torch.nn.DataParallel và torch.distribution trong


trường hợp có thể sử dụng song song nhiều máy tính hoặc nhiều GPUs.

4.2.6.4 Xây dựng Neural Network

Module torch.nn được sử dụng để tạo Neural Network. Nó cung cấp tất cả các
Neural Network layers phổ biến như các fully connected layers, convolutional layers,
các hàm activation và hàm loss, v.v.

Một khi kiến trúc mạng đã được tạo ra và dữ liệu đã sẵn sàng để được feed cho
mạng, chúng ta sẽ cần các kỹ thuật để cập nhật các trọng số (weights) và độ lệch
(biases) để mạng tiến hành quá trình learning. Các tiện ích này được cung cấp trong
module torch.optim. Còn để tính gradient tự động, chúng ta sử dụng module
torch.autograd.

SVTH: LÊ TRUNG KIÊN 74


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

4.2.6.5 Model Inference & Compability

Sau khi model đã được train, nó có thể được sử dụng để dự đoán output cho các
test cases hoặc thậm chí các datasets mới. Quá trình này được gọi là model inference.

PyTorch cũng cung cấp TorchScript có thể được sử dụng để chạy các model
độc lập với Python runtime. Đây có thể được coi là một Máy ảo được thiết kế chủ
yếu dành riêng cho việc thao tác với Tensors.

Chúng ta cũng có thể convert model được train bằng PyTorch sang các định
dạng như ONNX, cho phép bạn sử dụng các model này trong các Deep Learning
framework khác như MXNet, CNTK, Caffe2. Bạn cũng có thể chuyển đổi các model
ONNX sang TensorFlow.

4.2.7 Thư viện tkinter

Các Widget của Tkinter trong Python: Có nhiều widget khác nhau như button,
canvas, checkbutton, entry, ... chúng được sử dụng để xây dụng các ứng dụng GUI
trong Python.

Bảng 4.3: Các Widget của Tkinter

STT Button Mô tả

Button được sử dụng để thêm nhiều nút khác nhau vào


1 Button
ứng dụng python.
2 Canvas Canvas được sử dụng để vẽ các hình trên cửa sổ.
Checkbutton được sử dụng để hiển thị CheckButton trên
3 Checkbutton
cửa sổ.
Entry được sử dụng để hiển thị trường văn bản một
4 Entry dòng cho người dùng. Nó thường được sử dụng để nhập
các giá trị của người dùng.
Frame có thể được định nghĩa là một vùng chứa mà có
5 Frame
thể chứa một hoặc nhiều widget khác.
Label là một văn bản được sử dụng để hiển thị một số
6 Label
thông báo hoặc thông tin cho các widget khác.

SVTH: LÊ TRUNG KIÊN 75


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

ListBox được sử dụng để hiển thị danh sách các tùy


7 ListBox
chọn cho người dùng.
Menubutton được sử dụng để hiển thị các mục menu
8 Menubutton
cho người dùng.
Menu được sử dụng để thêm các mục menu cho người
9 Menu
dùng.
Message được sử dụng để hiển thị hộp tin nhắn cho
10 Message
người dùng.
Người dùng được cung cấp các tùy chọn khác nhau và
11 Radiobutton
người dùng chỉ có thể chọn một tùy chọn trong số đó.
Nó được sử dụng để cung cấp thanh trượt cho người
12 Scale
dùng.
Nó cung cấp thanh cuộn cho người dùng để người dùng
13 Scrollbar
có thể cuộn cửa sổ lên và xuống.
Nó khác với Entry vì nó cung cấp một trường văn bản
14 Text nhiều dòng cho người dùng để người dùng có thể viết
văn bản và chỉnh sửa văn bản bên trong nó.
Nó được sử dụng để tạo một vùng chứa cửa sổ riêng
15 Toplevel
biệt.
Nó là một widget mục nhập được sử dụng để chọn từ
16 Spinbox
các tùy chọn của các giá trị.
Nó giống như một widget container chứa các ô ngang
17 PanedWindow
hoặc dọc.
LabelFrame là một widget vùng chứa hoạt động như
18 LabelFrame
một container.
Nó được sử dụng để hiển thị hộp thông báo trong các
18 MessageBox
ứng dụng desktop.
Tkinter cung cấp các phương thức để bố cục các widget sau:

1. Phương thức pack():

Phương thức pack() được sử dụng để tổ chức widget theo khối. Vị trí các widget
được thêm vào ứng dụng python bằng phương thức pack() có thể được kiểm soát
bằng cách sử dụng các tùy chọn khác nhau được chỉ định trong lệnh gọi phương thức.

SVTH: LÊ TRUNG KIÊN 76


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Hình 4.7: Ví dụ phương thức pack() Tkinter


2. Phương thức grid()

Trình quản lý layout grid() sắp xếp các widget ở dạng bảng. Chúng ta có thể chỉ
định các hàng và cột. Chúng ta cũng có thể chỉ định khoảng cột (chiều rộng) hoặc
chiều dài hàng (chiều cao) của widget con.

Hình 4.8: Ví dụ phương thức grid() Tkinter


3. Phương thức place()

Trình quản lý layout place() sắp xếp các widget theo các tọa độ x và y.

Hình 4.9: Ví dụ phương thức place() Tkinter


4.3 Xây dựng, thiết kế chương trình cho chatbot
4.3.1 Mục đích và nội dung chương trình

Chương trình chatbot được viết bằng ngôn ngữ Python kết hợp với việc sử dụng
thư viện Pytorch và một số thư viện hỗ trợ khác có mục đích nghe câu hỏi để trả lời,
phân tích và lưu trữ dữ liệu người dùng. Tăng khả năng tác với người dùng trực quan

SVTH: LÊ TRUNG KIÊN 77


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

và hiệu quả. Để đạt được những mục tiêu đó, chương trình cần phải giải quyết được
các nội dung sau:

• Khả năng xử lý ngôn ngữ tự nhiên.


• Đào tạo dữ liệu các gói câu hỏi cho chatbot.
• Phân tích và đưa ra câu trả lời đúng nhất theo dữ liệu đã đào tạo.
• Xây dựng giao diện tương tác với người dùng.
• Giao tiếp với thiết bị ngoại vi, gửi tín hiệu điều khiển để quản lý thu thập tài
liệu.
4.3.2 Thiết kế sơ đồ khối hệ thống

Chatbot được xây dựng dựa trên mô hình phân loại ý định.

Hình 4.10: Sơ đồ khối các bước phân loại ý định


4.3.2.1 Bước huấn luyện mô hình
4.3.2.1.1 Dữ liệu huấn luyện

Để dữ liệu huấn luyện dể dàng kiểm soát và truy xuất ta thêm tất cả dữ liệu ý
định mà ta muốn huấn luyện vào file json .

Để tạo dữ liệu huấn luyện ta cần tạo nhiều gói từ và mỗi gói từ đại diện cho một
ý định và phải tuân theo ba thứ:

SVTH: LÊ TRUNG KIÊN 78


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Thứ 1: Tên ý định (tag). Để máy tính có thể hiểu, trích xuất, phân biệt được dữ
liệu ta cần đặt tên cho từng ý định nó giống như một nhãn mác hàng hóa, mỗi tên ý
định phải khác nhau để máy tính không bị nhầm lẫn

Thứ 2: Câu hỏi đầu vào (patterns). Là những câu hỏi mà ta muốn máy tính học
được, để tránh trường hợp máy tính không hiểu ta tạo thêm nhiều câu hỏi theo nhiều
cách diễn đạt khác nhau.

Thứ 3: Câu phản hồi đầu ra (responses). Là những câu trả lời mà chúng ta muốn
máy tính phản hồi. Để tăng thêm phong phú câu trả lời ta nên thêm nhiều câu trả lời
cùng nội dung.

Hình 4.11: Cấu trúc dữ liệu intents


4.3.2.1.2 Tiền xử lý

Vì bước tiền xử lý đóng vai trò quan trọng trong hệ thống chatbot. Nếu tiền xử
lý làm sạch và chuẩn hóa tốt dữ liệu đầu vào thì sẽ làm tăng khả độ chính xác cũng
như độ thông minh của chatbot.

SVTH: LÊ TRUNG KIÊN 79


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Hình 4.12: Sơ đồ khối tiền xử lý huấn luyện


Để chuẩn hóa và làm sạch dữ liệu ta thực hiện các bước:

Bước 1. Tách từ trong câu:

Để tách được từ trong một câu tôi sử dụng thư viện nltk trên python.

Ví dụ: để tách câu “What are you doing?” ta thực hiện lệnh như hình().

Hình 4.13: Tách từ trong câu với nltk


Kết quả câu “What are you doing?” đã trở thành một mảng từ riêng lẻ ['What',
'are', 'you', 'doing', '?']

Bước 2. Chuyển các từ tiếng anh về nguyên mẫu:

SVTH: LÊ TRUNG KIÊN 80


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Sau khi tách câu ta chuyển các từ về nguyên mẫu và chuyển chữ hoa thành chữ
thường bằng cách dùng thư viện nltk trên python

Hình 4.14: Chuyển từ về nguyên mẫu với nltk


4.3.2.1.3 Trích xuất đặc trưng

Hình 4.15: Sơ đồ khối trích xuất đặc trưng huấn luyện


Để sử dụng được các thuật toán ta cần vector hóa các văn bản, các đoạn text đầu
vào.

Có nhiều cách khác nhau có thể đưa dữ liệu văn bản thành dữ liệu dạng số:

+ Word2Vec
+ One-hot Encoding

SVTH: LÊ TRUNG KIÊN 81


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

+ Bag of Words
+ ….

Ở đây tôi sử dụng Bag of Words(BoW) để giải quyết vấn đề này vì lượng dữ
liệu hiện tại còn ít, đơn giản, dễ dàng cài đặt.

BoW hoạt động bằng cách đếm số lần xuất hiện của mỗi từ trong văn bản.

Ví dụ: có hai văn bản đơn giản

1. What your name ?


2. How are you.

Tiền xử lý văn bản này, ta có danh sách các từ được sử dụng, được gọi là từ điển
để từ điển gọn gàng ta có thể xóa bỏ những từ trùng lặp thì ta có từ điển sáu từ như
sau:

["are", "what","your","you","name","how"]

Vậy với mỗi văn bản tạo ra một vector đặc trưng với chiều dài bằng sáu, mỗi
phần tử đại diện cho số từ tương ứng xuất hiện trong văn bản đó.

1. [0. 1. 1. 0. 1. 0.]
2. [1. 0. 0. 1. 0. 1.]

Để biểu diễn trên python ta dùng thư viện numpy để tạo được vector từ

SVTH: LÊ TRUNG KIÊN 82


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Hình 4.16: Tạo vector từ trên python


4.3.2.1.4 Huấn luyện mô hình

Pha huấn luyện dữ liệu là pha mấu chốt, quan trọng nhất trong xây dựng mô
hình chatbot. Sau bước tiền xử lý và trích xuất đặc trưng chỉ mang lại tác dụng làm
cho kết quả của mô hình được tốt hơn, thì pha huấn luyện này là pha không thể thiếu.

SVTH: LÊ TRUNG KIÊN 83


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Hình 4.17: Lưu đồ giải thuật huấn luyện mô hình chatbot


Đầu tiên của bước huấn luyện mô hình ta tìm kiếm, lấy dữ liệu từ bước trích
xuất đặc trưng bao gồm từ điển (all_words), tên ý định (tags), câu hỏi (patterns), câu
trả lời (responese) và thiết lập số lần huấn luyện cho mô hình (numEpoch) ở đây cho
bằng 1000.

SVTH: LÊ TRUNG KIÊN 84


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Ví dụ : Với dữ liệu ở hình 4.14 thì ta có từ điển câu hỏi với 24 từ: ["'s", 'a',
'anyon', 'are', 'bye', 'day', 'good', 'goodby', 'hello', 'help', 'hi', 'how', 'is', 'later', 'lot',
'name', 'see', 'thank', 'that', 'the', 'there', 'what', 'you', 'your'] tương ứng với với vector
có chiều dài bằng 24.

Tiếp theo ta xử lý dữ liệu vào bằng thư viện numpy để tính toán và trích xuất
nhất, ta tiến hành tạo mảng ý định thì mảng sẽ là bốn ý định ['goodbye', 'greeting',
'my name', 'thanks'] và tạo mảng xy với x là câu hỏi (patterns) y là ý định (tags) thì
mảng sẽ là [(['Hi'], 'greeting'), (['How', 'are', 'you'], 'greeting'), (['Is', 'anyone', 'there',
'?'], 'greeting'), (['Hello'], 'greeting'), (['Good', 'day'], 'greeting'), (['Bye'], 'goodbye'),
(['See', 'you', 'later'], 'goodbye'), (['Goodbye'], 'goodbye'), (['Thanks'], 'thanks'),
(['Thank', 'you'], 'thanks'), (['That', "'s", 'helpful'], 'thanks'), (['Thanks', 'a', 'lot', '!'],
'thanks'), (['What', 'your', 'name', '?'], 'my name'), (['What', 'is', 'the', 'name'], 'my
name')]. Đễ để nhìn ta xem (bảng 4.4)

Bảng 4.4: Bảng câu hỏi và ý định sau khi tạo mảng
x y
Hi greeting
How are you greeting
Is anyone there? greeting
Hello greeting
Good day greeting
Bye goodbye
See you later goodbye
Goodbye goodbye
Thanks thanks
Thank you thanks
That's helpful thanks
Thanks a lot! thanks
What your name my name
What is the name my name
Tiếp đến là tạo dữ liệu đào tạo:

SVTH: LÊ TRUNG KIÊN 85


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

- Tạo vector dữ liệu của từng câu hỏi (patterns) trên từ điển của từ (all_words)
và đây cũng là dữ liệu đầu vào của huấn luyện mô hình.
- Tạo vector dữ liệu của từng ý định (tags) trên từng câu hỏi.

Bảng 4.5: Dữ liệu đào tạo


Vector Vector
x y
(patterns) (tags)
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0.
Hi greeting 1
0. 0. 0. 0. 0.]
How are [0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0.
greeting 1
you 0. 0. 0. 1. 0.]
Is anyone [0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0.
greeting 1
there? 0. 1. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
Hello greeting 1
0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 1. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
Good day greeting 1
0. 0. 0. 0. 0.]
[0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
Bye goodbye 0
0. 0. 0. 0. 0.]
See you [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 1. 0. 0.
goodbye 0
later 0. 0. 0. 1. 0.]
[0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
Goodbye goodbye 0
0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.
Thanks thanks 3
0. 0. 0. 0. 0.]
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0.
Thank you thanks 3
0. 0. 0. 1. 0.]
That's [1. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 1.
thanks 3
helpful 0. 0. 0. 0. 0.]
Thanks a [0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 1. 0.
thanks 3
lot! 0. 0. 0. 0. 0.]
What your my [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0.
2
name name 0. 0. 1. 0. 1.]
What is the my [0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 1. 0. 0. 0.
2
name name 1. 0. 1. 0. 0.]

- Khỏi tạo Dataset với thư viện Pytorch

SVTH: LÊ TRUNG KIÊN 86


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Tiếp theo là bước huấn luyện với mô hình DeepLearing và mạng Neaural và
được hỗ trợ bởi thư viện Pytorch. Đầu vào với 24 nơ ron tương ứng với vector câu
hỏi đầu ra là 4 nơ ron ứng với 4 ý định và lớp ẩn, bias là lớp sẽ được training

Hình 4.18: Mô hình học có giám sát


Để hiểu rõ hơn ta lấy một câu “hello” làm ví dụ thì input lúc này là 24 nơ ron
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] và đầu ra tuyến tính sẽ
được tính toán [-0.2731, 0.2611, -0.1122, -0.1210] để thấy sự chênh lệch ta đưa về
dạng xác suất bằng cách tính softmax với công thức:

𝑒 𝑧𝑖 ( 4.5 )
𝜎(𝑧)𝑗 = 𝑉ớ𝑖 𝑗 = 1, … , 𝐾
∑𝐾𝑘=1 𝑒 𝑘𝑧
𝑒 −0.2731
𝜎(𝑧)1 = −0.2731 = 0,198217811
𝑒 + 𝑒 0.2611 + 𝑒 −0.1122 + 𝑒 −0.1210

SVTH: LÊ TRUNG KIÊN 87


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

𝑒 0.2611
𝜎(𝑧)2 = = 0,338178372
𝑒 −0.2731 + 𝑒 0.2611 + 𝑒 −0.1122 + 𝑒 −0.1210

𝑒 −0.1122
𝜎(𝑧)3 = −0.2731 = 0,23282183
𝑒 + 𝑒 0.2611 + 𝑒 −0.1122 + 𝑒 −0.1210

𝑒 −0.1210
𝜎(𝑧)4 = −0.2731 = 0,230781987
𝑒 + 𝑒 0.2611 + 𝑒 −0.1122 + 𝑒 −0.1210

Ta ra được dạng xác suất [0.19821892 0.3381779 0.23282151 0.23078167] từ


đây ta thấy giá trị xác suất với giá trị dự đoán (label) [0,1,0,0] chưa gần với nhau để
đánh giá sự khác biệt đó ta tính Cots function (cross entropy) với công thức:

𝐷(𝑌̂, 𝑌) = −𝑌𝑙𝑜𝑔𝑌̂

= −1 × log(0.3381779) ≈ 1.08

Với Y là giá trị dự đoán và 𝑌̂ là giá trị tính ra ta được cross entropy gần bằng
1.08

Để cross entropy thấp nhất ta lan truyền ngược nơ ron và cập nhật label và bias
với số lần bằng numEpoch.

Sau khi cập nhật đến khi hết chu kỳ numEpoch và giá trị cross entropy thấp nhất
thì ta lưu lại các dữ liệu lớp ẩn với file .pth

SVTH: LÊ TRUNG KIÊN 88


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

4.3.2.2 Bước phân lớp (xác định intent) mô hình


4.3.2.2.1 Dữ liệu đầu vào

Hình 4.19: Lưu đồ giải thuật phân tích Hình 4.20: Lưu đồ giải thuật phân tích
đầu vào là giọng nói (Tiếng Anh) đầu vào là giọng nói (Tiếng Việt)
Khâu nhận dạng giọng nói tự động là khối đầu vào giúp người dùng tương tác
với trợ lý ảo bằng giọng nói. Các đầu vào là các vector đặc trưng đại diện cho đoạn
nói, được tạo ra bời quá trình tiền xử lý nhanh và trích xuất đặc tính của bài phát biểu.
Thành phần của Automatic Speech Recognition dựa vào sự kết hợp của mô hình
Hidden Markov (HMM) và một mô hình hỗn hợp Gaussian (GMM) hoặc một mạng
nơ-ron sâu (DNN).

HMM xây dựng một cây các trạng thái cho khung lời nói hiện tại sử dụng vector
tính năng đầu vào. GMM hoặc DNN đánh giá xác suất của sự chuyển đổi trạng thái
trong cây, và thuật toán Viterbi sau đó tìm kiếm con đường có nhiều khả năng nhất
dựa trên các điểm này. Đường dẫn có xác suất cao nhất thể hiện kết xuất văn bản cuối

SVTH: LÊ TRUNG KIÊN 89


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

cùng. Điểm GMM đánh giá HMM trạng thái chuyển tiếp bằng cách ánh xạ một vector
đối tượng đầu vào một hệ toạ độ đa chiều và lặp lại điểm số các đặc tính chống lại
mô hình âm thanh được đào tạo. DNN điểm số sử dụng xác suất từ một mạng thần
kinh. Độ sâu của DNN được xác định bởi số lớp ẩn mà số điểm cho một chuyển tiếp
đi qua mạng. Trong luận văn sẽ nghiên cứu chủ yếu về DNN vì nó có độ chính xác
cao hơn.

Để nhận dạng giọng nói tự động ta dùng thư viện speech_recognition:

Hình 4.21: Nhận dạng giọng nói tự động tiếng anh

SVTH: LÊ TRUNG KIÊN 90


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Hình 4.22: Nhận dạng giọng nói tự động tiếng việt


4.3.2.2.2 Tiền xử lý

Bước này giống với tiền xử lý của bước huấn luyện ta tách câu hỏi đầu vào dạng
text thành các từ độc lập để xử lý dữ liệu trước khi trích xuất đặc trưng.

Hình 4.23: Sơ đồ khối tiền xử lý phân lớp


4.3.2.2.3 Trích xuất đặc trưng

Hình 4.24: Sơ đồ khối trích xuất đặc trưng phân lớp

SVTH: LÊ TRUNG KIÊN 91


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Bước trích xuất đặc trưng trong phân lớp cũng giống trong bước đào tạo. Sau
khi câu hỏi qua tiền xử lý thì dữ liệu sẽ được gán vector từ cho câu với từ điển là dữ
liệu của bước training đã tạo.

4.3.2.2.4 Mô hình phân lớp

Hình 4.25: Sơ đồ khối phân lớp của mô hình


Ví dụ nếu ta nói “hello” thì đến Ở bước này ta dùng mạng nơ ron với dữ liệu nơ
ron được huấn luyện trước đó để phân tích và đưa ra kết quả, ví dụ ta nói “hello” thì
với đầu vào là 24 nơ ron [0. 0. 0. 0. 0. 0. 0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.
0.] và đầu ra là 4 giá trị tương ứng với 4 ý định (tags) [-2.7158, 4.7774, -2.1573, -
3.8762] ta thấy số lớn nhất là 4.7774 tương ứng với ý định “greeting”.

SVTH: LÊ TRUNG KIÊN 92


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

4.3.2.2.5 Kết quả

Hình 4.26: Sơ đồ khối tính toán đầu ra cho kết quả


Để giá trị dự đoán được chính xác ta tính xác xuất đầu ra phân lớp nếu có giá trị
nào trong mảng lớn hơn 85% thì sẽ trả kết quả là các câu trả lời của ý định có phần
trăm lớn nhất như ví dụ của mô hình phân lớp thì giá softmax cao nhất là 0.9983 của
ý định “greeting” và kết quả là câu trả lời (responses) ["HI", "Hello"].

4.3.2.2.6 Dữ liệu đầu ra

Hình 4.27: Sơ đồ khối đầu ra âm thanh Hình 4.28: Sơ đồ khối đầu ra âm thanh
tiếng anh tiếng việt

SVTH: LÊ TRUNG KIÊN 93


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Sau khi xác định được ý định thì bước tiếp theo là chọn ngẫu nhiên một câu trả
lời rồi chuyển câu trả lời dạng text tiếng anh sang âm thanh với thư viện “pyttsx3” để
người nghe có thể nghe được.

Đối với tiếng việt thì sau khi chọn ngẫu nhiên câu trả lời thì phải tiến hành thêm
bước dịch từ tiếng anh sang tiếng việt bằng thư viện “Translator” rồi mới chuyển sang
âm thanh bằng thư viện “gTTS” hỗ trợ đọc tiếng việt.

4.3.3 Xây dựng chương trình quản lý cơ sở dữ liệu người dùng.

Hình 4.29: Sơ đồ quản lý dữ liệu người dùng


Giải thích sơ đồ:

Để dễ dàng quản lý ta lưu dữ liệu vào ứng dụng Excel và để lưu được giá trị dữ
liệu từ máy tính về excel ta dùng thư viện openpyxl.

Một số trường hợp cần lưu dữ liệu:

SVTH: LÊ TRUNG KIÊN 94


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

- Nếu người dùng yêu cầu gửi tài liệu cho khoa cơ điện tử (ngăn chứa 1) hoặc
khoa tự động hóa (ngăn chứa 2) thì máy tính sẽ lưu lại lịch sử gửi của người này.

Hình 4.30: Dữ liệu lịch sử người dùng gửi tài liệu


- Nếu người dùng hỏi mà máy tính không hiểu thì sẽ được lưu lại dữ liệu câu
hỏi đó để có thể quản lý và đào tạo thêm những câu hỏi không trả lời được.

Hình 4.31: Dữ liệu lịch sử người dùng hỏi bị lỗi


- Nếu người quản lý truy cập vào cửa sau để lấy tài liệu thì máy tính cũng lưu
lại lịch sử.

SVTH: LÊ TRUNG KIÊN 95


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

Hình 4.32: Dữ liệu lịch sử truy cập của người quản lý


4.4 Thiết kế giao diện người dùng
4.4.1 Hướng dẫn thao tác với giao diện

Hình 4.33: Giao diện người dùng hệ thống chatbot


Bảng 4.6: Các nút chức năng
Button Chức năng Ảnh minh họa
Chạy chương trình

Thoát chương trình

SVTH: LÊ TRUNG KIÊN 96


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

- Cài đặt ngôn ngữ.


- Đăng nhập vào excel
quản lý cơ sở dữ liệu
người dùng.
- Truy cập mở cửa sau.
Nhấn để đưa tài liệu vào
ngăn dành cho khoa cơ
điện tử
Nhấn để đưa tài liệu vào
ngăn dành cho khoa tự
động hóa
4.4.2 Xây dựng giao diện

Hình 4.34: Sơ đồ điều khiển từ giao diện


Nút RUN: Sau khi nhấn chương trình sẽ chạy lúc này máy tính sẽ nghe và xử lý
giọng nói và dùng mô hình phân loại ý định để xác định câu trả lời đầu ra nếu không
nghe hoặc không xác định được ý định máy tính sẽ báo không hiểu và lưu câu hỏi
không hiểu đó vào excel rồi bắt đầu lặp lại nghe lần nữa ngược lại nếu xác định được
ý định thì máy tính sẽ trả lời khi ý định là yêu cầu mở ngăn một hoặc hai thì máy tính

SVTH: LÊ TRUNG KIÊN 97


CHƯƠNG 4: THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

sẽ trả lời, lưu dữ liệu vào excel và gửi tín hiệu xuống vi điều khiển để tiến hành hoạt
động khi xong thì máy tính bắt đầu nghe tiếp tục.

Nút Mechatronic: Khi nhấn máy tính sẽ lưu dữ liệu lên excel truyền dữ liệu
xuống vi điều khiển để tiến hành chạy cơ cấu đưa giấy vào ngăn của cơ điện tử khi
xong thì máy tính bắt đầu nghe tiếp tục.

Nút Automation: Khi nhấn máy tính sẽ lưu dữ liệu lên excel truyền dữ liệu
xuống vi điều khiển để tiến hành chạy cơ cấu đưa giấy vào ngăn của tự động hóa khi
xong thì máy tính bắt đầu nghe tiếp tục.

Nút Setting: Khi nhấn sẽ hiện ra giao diện chuyển ngôn ngữ và đăng nhập, để
vào excel xem dữ liệu hoặc mở cửa sau bắt buộc phải nhập đúng tài khoản được cấp.

Nút EXIT: Dừng và thoát tất cả chương trình

SVTH: LÊ TRUNG KIÊN 98


CHƯƠNG 5: PHẦN KẾT HỢP ĐỀ TÀI

CHƯƠNG 5: PHẦN KẾT HỢP ĐỀ TÀI

5.1 Thiết kế mô hình


5.1.1 Cơ sở thiết kế

Để mô hình mang tính trực quan và tăng khả năng giao tiếp robot với người
dùng thì phải đảm bảo độ cao phù hợp và phải phù hợp với độ tải của động cơ nên độ
cao được tăng thêm 400mm.

5.1.2 Bản thiết kế mô hình trên Inventor

Hình 5.1: Mô hình tổng quát kết hợp đề tài

SVTH: LÊ TRUNG KIÊN 99


CHƯƠNG 5: PHẦN KẾT HỢP ĐỀ TÀI

5.2 Sơ đồ mạch điều khiển

Hình 5.2:Sơ đồ điều khiển toàn hệ thống trên giao diện


Giải thích sơ đồ các nút điều khiển trên màn hình cảm ứng:

SVTH: LÊ TRUNG KIÊN 100


CHƯƠNG 5: PHẦN KẾT HỢP ĐỀ TÀI

❖ RUN: Đầu tiên khi kích hoạt camera sẽ được khởi động tiếp đến sẽ chạy
chương trình xử lý ảnh phát hiện khuôn mặt và bám theo đối tượng, nếu khuôn mặt
trong khung hình đúng trong 5s robot sẽ bắt đầu bám theo và điều chỉnh tọa độ khuôn
mặt vào giữa khung hình, khi vào đúng khung hình chương trình xử lý phát hiện
khuôn mặt kết thúc và chạy chương trình giao tiếp bằng giọng nói.
Robot sẽ nghe bằng micro và xử lý giọng nói dùng mô hình phân loại ý định để
xác định câu trả lời đầu ra nếu không nghe hoặc không xác định được ý định thì robot
sẽ báo không hiểu và lưu câu hỏi không hiểu đó vào excel rồi bắt đầu lặp lại nghe lần
nữa, ngược lại nếu xác định được ý định thì robot sẽ trả lời khi ý định là yêu cầu mở
ngăn một hoặc hai thì sẽ trả lời rồi lưu lại ảnh người gửi, dữ liệu vào excel và gửi tính
hiệu xuống vi điều khiển để tiến hành hoạt động đến khi hoàn tất robot trở lại trạng
thái bắt đầu nghe tiếp tục. Trong trường hợp nếu robot nghe quá 3 lần mà không thấy
phản hồi thì tự động sẽ chuyển sang chế độ đỗ xe ở vị trí đã định.
Sau khi kết thúc cuộc trò chuyện, robot sẽ bắt đầu xoay phải và chạy chương
trình phát hiện màu, đến khi phát hiện được màu đỏ (parking lot), giống như phát
hiện khuôn mặt robot di chuyển và cân chỉnh đối tượng và giữa khung hình, bám đến
vị trí đối tượng, sau khi đến đối tượng robot sẽ xoay 180 độ nhầm mục đích hướng
robot ra ngoài cho tầm camera quan sát, cuối cùng quay lại chương trình xử lý khuôn
mặt.
❖ Mechatronic: Khi kích hoạt chương trình sẽ lưu ảnh người dùng vào cơ sở dữ
liệu trên excel sau đó truyền dữ liệu xuống vi điều khiển để tiến hành chạy cơ cấu
đưa giấy vào ngăn cơ điện tử khi kết thúc thì robot bắt đầu nghe tiếp tục.
❖ Automation: Tương tự như mechatronic khi kích hoạt máy tính sẽ lưu hình
người gửi và lưu dữ liệu lên excel sau đó truyền dữ liệu xuống vi điều khiển để tiến
hành chạy cơ cấu đưa giấy vào ngăn tự động hóa đến khi kết thúc thì robot bắt đầu
trở lại nghe tiếp tục.
❖ Setting: Khi kích hoạt sẽ hiện ra giao diện chuyển ngôn ngữ và đăng nhập, để
vào excel xem dữ liệu hoặc mở cửa sau, bắt buộc phải nhập đúng tài khoản được cấp.

SVTH: LÊ TRUNG KIÊN 101


CHƯƠNG 5: PHẦN KẾT HỢP ĐỀ TÀI

❖ EXIT: Dừng và thoát tất cả chương trình.

Sơ đồ mạch điều khiển robot:

Hình 5.3: Sơ đồ đấu nối dây


Trung tâm điều khiển chính vẫn là Arduino Mega 2560, nhiệm vụ của master là
nhận lệnh từ máy tính, truyền lệnh cho các slave đồng thời thực hiện việc thu nhận
giấy tờ từ cổng vào, chuyển đổi các ngăn từ yêu cầu người gửi.

Slave công việc là chờ và nhận lệnh từ master, trong đó hai slave vẫn tiếp tục
giữ vai trò điều khiển động cơ DC, slave còn lại đảm nhận vai trò mở cổng sau để
người sử dụng lấy giấy tờ trong ngăn, đồng thời tích hợp thêm module RFID trong
việc mở cổng sau.

5.3 Mô hình hoàn chỉnh

Mô hình có kích thước 1200x408x430 có chiều cao 1200mm phù hợp với người
dùng tương tác với màn hình điều khiển, và dễ dàng thao tác gửi giấy tờ hành chánh
vào ngăn của robot.

SVTH: LÊ TRUNG KIÊN 102


CHƯƠNG 5: PHẦN KẾT HỢP ĐỀ TÀI

Robot có khối lượng xấp xỉ 9kg bao gồm toàn bộ hệ thống với tốc độ di chuyển
22 vòng/phút để quá trình dò tìm đối tượng ổn định và chính xác.

Hình 5.4: Mô hình kết hợp thực tế


5.4 Đánh giá

Mô hình khi kết hợp hoạt động tốt sau nhiều lần thực nghiệm, robot di chuyển
ổn định ít rung lắc, đảm bảo cho tầm nhìn camera quan sát và phát hiện đối tượng
hiệu quả, giao tiếp tốt với người dùng tương tác, các ngăn lấy tài liệu hoạt động tốt

Robot quản lý dữ liệu người sử dụng bao gồm người gửi tài liệu và người quản
lý truy cập vào cửa lấy tài liệu được lưu thông tin vào excel, hình ảnh người gửi được
lưu vào thư mục quản lý như (hình 5.5).

SVTH: LÊ TRUNG KIÊN 103


CHƯƠNG 5: PHẦN KẾT HỢP ĐỀ TÀI

Hình 5.5: Dữ liệu người gửi bao gồm thông tin và ảnh

SVTH: LÊ TRUNG KIÊN 104


CHƯƠNG 6: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

CHƯƠNG 6: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

6.1 Kết quả


6.1.1 Tạo dữ liệu cho chatbot

Bảng 6.1: Dữ liệu huấn luyện.

STT Tags Patterns Responses


- Hi
- Hey
- How are you - Hi
1 Greeting
- Is anyone there? - Hello
- Hello
- Good day
- Bye
2 goodbye - See you later - Bye
- Goodbye
- Thanks
- Happy to help!
- Thank you
3 thanks - Any time!
- That's helpful
- My pleasure
- Thanks a lot!
- What your name?
4 my name - My name is KP"
- What is the name
- my creator is Kien and
- Who is your creator? Phuoc
5 root source
- Who created you - Kien and Phuoc created
me
- I can help you find the
- can you help me? classroom, help you look
6 function
- what can you do for me? up the phone number of
the lecturer....
- I want to send documents
- Insert the document into
send faculty to Mechatronic
7 the slot below
Mechatronic - I want to send documents
Mechatronic
to electronic engine
- Mechatronic or
8 send doc - I want to send a document
Automation
- I want to send a document
- Insert the document into
send faculty to Automation
9 the slot below
Automation - I need to send documents
Automation
to Automation

SVTH: LÊ TRUNG KIÊN 105


CHƯƠNG 6: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

- I was born on June 18,


- your birthday
10 birthday 2021
- What is your date of birth?
- I was born on 18/6/2021
number - I want to meet Kien
11 phone Mr - What is Kien's phone - 0949071948
Kien number?
Introduction - Introduction to the Faculty - Please watch the video to
12
Faculty of Mechanical Engineering know more
- Introducing Can Tho
University of Engineering
University and Technology - Please watch the video to
13
introduction - About Can Tho University know more
of Engineering and
Technology
- Dean of the Department of
Mechanical Engineering - The Dean of the Faculty
- Head of Department of of Mechanical
14 Head Faculty
Mechanical Engineering Engineering is Do Vinh
- Who is the Dean of Quang
Mechanical Engineering?
- OK, I will speak
Vietnamese
- can you speak Vietnamese
- Yes, speak Vietnamese
15 laguane Vn - speak Vietnamese please
now
- Vietnamese please
- I also speak Vietnamese,
switch now
- OK, I will speak English
- can you speak English
- Yes, speak english now
16 laguane En - speak english please
- I also speak English,
- English please
switch now
- open youtube
17 open youtube - Youtube is opening
- you can open youtube

6.1.2 Kết quả đào tạo mô hình huấn luyện

Với dữ liệu đào tạo hiện tại là 17 ý định và 42 câu hỏi thì sau 1000 quá trình
huấn luyện thì cross entropy là 0.0005

SVTH: LÊ TRUNG KIÊN 106


CHƯƠNG 6: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

Hình 6.1: Kết quả huấn luyện mô hình


6.1.3 Kết quả phát hiện giọng nói tiếng việt

Bảng 6.2: Kết quả phát hiện giọng nói tiếng việt
Số
Stt Câu hỏi Câu trả lời Đúng
lần
Trưởng khoa kỹ Trưởng khoa của khoa kỹ thuật cơ khí
1 30 25
thuật cơ khí là ai là Đỗ Vinh Quan
Giới thiệu về cơ
2 30 Vui lòng xem video để biết thêm 28
điện tử
Giới thệu về Đại
học Kỹ thuật
3 30 Vui lòng xem video để biết thêm 27
Công nghệ Cần
Thơ
Bạn sinh ngày
4 30 Tôi sinh ngày 18/6/2021 26
mấy
Tôi có thể giúp bạn tìm lớp học, giúp
Bạn có thể giúp
5 30 bạn tra cứu số điện thoại của giảng viên 26
gì được cho tôi
....
6 30 Tạm biệt Hẹn gặp lại 24
7 30 Chào Chào Bạn 27
Bạn có thể nói
8 30 tiếng anh được Vâng, nói tiếng Anh bây giờ 24
không

SVTH: LÊ TRUNG KIÊN 107


CHƯƠNG 6: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

Bạn có thể nói


Tôi cũng nói tiếng Việt, chuyển đổi
9 30 tiếng việt được 29
ngay bây giờ
không.
10 30 Bạn tên gì Tôi tên là KP 27
Tôi muốn gặp
11 30 0949071948 24
Kiên
12 30 Mở youtube Đang mở youtube 27
Ai là người đã
13 30 Kiên và Phước đã tạo ra tôi 28
tạo ra bạn.
Tôi muốn gửi tài
14 30 Cơ điện tử hoặc tự động hóa 24
liệu
Tôi muốn gửi tài
15 30 liệu đến tự động Chèn tài liệu vào khe dưới tự động hóa 28
hóa
Tôi muốn gửi tài
16 30 liệu đến cơ điện Chèn tài liệu vào khe dưới cơ điện tử 25
tử
17 30 Cảm ơn Rất vui được giúp bạn 27
Kết quả sau nhiều lần thử nghiệm thực tế thì câu trả lời cho xác suất đúng khá
cao, máy tính nghe tốt với những câu dài có nhiều key word nhưng người dùng cần
nói chuẩn thì robot sẽ nhận dạng tốt hơn và đưa ra câu trả lời tốt hơn.

6.1.4 Kết quả phát hiện giọng nói tiếng anh

Bảng 6.3: Kết quả phát hiện giọng nói tiếng anh
Số
Stt Câu hỏi Câu trả lời Đúng
lần
Who is the Head
of Mechanical The Dean of the Faculty of Mechanical
1 30 24
Engineering Engineering is Do Vinh Quang
Department
Introduction to
the Faculty of
2 30 Please watch the video to know more 25
Mechanical
Engineering
introducing Can
3 30 Tho University Please watch the video to know more 21
of Technology
4 30 your birthday I was born on June 18, 2021 19

SVTH: LÊ TRUNG KIÊN 108


CHƯƠNG 6: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

I can help you find the classroom, help


what can you do
5 30 you look up the phone number of the 18
for me
lecturer....
6 30 Goodbye Bye 26
7 30 Hi Hello 24
Can you speak
8 30 Yes, speak english now 24
English
Can you speak
9 30 Yes, speak Vietnamese now 22
vietnamese
10 30 What your name My name is KP 21
11 30 I want meet kien 0949071948 21
open youtube
12 30 Youtube is opening 17
for me
Who is created
13 30 Kien and Phuoc created me 22
you
I want to send
14 30 Mechatronic or Automation 19
document
I want to send
Insert the document into the slot below
15 30 documents to 23
Automation
Automation
I want to send
Insert the document into the slot below
16 30 documents to 25
Mechatronic
Mechatronic
17 30 thanks Happy to help! 18
Kết quả sau nhiều lần thử nghiệm thực tế thì câu trả lời cho xác suất đúng khá
cao nhưng người dùng cần nói chuẩn thì robot sẽ nhận dạng tốt hơn và đưa ra câu trả
lời tốt hơn.

SVTH: LÊ TRUNG KIÊN 109


CHƯƠNG 6: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

6.1.5 Kết quả lưu trữ dữ liệu người dùng

Hình 6.2: Phân tích dữ liệu trên excel


6.1.6 Điều khiển robot

Hình 6.3: Hoạt động khi giấy tờ vào

SVTH: LÊ TRUNG KIÊN 110


CHƯƠNG 6: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

Hình 6.4: Hoạt động khi mở cửa sau


Cơ cấu đóng mở khá tốt khi nhận tín hiệu từ chương trình điều khiển hệ thống.

6.2 Đánh giá

Chương trình xử lý xác định giọng nói và giao tiếp với điều khiển đạt yêu cầu
hoạt động được đề ra, đồng thời đảm bảo được giao tiếp với người nói liên tục.

Mô hình chatbot xử lý đóng mở và chuyển đổi ngăn hoạt động tốt.

Giao tiếp giữa máy tính và vi điều khiển nhanh chóng và ổn định.

Giao diện hiển thị và điều khiển tốt không bị lỗi.

6.3 Kết luận


6.3.1 Kết quả đạt được
- Xây dựng thiết kế mô hình chatbot quản lý tài liệu trên Autodesk Inventor.
- Chế tạo thành công mô hình chatbot quản lý tài liệu thực tế.
- Xây dựng giao diện thành công tương tác với người dùng.
- Giao tiếp cổng COM thành công giữa máy tính và vi điều khiển
- Chương trình xử lý xác định giọng nói hoạt động giao tiếp tốt với người dùng
bằng tiếng Anh và tiếng Việt.

SVTH: LÊ TRUNG KIÊN 111


CHƯƠNG 6: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN

- Mô hình chatbot đưa giấy tờ vào các ngăn hoạt động đúng như yêu cầu đặt ra.
6.3.2 Các hạn chế của đề tài
- Mô hình chatbot quản lý tài liệu còn bị hạn chế số ngăn và phương thức đóng
mở và lưu trữ khác.
- Hệ thống chương trình xử lý xác định giọng nói đòi hỏi người dùng phải giao
tiếp chuẩn ngôn ngữ tiếng Anh hoặc tiếng Việt.
- Khả năng nghe bị giới hạn bởi tiếng ồn.
- Vì câu trả lời tiếng việt được dịch từ dữ liệu tiếng anh nên có một số từ robot
nói không chuẩn nghĩa.
6.4 Hướng phát triển
- Xây dựng cơ cấu đóng mở, chuyển đổi giữa các ngăn của mô hình chatbot linh
hoạt và hiệu quả hơn.
- Xây dựng mô hình chatbot có nhiều ngăn và ngoài chứa giấy tờ hành chính
còn có thể chứa được các thủ tục khác.
- Tăng khả năng thông minh của chatbot hơn có thể tự đào tạo không cần con
người can thiệp.
- Xử lý tiếng ồn cho chương trình có thể giao tiếp tốt hơn.
- Xây dựng thêm nhiều ngôn ngữ giao tiếp với người dùng.
- Dùng máy tính nhúng thay vì laptop cồng kềnh.
- Kết nối điều khiển với các thiết bị không dây iot.

SVTH: LÊ TRUNG KIÊN 112


TÀI LIỆU THAM KHẢO

TÀI LIỆU THAM KHẢO

[1] Nguyễn Văn Quyền (2016), Luận Văn Thạc Sĩ: "Xây Mô Hình Bán Hàng Trên
Internet", Hà Nội.

[2] Nguyễn Hữu Cường (2017), Luận Văn Thạc Sĩ: "Nghiên Cứu Hệ Thống Trợ Lý
Thông Minh Ảo", Hà Nội.

[3] Demuth, H. and M. Beale, 2005. Neural Network Toolbox – User’s Guide®.
MathWorks, Inc.

[4] Elizabeth D.Liddy. “Natural Language Processing”, Syracuse University 2001.

[5] Đỗ Viết Mạnh (2020), Luận Văn Thạc Sĩ: "Xây dựng Chatbot Bán Hàng Dựa
Trên Mô Hình Sinh", Hà Nội.

[6] Nguyễn Đắc Nam (2017), Luận Văn Thạc Sĩ: "Hệ Thống Tự Động Phân Luồn
Câu Hỏi Và Giải Đáp Yêu Cầu Trực Tuyến", Hà Nội.

[7] Nguyễn Chí Ngôn, Trần Thanh Hùng, Trương Thị Thanh Tuyền, Nguyễn Thái
Nghe (2005), "Ứng Dụng Mạng Nơ-Ron Nhân Tạo Ðể Ðiều Khiển Thiết Bị Bằng
Giọng Nói Tiếng Việt", Tạp Chí Khoa Học Trường Đại Học Cần Thơ, (Số chuyên đề:
Nghiên cứu khoa học,2005:3 96-103)

[8] Nguyen Tan Phu,Nghia Duong-Trung (2020) "Chatbot for University Admission
Services”: Design and Implementation based on Long-short-term Memory Networks"
Hội thảo quốc gia lần thứ XXIII ,Quảng Ninh.

[9] Steven "Steven Bird, Ewan Klein & Edward Loper (2009), Sách: "Natural
Language Processing with Python"", Printed in the United States of America”

[10] Nguyễn Tấn Tiến (2019), Luận Văn Thạc Sĩ: "Nghiên Cứu Và Xây Dựng Chatbot
Hỗ Trợ Người Dùng Trong Ngân Hàng", Hà Nội.

[11] Phan Thanh Toàn (2018), Đồ Án Tốt Nghiệp: "Điều Khiển Xe Robot Bằng Giọng
Nói Với Raspberry pi 3", Tp Hồ Chí Minh.

SVTH: LÊ TRUNG KIÊN 113


TÀI LIỆU THAM KHẢO

[12] Nguyễn Thanh Tuấn (2019), Sách: "Deep Learning Cơ Bản"

[13] Vũ Thị Tuyến (2016)., Luận Văn Thạc Sĩ: “Một số mô hình học máy trong phân
loại câu hỏi”, Hà Nội.

[14] Thủy Nguyễn Thành: Mã nguồn dự án Chatbot. Truy xuất


https://github.com/thuynguyenthanh/VIETNAM-AIRLINES-Assistant-PROJECT/

Các website tham khảo:

[15] CODE LÝ CODE HÀNH,"Trợ Lý Ảo | Lập trình Trợ Lý Ảo tiếng


việt",https://www.youtube.com/watch?v=2BCvwaRX_BA.

[16] Mì AI, "Lập trình giao diện đồ hoạ đa luồng với Tkinter trên
Python",https://www.youtube.com/watch?v=MHva487-DH0.

[17] Patrick (2020), "Chat Bot With PyTorch - NLP And Deep Learning",
https://www.python-engineer.com/posts/chatbot-pytorch/

[18] ProtonX, "Giới thiệu về Machine Learning + Deep Learning" ,


https://www.youtube.com/watch?v=j5HxIJoOJms.

[19] Tech With Tim, "Python Chat Bot Tutorial - Chatbot with Deep
Learning",https://www.youtube.com/watch?v=PzzHOvpqDYs

SVTH: LÊ TRUNG KIÊN 114


PHỤ LỤC

PHỤ LỤC

Nguồn code luận văn:

Link google drive:

https://drive.google.com/drive/folders/1SvicVinguXFDEhDMt2Ef1LmmvJPo3cBP
?usp=sharing

Mã QR:

SVTH: LÊ TRUNG KIÊN 115

You might also like