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

XÂY DỰNG CHATBOT hỗ TRỢ học lập TRÌNH HƯỚNG đối TƯỢNG

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

ĐẠI HỌC QUỐC GIA TP.HCM
ĐẠI HỌC CÔNG NGHỆ THÔNG TIN

KHOA CÔNG NGHỆ PHẦN MỀM

BÁO CÁO MÔN HỌC: ĐỒ ÁN 2
ĐỀ TÀI: XÂY DỰNG CHATBOT HỖ TRỢ HỌC LẬP TRÌNH HƯỚNG
ĐỐI TƯỢNG

Giảng viên hướng dẫn: ThS. Huỳnh Tuấn Anh
Nhóm sinh viên thực hiện:
1. Nguyễn Song Luân

17520720

2. Nguyễn Thành Luân

17520722


Nội dung
Chương 1. Tổng quan.....................................................................................................3
1.1

Đặt vấn đề........................................................................................................3

1.2

Mục tiêu...........................................................................................................3

1.3



Đối tượng hướng đến và phạm vi đề tài...........................................................4

1.4

Kế hoạch thực hiện..........................................................................................4

1.5

Yêu cầu ứng dụng............................................................................................4

Chương 2. Cơ sở lý thuyết..............................................................................................6
2.1

Trí tuệ nhân tạo................................................................................................6

2.2

Giới thiệu sơ lược về MongoDB......................................................................6

2.3

Chatbot............................................................................................................7

Chương 3. Thiết kế.......................................................................................................14
3.1

Cơ sở dữ liệu..................................................................................................14

3.2


Sơ đồ tuần tự..................................................................................................14

3.3

Sơ đồ hoạt động.............................................................................................15

3.4

Sơ đồ trạng thái..............................................................................................16

Chương 4. Hiện thực ứng dụng.....................................................................................17
4.1

Tạo cơ sở dữ liệu...........................................................................................17

4.2

Lập trình phía Server.....................................................................................22

4.3

Lập trình phía Client......................................................................................23

4.4

Xây dụng giao diện cho web chatbot.............................................................24

Chương 5. Kết luận và hướng phát triển.......................................................................25
5.1


Kết quả đạt được............................................................................................25

5.2

Hạn chế..........................................................................................................25

5.3

Hướng phát triển đề tài..................................................................................25

Chương 6. Bảng phân công...........................................................................................26
Chương 7. Trích dẫn, tài liệu tham khảo.......................................................................27


Chương 1. Tổng quan
1.1 Đặt vấn đề
Trong sự phát triển của lĩnh vực công nghệ thông tin, chatbot đang phát triển rất mạnh
mẽ ở thời điểm hiện tại và cả tương lai. Chatbot đang được sử dụng rất nhiều và rộng rãi ở
rất nhiều nơi, rất nhiều lĩnh vực như: y tế, chăm sóc khách hàng, bán hàng,…
Chatbots phát triển dựa trên các kịch bản có sẵn. Người phát triển sẽ huẩn luyện bằng
cách đưa những dữ liệu câu hỏi và chatbot sẽ sử dụng thuật tốn để phân tích các câu hỏi và
đưa gắn nhãn. Khi nhận được tin nhắn từ người dùng, chatbot sẽ phân tích tin nhắn và dựa
vào những dữ liệu đã huấn luyện trước đó để đưa ra một nhãn để gắn cho tin nhắn. Sau đó,
hệ thống sẽ gọi dữ liệu từ database để tìm câu trả lời có nhãn phù hợp với nhãn vừa phân
tích. Ở mợt cấp đợ khác, chatbot sẽ tự tạo câu trả lời thông qua những kinh nghiệm đã được
học trước đó. Để làm được như vậy chatbot cần phải có dữ liệu để huấn luyện đủ lớn và
thuật toán để áp dụng cho chatbot phải phù họp.
Hiện nay chatbot đang được áp dụng vào rất nhiều lĩnh vực trong c̣c sống, trong đó
phải kể đến lĩnh vực giáo dục đang được quan tâm rất lớn. Chatbot mang lại sự thuận tiện

giúp ôn lại kiến thức, đưa ra các ví dụ, hình ảnh, có tính tự đợng hóa cao, có thể được sử
dụng ở nhiều nơi khi có kết nối internet. Do đó nhóm thực hiện đồ án đề tài: “Xây dựng
chatbot hỗ trợ học lập trình hướng đối tượng”.

1.2 Mục tiêu
Mục tiêu của chính của đề tài là xây dựng một trang web chatbot hỗ trợ cho việc học
lập trình hướng đối tượng (OOP) thơng qua việc sử dụng thư viện hỗ trợ xử lý ngôn ngữ tự
nhiên trên Nodejs “vntk”. Backend ứng dụng được viết bằng Nodejs và Frontend sử dụng
Angular.


1.3 Đối tượng hướng đến và phạm vi đề tài
Đối tượng hướng đến là sinh viên đang theo học tại trường Đại học Cơng nghệ thơng
tin có nhu cầu học lập trình hướng đối tượng. Rợng hơn là những sinh viên , học sinh có
hứng thú với việc học OOP.
Phạm vi đề tài:
-

Phạm vi đề tài trong Trường Đại học Công nghệ thông tin.
Thời gian thực hiện: 01/10/2020 đến 15/01/2021

1.4 Kế hoạch thực hiện
STT
1
2
3
4
5
6
7

8
9

Nội dung
Tìm hiểu về AI
Tìm hiều về chatbot
Tìm hiểu về Nodejs, Angular, MongoDB Atlas
Xây dựng bợ dữ liệu mẫu
Xây dựng backend
Xây dựng frontend
Xử lý frontend khi người dùng gửi câu hỏi
Kết nối frontend và backend
Xây dựng bộ dữ liệu câu hỏi và câu trả lời cho
chatbot
Sửa lỗi phát sinh, thêm dữ liệu nếu cần

10

Thời gian
1 tuần
2 tuần
2 tuần
3 ngày
1 tuần
1 tuần
1 tuần
1 tuần
2 tuần

1.5 Yêu cầu ứng dụng

1.5.1 Yêu cầu chức năng
-

Chatbot tự động trả lời câu hỏi của người dùng về chủ đề hướng đối tượng.

1.5.2 Yêu cầu phi chức năng
-

Trang web được thực hiện front-end bằng Angular và back-end bằng Nodejs.
Hoạt động tốt trên nhiều trình duyệt khác nhau.
Tốc đợ phản hổi nhanh chóng, có đợ chính xác nhất định.
Giao diện dễ nhìn, dễ tiếp cận.


1.5.3 Yêu cầu hệ thống
Người dùng:
-

Phần cứng: CPU Intel G4600 3.9 GHz hoặc cao hơn. RAM 2GB hoặc cao hơn.
Phần mềm: OS tối thiều Window 7/XP. Sử dụng được cho hầu hết các trình duyệt.

Người phát triển web:
-

Phần cứng: CPU Intel i5 7200U 2.5 GHz. RAM 4GB
Phần mềm:
 OS Window 10 Home.
 Trình duyệt Microsoft Edge, Brave.
 Database: MongoDB Atlas
 IDE: Visual Studio Code



Chương 2. Cơ sở lý thuyết
2.1 Trí tuệ nhân tạo
Trí tuệ nhân tạo hay trí thơng minh nhân tạo (Artificial intelligence – viết tắt là AI) là
một ngành thuộc lĩnh vực khoa học máy tính (Computer science). Là trí tuệ do con người lập
trình tạo nên với mục tiêu giúp máy tính có thể tự đợng hóa các hành vi thơng minh như con
người.
Trí tuệ nhân tạo khác với việc lập trình logic trong các ngơn ngữ lập trình là ở việc ứng
dụng các hệ thống học máy (machine learning) để mơ phỏng trí tuệ của con người trong các
xử lý mà con người làm tốt hơn máy tính. Cụ thể, trí tuệ nhân tạo giúp máy tính có được
những trí tuệ của con người như: biết suy nghĩ và lập luận để giải quyết vấn đề, biết giao tiếp
do hiểu ngơn ngữ, tiếng nói, biết học và tự thích nghi,…
Tuy rằng trí thơng minh nhân tạo có nghĩa rợng như là trí thơng minh trong các tác
phẩm khoa học viễn tưởng, nó là mợt trong những ngành trọng yếu của tin học. Trí thơng
minh nhân tạo liên quan đến cách cư xử, sự học hỏi và khả năng thích ứng thơng minh của
máy móc.
Trí tuệ nhân tạo được ứng dụng trong rất nhiều lĩnh vực trong đời sống như: giao
thông, sản xuất, y tế, truyền thông, dịch vụ, giáo dục,…

2.2 Giới thiệu sơ lược về MongoDB
NoSQL cho phép mở rợng dữ liệu mà khơng cần tạo khóa ngoại, khóa chính hay kiểm
tra tính ràng ḅc… Có thể thấy, dạng cơ sở dữ liệu này có thể linh đợng, sẵn sàng bỏ qua
tính tồn vẹn cứng nhắc của transaction hay dữ liệu nhằm đổi lấy hiệu suất, cùng với khả
năng mở rộng tốt.
MongoDB là phần mềm cơ sở dữ liệu mã nguồn mở NoSQL hỗ trợ đa nền tảng được
thiết kế theo hướng đối tượng. Các bảng (trong MongoDB gọi là collection) có cấu trúc linh
hoạt cho phép dữ liệu không cần tuân theo dạng cấu trúc nào. MongoDB sử dụng lưu trữ dữ
liệu dưới dạng Document JSON nên mỗi mợt collection sẽ có các kích cỡ và các document



khác nhau. Các dữ liệu được lưu trữ trong document kiểu JSON nên truy vấn sẽ rất nhanh và
có thể lưu trữ được lượng lớn dữ liệu.
Ưu điểm:
Lưu trữ dữ liệu phi cấu trúc, khơng có tính ràng ḅc, tồn vẹn nên tính sẵn sàng cao,
hiệu suất lớn và dễ dàng lưu trữ, mở rộng.
Dữ liệu được ghi đệm lên RAM nên tốc độ đọc và ghi cao.
Nhược điểm:
Không áp dụng được cho các mơ hình có u cầu đợ chính xác cao vì khơng có các
tính chất ràng ḅc như cơ sở dữ liệu quan hệ.

2.3 Chatbot
2.3.1 Chatbot là gì?
Chatbot là phần mềm máy tính được xây dựng dựa trên nền tảng trí tuệ nhân tạo (AI)
cho phép doanh nghiệp thực hiện các c̣c trị chuyện với khách hàng thông qua tin nhắn
văn bản hoặc âm thanh dựa trên cơng nghệ chuyển văn bản thành giọng nói text-to-speech.
Chatbot cho phép người dùng tương tác với các thiết bị số như thể với người thật. Chatbots
có thể là mợt chương trình thơ sơ trả lời mợt số truy vấn đơn giản hoặc cũng có thể là mợt
chương trình tinh vi như các trợ lý kỹ thuật số tìm hiểu và phát triển để cung cấp mức đợ cá
nhân hóa ngày càng tăng khi chúng thu thập và xử lý thông tin người dùng.
Chatbot là một công cụ trong tiếp thị đàm thoại (conversational marketing), ngày nay
chatbot được các doanh nghiệp sử dụng rộng rãi trên các website, ứng dụng, fanpage của
mình như mợt trợ lý giao tiếp thay doanh nghiệp thực hiện trị chuyện với khách hàng.
Chatbot hoạt đợng dựa trên kịch bản có trước do doanh nghiệp biên tập sẵn. Bằng trí
thơng minh nhân tạo (AI) mợt chatbot có thể nhận dạng, phân tích câu hỏi của khách hàng
và đưa ra phản hồi chính xác trong tức khắc. Bên cạnh đó chatbot cũng có thể tự học thêm
nhiều câu hỏi khơng có trong kịch bản thơng qua q trình tương tác với khách hàng.
2.3.2 Lịch sử hình thành và phát triển
Năm 1950: Các phép thử Turing



Alan Turing viết báo cáo với tựa đề “Computing Machinery and Intelligence”, xây
dựng các phép thử Turing. Về cơ bản, Các phép thử Turing là một loạt các phép thử dựa trên
việc phân tích câu trả lời của mợt “máy tính”. Các phép thử Turing được thực hiện để xác
định xem mợt chương trình máy tính có thể phân biệt được máy tính với con người trong
mợt c̣c trị chuyện chỉ có văn bản thuần túy hay khơng? Bằng cách gõ câu hỏi cho cả hai
đối tượng thử nghiệm, người thẩm vấn sẽ cố gắng xác định đối tượng nào là máy tính và đối
tượng nào là con người. Máy tính sẽ vượt qua Các phép thử Turing nếu người thẩm vấn
khơng thể nói sự khác biệt giữa chủ thể con người và máy tính.
Năm 1966: ELIZA, chương trình trị chuyện đầu tiên được tạo ra
Chatbot đầu tiên được ra đời với tên gọi là Eliza, và là một chương trình máy tính của
Joseph Weizenbaum (Viện Cơng nghệ Massachusetts, Mỹ). Ban đầu Eliza được tạo ra nhằm
hỗ trợ điều trị tâm lý, đóng vai trị là mợt bác sĩ, có thể giao tiếp những câu đơn giản với
bệnh nhân để kích thích sự tương tác của họ. Khi gặp những câu khơng có trong kịch bản,
phần mềm sẽ tự đợng lấy mợt từ khóa nhận được từ thơng điệp gửi tới của bệnh nhân và bảo
họ giải thích thêm. Mặc dù có sự hạn chế về nhiều mặt, Eliza vẫn được xem là tiền đề để có
thể phát triển chatbot như ngày nay.
Năm 1972: Bác sĩ Kenneth Colby phát triển chatbot PARRY
Kenneth Colby đã phát triển chatbot với tên gọi PARRY được phát triển bởi Kenneth
Colby - một bác sĩ tâm thần. Chương trình này đóng vai trị là mợt bệnh nhân bị tâm thần
phân liệt hoang tưởng. Các bác sĩ tâm thần khi tham gia thử nghiệm đã không thể xác định
sự khác biệt giữa những cuộc hội thoại của PARRY và những cuộc hội thoại khác giữa các
bệnh nhân tâm thần với nhau.
Năm 1988: Chatbot Jabberwacky
Được phát triển vào những năm 1980 và phát hành trực tuyến vào năm 1997, chatbot
Jabberwacky được thiết kế để “Mơ phỏng trị chuyện của con người tự nhiên theo cách thú
vị và hài hước“. Mục đích ban đầu của dự án Chatbot Jabberwacky là tạo ra mợt trí tuệ nhân
tạo có khả năng vượt qua Các phép thử Turing.



Nó được thiết kế để bắt chước tương tác của con người và thực hiện các cuộc hội thoại
với người dùng. Mục đích cuối cùng của chương trình là chuyển từ mợt hệ thống dựa trên
văn bản sang tồn bợ hoạt đợng bằng giọng nói. Tác giả của nó tin rằng nó có thể được kết
hợp vào các vật thể xung quanh nhà như robot, các thiết bị thông minh,…
Trong khi tất cả các chatbot trước đó dựa trên cơ sở dữ liệu tĩnh để trả lời và trò
chuyện, Jabberwacky thu thập cụm từ được sử dụng bởi những người tham gia trị chuyện
với nó. Nó tự thêm những câu trả lời vào cơ sở dữ liệu và tự động phát triển nợi dung của
riêng mình. Trong năm 2008, Jabberwacky đã phát hành một phiên bản mới và đổi tên thành
Cleverbot.
Năm 1992: Dr. SBAITSO

Hình 1 Đoạn chat giữa người dùng và Dr SBAITSO

Được tạo ra bởi Creative Labs vào đầu những năm 1990, Dr SBAITSO là từ viết tắt
của Sound Blaster Artificial Intelligent Text to Speech Operator). Dr. SBAITSO “trò
chuyện” với người dùng như thể nó là mợt nhà tâm lý học. Mặc dù hầu hết các câu trả lời
của nó đều là “WHY DO YOU FEEL THAT WAY?” nghĩa là “Bạn cảm thấy như thế nào?”.
Thay vì bất kỳ loại tương tác phức tạp, khi đối mặt với một cụm từ mà nó khơng thể hiểu
được, nó thường trả lời là “THAT’S NOT MY PROBLEM” (Đó khơng phải là vấn đề của
tôi).
Năm 1995: ALICE


ALICE được xây dựng trên cùng một kỹ thuật được sử dụng để tạo nên ELIZA. ALICE
ban đầu được sáng tạo bởi Richard Wallace, ra đời vào ngày 23 tháng 11 năm 1995. Chương
trình được viết lại bằng ngơn ngữ Java vào năm 1998. ALICEBOT sử dụng một lược đồ
XML có tên AIML (Artificial Intelligence Markup Language- Ngơn ngữ đánh dấu trí thơng
minh nhân tạo) để xác định các quy tắc trị chuyện heuristic. Tuy nhiên, nó lại khơng thể
vượt qua Các phép thử Turing.
Năm 2001: SmarterChild

SmarterChild là một Chatbot có sẵn trên mạng AOL Instant Messenger và Windows
Live Messenger (trước đây là MSN Messenger). AOL Instant Messenger là một chương
trình tin nhắn tức thời do AOL tạo ra, sử dụng giao thức nhắn tin tức thời OSCAR độc quyền
và giao thức TOC để cho phép người dùng đăng ký giao tiếp trong thời gian thực.
SmarterChild đóng vai trị giới thiệu cho việc truy cập dữ liệu nhanh và cuộc trị
chuyện được cá nhân hóa thú vị hơn. Hơn nữa, khi kết hợp với các nhà mạng, chúng trở
thành một kênh tiếp thị hiệu quả và miễn phí. Chúng giúp người dùng giao tiếp nhanh chóng
với hệ thống mạng bằng cách hiển thị các thông tin ngắn gọn với các lựa chọn trên bàn phím
điện thoại.
Năm 2006: IBM Watson
Với khả năng chạy hàng trăm thuật tốn phân tích ngơn ngữ cùng một lúc, IBM
Watson sở hữu một sự thông minh ngôn ngữ đáng ngạc nhiên. IBM thiết lập cho Watson có
quyền truy cập vào cơ sở dữ liệu khổng lồ về thơng tin. Watson có thể nhanh chóng truy cập
200 triệu trang dữ liệu, làm cho nó trở thành mợt máy trả lời câu hỏi lý tưởng (hoặc, trong
trường hợp của Jeopardy, Watson trở thành máy tạo câu hỏi lý tưởng).
Năm 2010-2016: Thời kỳ bùng nổ các trợ lý ảo
Nửa đầu thập kỷ này chứng kiến sự bùng nổ của các trợ lý cá nhân ảo: Siri (2010),
Google Now (2012), Alexa (2015), Cortana (2015) và Google Assistant (2016). Với khả
năng phân tích và xử lý ngơn ngữ tự nhiên, các trợ lý này kết nối với các dịch vụ web để trả
lời các câu hỏi và đáp ứng các yêu cầu của người dùng.
Từ năm 2016 đến nay: Chatbot Messenger bùng nổ


Từ sau hội nghị F8 năm 2016, Facebook – mạng xã hội lớn nhất thế giới giới thiệu
Messenger Platform. Một nền tảng thân thiện hơn và cho phép bất kỳ ai cũng có thể tạo cho
mình mợt Chatbot. Ngay sau đó, các ứng dụng chat khác như LINE, WhatsApp, Telegram
hay Twitter cũng đưa ra các hỗ trợ hoặc các API cho phép người dùng tạo các Chatbot trên
ứng dụng nhắn tin.
Chatbot giờ đây không chỉ đơn giản chỉ là dựa trên kịch bản. Với sự phát triển mạnh
mẽ của Trí thông minh nhân tạo và học máy, các bots giờ đây có khả năng “học tập” và tự

phát triển. Nhiều nhà phân tích và dự báo cũng như các cơng ty công nghệ hàng đầu như
Alphabet, Microsoft, IBM, … đều dự đoán Chatbot sẽ thống trị lĩnh vực dịch vụ khách hàng
trong 5-10 năm nữa.
2.3.3 Phân loại chatbot
Dựa trên dịch vụ mà chatbot cung cấp:
Chatbot bán hàng: là một công cụ hỗ trợ bán hàng 24/7, thu thập các thông tin về sản
phẩm, giá cả, kích thước, thơng tin cá nhân của khách hàng (tên, tuổi, địa chỉ, số điện
thoại,..) giúp doanh nghiệp dễ dàng chốt đơn, đảm bảo không bỏ sót đơn hàng nào của
khách hàng
Chatbot chăm sóc khách hàng: được bợ phận chăm sóc khách hàng sử dụng như một
nhân viên tư vấn, giải đáp những thắc mắc, yêu cầu, khiếu nại của khách hàng nằm trong
kịch bản lập trình sẵn, với những tình huống phức tạp hơn chatbot sẽ chuyển đến cho các
chuyên viên chăm sóc khách hàng để được giúp đỡ giải quyết vấn đề cho khách hàng.


Dựa trên platform chatbot sử dụng:
API.AI: Được hỗ trợ bởi Google và chạy trên Google Cloud Platform với nhiều ưu
điểm nổi bật: hỗ trợ trên 20 ngôn ngữ, kết hợp với AI (trí thơng minh nhân tạo và máy học)
và hỗ trợ xây dựng bởi nhiều ngơn ngữ lập trình (Android, iOS, C++, Java, JavaScript,
HTML, Cordova, Node.js, Unity, Xamarin, Ruby, Python,...)
WIT.AI: Được xây dựng và ra mắt bởi ông lớn mạng xã hội Facebook tại hội nghị F8
vào năm 2016, với tên gọi Messenger Platform. Một số công cụ khác hỗ trợ xây dựng
chatbot miễn phí và dễ dàng cũng được phát triển dựa trên nền tảng WIT.AI (Chatfuel, Hara
Funnel, Pandorabots)
Watson: Watson là mợt chương trình ứng dụng được nghiên cứu và phát triển bởi IBM
gồm các kỹ thuật cao cấp như xử lý ngơn ngữ tự nhiên, tìm kiếm thông tin, diễn đạt, lý giải
tri thức và học máy cho lĩnh vực trả lời các câu hỏi mở.
Dựa trên trải nghiệm người dùng:
Chatbot theo kịch bản: còn được gọi là chatbot dạng menu/button là dạng chatbot cơ
bản nhất. Hệ thống chatbot này giao tiếp với khách hàng bằng cách sử dụng mơ hình cây

quyết định, đưa ra cho khách hàng những tùy chọn cho khách hàng và có thể trải qua nhiều
câu hỏi để đào sâu nhu cầu của họ.
Chatbot nhận dạng từ khóa: hệ thống thực hiện nhận dạng cá từ khóa trong thơng điệp
khách hàng gửi đến để thấu hiểu câu hỏi và tìm ra câu trả lời phù hợp. Loại chatbot này có
thể tích hợp với menu/button để mang lại hiệu quả giao tiếp tốt hơn.
Chatbot trò chuyện theo ngữ cảnh: sử dụng Machine Learning (ML) và Trí thơng minh
nhân tạo (AI) để ghi nhớ các cuộc hội thoại với người dùng cụ thể phục vụ cho việc xử lý
các tình huống theo yêu cầu của khách hàng.


2.3.4 Nguyên tắc hoạt động của chatbot
Chatbot hoạt động dựa theo quy trình sau:
Đầu tiên, thơng tin từ khách hàng sẽ được chatbot ghi nhận, sau đó tiến hành nhận dạng
và mã hóa sang ngơn ngữ lập trình mà máy tính có thể hiểu được
Với sự hỗ trợ của cơng nghệ AI, chatbot truy cập vào kho dữ liệu được lập trình sẵn để
tìm kiếm câu trả lời phù hợp
Sau đó, chatbot sẽ tự đợng gửi phản hồi đến khách hàng.
2.3.5 Lợi ích chatbot
Chatbot ln ở trạng thái chờ tin nhắn nên có thể tiếp nhận yêu cầu từ người dùng bất
kỳ lúc nào, hoạt động xuyên suốt không mệt mỏi và đưa ra câu trả lời mợt cách nhanh
chóng.
Chatbot có thể hỗ trợ rất nhiều người dùng cùng lúc mà không xảy ra nhầm lẫn.
Chatbot sẽ không bắt người dùng phải chờ đến lượt của mình để được tư vấn.
Hiệu quả, tiết kiệm chi phí. Chatbot có thể giao tiếp với rất nhiều khách hàng trong
cùng một khoảng thời gian vì vậy sẽ tiết kiệm nhân cơng, nâng cao hiệu quả làm việc.
Tự đợng hóa những cơng việc gây nhàm chán. Chatbot sẽ làm việc liên tục các công
việc mợt cách tự đợng hóa mà khơng nhàm chán. Trong khi con người sẽ nhàm chán nếu
thực hiện một công việc lặp đi, lặp lại nhiều lần.



Chương 3.Thiết kế
3.1 Cơ sở dữ liệu
Cơ sở dữ liệu sử dụng MongoDB để lưu trữ các câu trả lời và dữ liệu để huấn luyện
cho chatbot. Dữ liệu được mô tả trong bảng sau.
Collection
Trường dữ liệu

Botmessages
messageContent: String array;
keywords: String array;
title: String;
label: String;

3.2 Sơ đồ tuần tự
Người dùng nhắn tin

Trainingdatas
dataTraining: String array;
label: String;


3.3 Sơ đồ hoạt động


3.4 Sơ đồ trạng thái


Chương 4.Hiện thực ứng dụng
4.1 Tạo cơ sở dữ liệu
Chuẩn bị:

 Máy tính có kết nối internet.
 Mợt tài khoản Google hoặc có thể tạo mợt tài khoản trên MongoDB.
Ứng dụng sử dụng MongoDB Atlas, lưu trữ dữ liệu trên mây, vì thế để xây dụng cơ sở
dữ liệu truy cập vào trang Log in | MongoDB và chọn đăng nhập với tài khoản Google.

Hình 2 Trang đăng nhập MongoDB


Sao khi đăng nhập thành công, tiến hành tạo một Organization

Hình 3 Tạo Organization

Sau đó tiến hành tạo mợt Project

Hình 4 Tạo 1 Project



Sau khi đã có 1 Project, tạo 1 cluster và chọn những thơng tin cần thiết.

Hình 5 Tạo một custer và chọn các thông tin cần thiết

Sau khi hệ thống tạo xong cluster. Chọn Database Access để thêm user mới và thiết lập
các quyền cần thiết.


Hình 6 Tạo User mới

Thiết lập network access.


Hình 7 Thiết lập network access

Sau khi đã thiết lập xong, chọn collections để vào trang quản lý các collections


Hình 8 Chọn collections


Chọn Add My Own Data để tạo cơ sở dữ liệu.

Hình 9 Tạo cơ sở dữ liệu

Sau khi tạo xong màn hình sẽ tượng tự như sau.

Hình 10 Sau khi tạo xong cơ sở dữ liệu với bảng đầu tiên là table1


4.2 Lập trình phía Server
Xây dựng máy chủ chatbot dựa trên Framework ExpressJS của Nodejs. Sử dụng
module ‘vntk’ để xử lý ngôn ngữ tự nhiên và gắn nhãn cho yêu cầu từ phía người dùng. Đưa
dữ liệu đã được xử lý lên CSDL.
Chuẩn bị:
 Nodejs v12.0.0 trở lên và tạo project backend sử dụng nodejs.
 Cài đặt các package: express, vntk, fs, http, body-parser, mongoose.
 IDE: Visual Studio Code.
Về ‘vntk’:
Sử dụng Bayes Classifier của vntk:
var vntk = require('vntk');
var classifier = new vntk.BayesClassifier();
classifier.addDocument('lập trình hướng đối tượng là gì?', 'oop');

classifier.addDocument('như thế nào là lập trình hướng đối tượng?', 'oop');
classifier.addDocument('lập trình oop là gì?', 'oop');
classifier.addDocument('hướng đối tượng', 'oop');
classifier.addDocument('tại sao nên lập trình theo hướng đối tượng', 'oopWhy');
classifier.addDocument('lợi ích lập trình hướng đối tượng', 'oopWhy');
classifier.addDocument('lợi ích của oop', 'oopWhy');
classifier.train();
console.log(classifier.classify('vì sao nên sử dụng oop'));

Hàm addDocument(): addDocument(dữ_liệu_huấn_luyên, nhãn);
Hàm train(); sẽ thực hiện huấn luyện cho hệ thống.
Hàm classify(); sẽ phân tích và gắn nhãn cho đầu vào.
Màn hình console sẽ xuất ra kết quả: ‘oopWhy’.


Cách thức thực hiện:
Với collection trainingData, một giá trị được thêm vào với dạng JSON như sau:
{
"dataTraining": [
"các ngôn ngữ lập trình hướng đối tượng ",
"ngơn ngữ lập trình hướng đối tượng phổ biến hiện nay ",
"ví dụ ngơn ngữ lập trình hướng đối tượng ",
"ngơn ngữ lập trình hướng đối tượng hiện nay ",
"ngôn ngữ oop ",
"ngôn ngữ oop hiện nay ",
"ngôn ngữ oop phổ biến"
],
"label": "langCode"
}


Khi khời động server hệ thống sẽ gọi hàm để lấy các giá trị của mảng dataTraining,
thực hiện hàm addDocument để đánh nhãn(label) cho các dữ liệu trong dataTraining. Rồi
dùng hàm train(); để thực hiện huấn luyện.
Khi người dùng gửi yêu cầu, hệ thống sử dụng hàm classify() nhận yêu cầu từ phía
người dùng. Hàm này sẽ phân tích đầu vào dựa trên dữ liệu đã được huấn luyện và đưa ra
xác suất, nếu nhãn nào có xác suất cao nhất, hệ thống sẽ đánh nhãn đó cho dữ liệu đầu vào.
Sau khi đã có nhãn, hệ thống gửi yêu cầu truy vấn lên CSDL để lấy câu trả lời và xuất
ra câu trả lời cho người dùng.

4.3 Lập trình phía Client
Đề tài sử dụng Angular làm front-end.
Chuẩn bị:
 Tạo một Project Angular.
 IDE: Visual Studio Code.


×