Người phát triển sẽ huẩn luyện bằngcách đưa những dữ liệu câu hỏi và chatbot sẽ sử dụng thuật toán để phân tích các câu hỏi vàđưa gắn nhãn.. Cụ thể, trí tuệ nhân tạo giúp máy tính có đượ
Trang 1ĐẠ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
Trang 2Nộ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
Trang 3Chươ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ằngcách đưa những dữ liệu câu hỏi và chatbot sẽ sử dụng thuật toá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ựavà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ântí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 đã đượchọ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 cuộ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ệngiú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ựngchatbot 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ọclậ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ụngAngular
Trang 41.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ôngtin 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
3 Tìm hiểu về Nodejs, Angular, MongoDB Atlas 2 tuần
7 Xử lý frontend khi người dùng gửi câu hỏi 1 tuần
9 Xây dựng bộ dữ liệu câu hỏi và câu trả lời cho
chatbot
2 tuần
10 Sửa lỗi phát sinh, thêm dữ liệu nếu cầ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
Trang 51.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
Trang 6Chươ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ậptrì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ư conngườ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 ứngdụ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ó đượcnhữ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ácphẩ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ôngminh 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ủamá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ư: giaothô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ểmtra tính ràng buộc… Có thể thấy, dạng cơ sở dữ liệu này có thể linh động, sẵn sàng bỏ quatính toà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 đượcthiết kế theo hướng đối tượng Các bảng (trong MongoDB gọi là collection) có cấu trúc linhhoạ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
Trang 7khá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
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ộtchươ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 naychatbot được các doanh nghiệp sử dụng rộng rãi trên các website, ứng dụng, fanpage củamì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êmnhiều câu hỏi không có trong kịch bản thông qua quá 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
Trang 8Alan Turing viết báo cáo với tựa đề “Computing Machinery and Intelligence”, xâydự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ênviệ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 trongmột cuộ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à đốitượ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ấnkhô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ủaJoseph 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ớibệ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 KennethColby - 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ầnphâ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ácbệ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, chatbotJabberwacky đượ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ântạo có khả năng vượt qua Các phép thử Turing
Trang 9Nó đượ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ạivớ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ênvăn bản sang toà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ếthợ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ệnvớ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ủariê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ànhCleverbot
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ắtcủ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ờicủ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
Trang 10ALICE đượ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ộtlược đồ XML có tên AIML (Artificial Intelligence Markup Language- Ngôn ngữ đánh dấutrí thông minh nhân tạo) để xác định các quy tắc trò chuyện heuristic Tuy nhiên, nó lạikhô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à WindowsLive Messenger (trước đây là MSN Messenger) AOL Instant Messenger là một chươngtrì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 độcquyề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óngvớ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 toán phân tích ngôn ngữ cùng một lúc, IBMWatson 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, trongtrườ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ổ
Trang 11Từ sau hội nghị F8 năm 2016, Facebook – mạng xã hội lớn nhất thế giới giới thiệuMessenger 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 chomình một Chatbot Ngay sau đó, các ứng dụng chat khác như LINE, WhatsApp, Telegramhay 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àngtrong 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ảnphẩ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ệnthoạ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ủakhá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ộtnhâ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 trongkị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ácchuyê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
Trang 12Dự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ị F8và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ựngchatbot 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, HaraFunnel, 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 IBMgồ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ảitri 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âyquyế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ềucâ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ệpkhá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 minhnhâ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
Trang 132.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 luôn ở 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 nhanhchó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 trongcù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ôngviệ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ếuthực hiện một công việc lặp đi, lặp lại nhiều lần
Trang 14Chươ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ệncho chatbot Dữ liệu được mô tả trong bảng sau
Collection Botmessages Trainingdatas
Trường dữ liệu messageContent: String array;
keywords: String array;title: String;