Các chatbot được thiết kế phức tạp dựa trên nền tảng xử lý ngôn ngữ tự nhiên, nhưng cũng có nhiều hệ thống khác đơn giản hơn bằng cách quét từ khóa trong đầu vào, sau đó trả lời với từ k
Trang 3Công trình được hoàn thành tại
TRƯỜNG ĐẠI HỌC BÁCH KHOA Người hướng dẫn khoa học: TS Trần Văn Cường
Phản biện 1: TS Nguyễn Văn Hiệu
Phản biện 2: TS Phạm Xuân Hậu
Luận văn sẽ được bảo vệ trước Hội đồng chấm Luận văn tốt nghiệp thạc sĩ khoa học máy tính họp tại Trường Đại học Bách khoa vào
ngày 25 tháng 08 năm 2019
Có thể tìm hiểu luận văn tại:
Trung tâm Học liệu, Đại học Đà Nẵng tại Trường Đại học Bách
khoa
Thư viện Khoa Công nghệ thông tin, Trường Đại học Bách khoa
- ĐHĐN
Trang 5PHẦN I MỞ ĐẦU
1 Lý do chọn đề tài
Chatbot là một chương trình máy tính hoặc trí thông minh nhân tạo tương tác với con người bằng ngôn ngữ tự nhiên, thực hiện cuộc trò chuyện thông qua một giao diện dưới dạng tin nhắn hoặc âm thanh Thuật ngữ “ChatterBot” ban đầu được đặt bởi Michael Mauldin đầu tiên vào năm 1994 Chatbot còn được gọi là Conversational Agents hay Dialog Systems Các chatbot được thiết kế một cách thuyết phục con người cư xử như một đối tác đàm thoại Theo cách tương tác mà chúng tương tác với người dùng, các chatbot thường được chia thành hai loại:
âm thanh và tin nhắn Các chatbot được thiết kế phức tạp dựa trên nền tảng xử lý ngôn ngữ tự nhiên, nhưng cũng có nhiều hệ thống khác đơn giản hơn bằng cách quét từ khóa trong đầu vào, sau đó trả lời với từ khóa phù hợp nhất hoặc mẫu từ ngữ tương tự nhất trong cơ sở dữ liệu Hiện nay phần lớn các chatbot đều thực hiện truy cập thông qua các trợ lý ảo như trợ lý Google và Amazon Alexa, dưới ứng dụng tin nhắn như Facebook Messenger, WeChat hoặc thông qua các ứng dụng
và trang web của các tổ chức riêng lẻ Sự phát triển của trí tuệ nhân tạo tạo điều kiện để chatbot phát triển nhanh chóng và tạo ra một hệ sinh thái bot tương tự hệ sinh thái ứng dụng Chatbot được sử dụng trong rất nhiều công việc như trong việc chăm sóc khách hàng(cung cấp thông tin sản phẩm, đưa ra các thông tin gợi ý…), quản lý hàng tồn, sắp xếp lịch, tra cứu dữ liệu y tế, chăm sóc sức khỏe Chatbot giúp tối ưu hóa năng suất, giảm thiểu chi phí thông qua chăm sóc khách hàng, chăm sóc sức khỏe, đời sống con người
Trang 6Hiện nay, khách du lịch có thể tìm hiểu thông tin về các địa điểm, dịch vụ du lịch ở Quảng Bình thông qua các công cụ tìm kiếm thông tin trên internet và thông tin từ các công ty du lịch Tuy nhiên những thông tin hữu ích và thiết thực với du khách còn hạn chế, du khách phải mất rất nhiều thời gian trong việc tìm hiểu thông tin Với mong muốn tạo một chatbot có khả năng hỗ trợ tư vấn thông tin du lịch ở Quảng Bình để góp phần thu hút khách du lịch, nâng cao chất lượng du lịch tại Quảng Bình, tôi đề xuất đề tài
“Nghiên cứu xây dựng chatbot hỗ trợ tư vấn du lịch Quảng Bình”
làm đề tài luận văn của mình
2 Mục tiêu và nhiệm vụ nghiên cứu
a Mục tiêu
- Ứng dụng mã nguồn mở Rasa để xây dựng thử nghiệm hệ thống chatbot hỗ trợ tư vấn cho khách du lịch tới Quảng Bình
b Nhiệm vụ nghiên cứu
- Tìm hiểu lý thuyết máy học và các thuật toán liên quan đến chatbot
- Tìm hiểu các phương pháp xử lý ngôn ngữ tự nhiên với ngôn ngữ Tiếng Việt
- Tìm hiểu các phương pháp tính toán độ tương tự của văn bản
- Tìm hiểu công nghệ và kỹ thuật thiết kế chatbot
3 Đối tƣợng và phạm vi nghiên cứu
a Đối tƣợng nghiên cứu
Trang 7- Lý thuyết máy học, các thuật toán, phương pháp xử lý ngôn
ngữ tự nhiên với ngôn ngữ Tiếng Việt
- Mã nguồn mở Rasa và kỹ thuật xây dựng chatbot
- Dữ liệu về du lịch Quảng Bình
b Phạm vi nghiên cứu
- Nghiên cứu dữ liệu Tiếng Việt dùng trong du lịch và ngôn
ngữ hội thoại sử dụng cho xây dựng chatbot
- Xây dựng và thực nghiệm hệ thống mô phỏng trợ lý ảo có trí tuệ nhân tạo, hiểu và có thể trả lời những câu hỏi về thông tin
du lịch Quảng Bình
4 Phương pháp nghiên cứu
a Nghiên cứu lý thuyết
b Nghiên cứu thực nghiệm
5 Ý nghĩa khoa học và thực tiễn của đề tài
a Về mặt lý thuyết
- Thực nghiệm các giả thuyết về các kỹ thuật xử lý ngôn ngữ
tự nhiên, kỹ thuật tính toán độ tương đồng về mặt ngữ nghĩa trong văn bản Tiếng Việt… giúp chatbot hiểu được câu đàm thoại khi giao tiếp với con người
- Thực nghiệm các kỹ thuật học máy, khai phá dữ liệu trong huấn luyện và trang bị khả năng tự học của chatbot
b Về mặt thực tiễn
Trang 8- Khách du lịch giao tiếp với hệ thống chatbot hoạt động tự
động trên nền tảng trí tuệ nhân tạo, từng bước đưa Việt Nam
bắt kịp và hội nhập theo xu hướng phát triển của công nghiệp
Phần II Nội dung luận văn
Chương 1 Tổng quan về học máy và xử lý ngôn ngữ tự nhiên
Chương 2 Phân tích và thiết kế chatbot hệ thống chatbot
Chương 3 Cài đặt thực nghiệm hệ thống chatbot hỗ trợ tư
vấn du lịch Quảng bình
Phần III Kết luận và hướng phát triển
Trang 9PHẦN II NỘI DUNG CHƯƠNG 1 TỔNG QUAN VỀ HỌC MÁY
VÀ XỬ LÝ NGÔN NGỮ TỰ NHIÊN 1.1 PHƯƠNG PHÁP HỌC MÁY
1.1.1 Trí tuệ nhân tạo
1.1.1.1 Định nghĩa
Trí tuệ nhân tạo (Artificial Intelligence - AI) là lĩnh vực chuyên
nghiên cứu và phát triển các hệ thống (phần mềm và phần cứng) nhằm giải quyết các bài toán giống như cách thức giải quyết của con người trong một ngữ cảnh nào đó Trí tuệ nhân tạo là một ngành khoa học máy tính, được xây dựng trên một nền tảng lý thuyết chắc chắn và có thể ứng dụng việc tự động hóa các hành vi thông minh của máy tính; giúp máy tính có được những trí tuệ của con người như: biết suy nghĩ và lập luận
để giải quyết vấn đề, biết giao tiếp do hiểu ngôn ngữ, biết nói, biết học
Trang 10máy rất gần với suy diễn thống kê (statistical inference) tuy có khác nhau về thuật ngữ [25]
Các thuật toán học máy theo phương thức học được chia làm 4 nhóm: Học có giám sát, học không giám sát, học bán giám sát, học củng
cố
- Học có giám sát (Supervised Learning)
- Học không giám sát ( Unsupervised Learning)
- Học bán giám sát (Semi-Supervised Learning)
- Học củng cố (Reinforcement Learning
1.1.2.2 Ứng dụng của học máy
1.2 XỬ LÝ NGÔN NGỮ TỰ NHIÊN
1.2.1 Tổng quan xử lý ngôn ngữ tự nhiên
Xử lý ngôn ngữ tự nhiên (Natural Language Processing – NLP)
là một nhánh của trí tuệ nhân tạo được tập trung vào các ứng dụng trên ngôn ngữ của con người Trong trí tuệ nhân tạo thì xử lý ngôn ngữ tự nhiên là một trong những phần khó nhất vì nó liên quan đến hiểu ngôn ngữ công cụ hoàn hảo nhất của tư duy và giao tiếp [26]
1.2.2 Các bài toán cơ bản trong xử lý ngôn ngữ tự nhiên
1.2.3 Ứng dụng của xử lý ngôn ngữ tự nhiên
1.3 CÁC PHƯƠNG PHÁP BIỂU DIỄN VĂN BẢN
1.3.1 Mô hình biểu diễn văn bản truyền thống
1.3.1.1 Mô hình logic
Trang 111.3.1.2 Mô hình vector
1.3.2 Mô hình đồ thị biểu diễn văn bản
1.3.2.1 Mô hình đồ thị khái niệm (Conceptual Graphs -CGs) 1.3.2.2 Mô hình đồ thị hình sao
1.3.2.3 Mô hình đồ thị vô hướng sử dụng tần số xuất hiện 1.3.2.4 Mô hình đồ thị có hướng, cạnh không gán nhãn
1.3.2.5 Mô hình đồ thị có hướng, cạnh không gán nhãn, cạnh là khoảng cách n giữa hai từ trong văn bản
1.3.3 Mô hình Word2vec văn bản (vector hóa từ)
Trong word2vec, một biểu diễn phân tán (distributed representation) của một từ được sử dụng Sử dụng một vector với vài trăm chiều Mỗi từ được biểu diễn bởi tập các trọng số của từng phần tử trong nó Như thế thay vì kết nối one-to-one giữa các phần từ trong vector và 1 từ, biểu diễn từ sẽ là dàn trải tất cả các thành phần của vector, và mỗi phần tử trong vector sẽ góp phần định nghĩa nhiều từ khác
Trang 12Hình 1.7 Mô hình Cbow và Skip-gram [35]
1.3.4 Mô hình Doc2vec (vector hóa văn bản)
a Mô hình túi từ phân tán(DBOW)
b Mô hình bộ nhớ phân tán(DM)
1.4 TÍNH ĐỘ TƯƠNG ĐỒNG VĂN
Các phép đo độ tương tự giữa văn bản và văn bản đã được nghiên cứu trong các ứng dụng của xử lý ngôn ngữ tự nhiên và các lĩnh vực liên quan Ứng dụng sớm nhất của độ tương tự văn bản là tìm kiếm thông tin, ở đó các tài liệu có liên quan tới câu truy vấn được xếp hạng theo thứ tự của độ tương tự Ngoài ra, độ tương tự văn bản còn được dùng cho phân lớp văn bản, trích chọn hay tóm tắt văn bản, phương pháp cho đánh giá dịch máy tự động hay đánh giá tính chặt chẽ của văn bản
1.4.1 Khái niệm độ tương đồng
1.4.2 Độ tương đồng văn bản dựa trên tập từ chung
1.4.3.2 Độ tương đồng dựa vào khoảng cách Euclide
1.4.3.3 Độ tương đồng dựa vào khoảng cách Manhattan
Trang 131.4.4 Độ tương đồng văn bản trong tiếng Việt
1.4.4.1 Độ tương tự ngữ nghĩa từ - từ
a) Độ tương tự ngữ nghĩa từ - từ dựa trên WordNet
b) Độ tương tự ngữ nghĩa từ - từ dựa trên ngữ liệu
1.4.4.2 Độ tương tự ngữ nghĩa của văn bản
1.4.4.3 Độ tương tự về thứ tự của từ trong văn bản
1.4.4.4 Kết hợp giữa các độ đo để đánh giá độ tương tự giữa hai văn bản
1.5 CÁC PHƯƠNG PHÁP PHÂN LOẠI VĂN BẢN
1.5.1 Phương pháp Naive Bayes
1.5.2 Phương pháp k–Nearest Neighbor(KNN)
1.5.3 Phương pháp cây quyết định
1.5.4 Phương pháp mạng Nơron nhân tạo
1.5.5 Phương pháp Support Vector Machines (SVM)
1.6 CHATBOT
1.6.1 Khái niệm
Chatbot là một chương trình máy tính có khả năng giao tiếp với con người bằng cách đưa ra câu trả lời cho các câu hỏi và thực hiện cuộc trò chuyện bằng cách sử dụng xử lý ngôn ngữ tự nhiên Con người đưa vào lời nói hoặc văn bản ngôn ngữ tự nhiên, trong khi chương trình chatbot sẽ đưa ra phản hồi thông minh phù hợp nhất
1.6.2 Hoạt động của chatbot
Trang 14Chatbot tương tác với con người qua âm thanh hoặc văn bản và
sử dụng các nền tảng để giao tiếp với bot Phần mà các lập trình viên cần phát triển bao gồm [27]:
Translator: Dịch yêu cầu của người dùng giúp máy tính hiểu được yêu cầu cần thực hiện Mục đích và các thực thể có trong yêu cầu được trích xuất để làm cơ sở cho xác định câu trả lời Các kỹ thuật
xử lý ngôn ngữ tự nhiên được áp dụng để phân tích ngữ nghĩa yêu cầu của người dùng
Processor: Xử lý yêu cầu của người dùng dựa vào dữ liệu được Translator cung cấp Câu trả lời sẽ được truy xuất từ cơ sở dữ liệu của chatbot Tùy thuộc vào kỹ thuật sử dụng sẽ cho mức độ chính xác của câu trả lời khác nhau
Responsor: Nhận output từ Processor và trả lời lại cho người dùng
Hình 1.16 Hoạt động của chatbot
1.6.3 Sự phát triển của chatbot
1.6.4 Các lĩnh vực ứng dụng của chatbot
Trang 15CHƯƠNG 2 PHÂN TÍCH VÀ THIẾT KẾ HỆ THỐNG
CHATBOT 2.1 CÁC MÔ HÌNH CHATBOT
Mô hình truy xuất thông tin và mô hình sinh thông tin Based model vs Generative Models) Các mô hình dựa trên truy xuất (Retrieval-based models) sử dụng kho lưu trữ các phản hồi được xác định trước và một số loại heuristic để chọn một phản hồi phù hợp dựa trên đầu vào và ngữ cảnh Các heuristic có thể đơn giản như một kết hợp biểu thức dựa trên luật hoặc phức tạp hơn như một tập hợp các phân loại học máy Các hệ thống này không tạo ra bất kỳ văn bản mới nào, họ chỉ cần chọn một phản hồi từ một tập cố định [6]
(Retrieval-2.2 PHÂN LOẠI CHATBOT
Có nhiều loại chatbot khác nhau và mỗi loại chatbot có những phản ứng theo những cách khác nhau Không phải tất cả các chatbot đều thông minh giống nhau và chúng xác định một nhiệm vụ cụ thể Chatbot có thể phân thành bốn loại như sau [6]:
2.2.1 Flow-oriented chatbot
2.2.2 Chatbot thông minh nhân tạo (Artificially intelligent chatbot)
2.2.3 Chatbot lai (Hybrid chatbot)
2.2.4 Chatbot được hỗ trợ bởi con người
2.3 CÁC PHƯƠNG PHÁP XÂY DỰNG CHATBOT
2.3.1 So sánh trùng khớp mẫu câu (Pattern matchers)
Trang 16Các chatbot hoạt động bằng cách sử dụng phương pháp này để tìm kiếm các mẫu câu có trong câu hỏi của người dùng và xem có khớp với các câu hỏi đã được lưu trữ trong cơ sở dữ liệu của hệ thống để đưa
ra câu trả lời phù hợp nhất
2.3.2 Sử dụng thuật toán phân lớp
Một giải pháp được sử dụng là áp dụng các thuật toán phân lớp vào chatbot để giảm việc phân loại quá nhiều các câu hỏi Các câu hỏi
sẽ được phân lớp theo các điều kiện khác nhau và tạo ra một cấu trúc dễ quản lý hơn, tăng độ chính xác cho các phản hồi được chatbot tới cho người dùng
2.3.3 Mạng nơron nhân tạo (Artificial Neural Network - ANN)
Phương pháp Mạng nơron nhân tạo là tính toán tỷ lệ chính xác dữ liệu đầu ra từ dữ liệu đầu vào bằng cách tính toán các trọng số cho mỗi kết nối từ các lần lặp lại khi huấn luyện dữ liệu cho chatbot Mỗi bước trong quá trình huấn luyện dữ liệu cho chatbot sẽ sửa đổi các trọng số
để dữ liệu đầu ra có độ chính xác cao nhất có thể
2.3.4 Xử lý ngôn ngữ tự nhiên (Natural Language Processing - NLP)
Phương pháp NLP sử dụng các thuật toán và truy xuất cơ sở dữ liệu để làm cơ sở nhận dạng, chuyển đổi dữ liệu đầu vào của người dùng thành dữ liệu có cấu trúc và tiến hành phân loại và đưa ra các câu trả lời tương ứng Để giao tiếp tự nhiên với con người, thì NLP phải là một phần quan trọng của bất kỳ công nghệ AI nào được sáng tạo ra và đưa vào sử dụng
Trang 172.3.5 Hiểu ngôn ngữ tự nhiên (Natural Language Understanding - NLU)
NLU là phương pháp giúp cho các chatbot hiểu được các câu lệnh của người dùng mà không phải dựa trên bất kỳ ngôn ngữ, câu thoại, cấu trúc nào được định dạng sẵn ở trong hệ thống, giúp chatbot có thể phản hồi nhanh chóng đến người dùng NLU là một kỹ thuật nâng cao của NLP NLU thường được sử dụng cho các chatbot nhận diện giọng nói
2.4 CÁC VẤN ĐỀ CƠ BẢN KHI PHÁT TRIỂN HỆ THỐNG CHATBOT
2.4.1 Xác định ý định người dùng
Kiến trúc của hệ thống phân lớp ý định được minh hoạ trong hình sau
Hình 2.5 Kiến trúc của hệ thống phân lớp ý định [23]
Mô hình dựa trên đối sánh nội dung
Trang 18Mô hình phân lớp ý định dựa trên học máy thống kê yêu cầu dữ liệu huấn luyện bao gồm các cách diễn đạt khác nhau cho mỗi ý định
Mô hình lai
Mô hình lai (hybrid model) là mô hình có thể kết hợp nhiều mô hình khác nhau như mô hình học máy, mô hình đối sánh nội dung và đặc biệt là các kỹ thuật tiến bộ trong AI
2.4.2 Trích xuất thông tin
Bên cạnh việc xác định ý định trong câu hội thoại của người dùng, chúng ta cần trích xuất các thông tin cần thiết trong đó Các thông tin cần trích xuất trong câu hội thoại thường là các thực thể, ví dụ như thời gian, địa chỉ,… Thành phần NLU của các hệ thống chatbot thường được tích hợp thành phần nhận dạng thực thể giúp phát hiện ra các thực thể có trong mỗi hội thoại
2.4.3 Quản lý hội thoại
Trong quá trình trao đổi giữa người sử dụng và chatbot, chatbot
sẽ cần phải ghi nhớ những thông tin về ngữ cảnh hay quản lý các trạng thái hội thoại Vấn đề quản lý hội thoại là rất quan trọng để đảm bảo việc trao đổi giữa người và máy là thông suốt, nội dung cuộc hội thoại logic về mặt ngữ nghĩa Chức năng của thành phần quản lý hội thoại là nhận đầu vào từ thành phần NLU, quản lý các trạng thái hội thoại (dialogue state), ngữ cảnh hội thoại (dialogue context) và truyền đầu ra cho thành phần sinh ngôn ngữ (Natural Language Generation - NLG)
2.5 CÔNG CỤ TẠO CHATBOT
2.5.1 Nền tảng tạo chatbot
Trang 19Rasa là mã nguồn mở để xây dựng chatbot, nó gồm cặp công cụ NLU và Core là các công cụ dễ sử dụng để xây dựng các hệ thống đàm thoại, vì cho đến nay không có hệ thống đối thoại thống kê được
sử dụng rộng rãi dành cho người không chuyên Rasa đã được sử dụng bởi hàng nghìn nhà phát triển trên toàn thế giới Cũng như nhiều hệ thống đàm thoại khác, các công cụ của được chia thành hiểu ngôn ngữ
tự nhiên (Rasa NLU) và quản lý hội thoại (Rasa Core) Rasa NLU là một công cụ xử lý ngôn ngữ tự nhiên nguồn mở để phân loại ý định và trích xuất thực thể trong các chatbot thông minh đàm thoại Còn Rasa Core là một framework có mã nguồn mở để xử lý hội thoại theo ngữ cảnh (contextual conversations) Quản lý hội thoại nâng cao của Rasa-Core dựa trên học máy và cho phép các cuộc hội thoại thông minh hơn
và giúp nhân rộng dễ dàng hơn Là framework duy nhất cho phép chatbot đối thoại tinh vi hơn, có tương tác, được huấn luyện dựa trên học có giám sát
2.5.2 Xây dựng chatbot dựa trên nền tảng mã nguồn mở RaSa Các bước thực hiện
Bước 1: Thu thập dữ liệu
Bước 2: Ngôn ngữ sử dụng
Bước 3: Xây dựng tập dữ liệu huấn luyện
Bước 4: Kịch bản hội thoại
Bước 5: Xây dựng Action