So sánh kết quả mơ hình GPT-2 [20]

Một phần của tài liệu Phát triển hệ thống chatbot trò chuyện nhiều tầng (Trang 41)

Tuy nhiên với mơ hình có nhiều tham số như GPT-2 sẽ tiêu tốn rất nhiều tài nguyên máy tính cũng như thời gian đáp ứng cho hệ thống chatbot. Chính vì thế, nhóm sẽ điều chỉnh lại số lượng tham số của mơ hình để có thể phù hợp với ứng dụng chatbot và tiến hành huấn luyện mơ hình trên tập dữ liệu tiếng Việt được đề cập ở mục 4.1.

4

TẬP DỮ LIỆU

Trong chương này, nhóm sẽ trình bày các tập dữ liệu được sử dụng trong luận văn và các phương pháp tiền xử lí được thực hiện trên tập dữ liệu. Hầu hết các bộ dữ liệu đều được chia sẻ miễn phí, tuy nhiên cũng có bộ dữ liệu bị giới hạn quyền truy cập.

Mục lục

4.1 Dữ liệu phụ đề phim tiếng Việt - OpenSubtitles . . . . . . . . . . . . . . . . . . . 30

CHƯƠNG 4 TẬP DỮ LIỆU 30

4.1 Dữ liệu phụ đề phim tiếng Việt - OpenSubtitles

Tập dữ liệu OpenSubtitles [23] [24] được xây dựng từ bộ dữ liệu phụ đề của các bộ phim được đăng tại địa chỉ:https://www.opensubtitles.orgvà đã được tiền xử lý và công bố tại địa chỉ:https://opus.nlpl.eu/OpenSubtitles-v2018.php

Bộ dữ liệu bao gồm 41.8 triệu từ và 5.1 triệu câu với mỗi câu tương ứng một dòng trong tập dữ liệu.

Dữ liệu được lọc và tiền xử lý qua các bước sau: • Loại bỏ những câu quá dài và q ngắn.

• Xố các thành phần khơng quan trọng: tên nhân vật ở đầu câu, dấu đóng/mở ngoặc, dấu "-".

Tiền xử lý dữ liệu với thơng số: • Số từ ít nhất: 2

• Số từ nhiều nhất: 128

Thống kế sau khi tiền xử lý dữ liệu:

Tổng số câu 5073177 Độ dài trung bình 6.61 từ Độ lệch chuẩn 4.73 từ Độ lớn từ điển 96243 từ

Bảng 4.1:Thống kê chi tiết bộ dữ liệu OpenSubtitles đã xử lý

4.2 Tập dữ liệu trả lời câu hỏi

Dữ liệu trả lời câu hỏi có dạng SQuAD 2.0 có thể truy cập tại địa chỉhttps://github.com/ mailong25/bert-vietnamese-question-answering/tree/master/dataset. Tập dữ liệu

này có khoảng 3454 mẫu dữ liệu và có 2328 mẫu có câu trả lời. Cấu trúc của một mẫu dữ liệu bao gồm:

• context: là văn bản để tìm câu trả lời từ câu hỏi.

• qas: là một mảng các câu hỏi và câu trả lời. Với mỗi phần tử có dạng:

answers: là câu trả lời cho câu hỏi, gồm có vị trí bắt đầu của câu trả lời và câu trả lời được lấy từ văn bản.

question: là câu hỏi.

5

ĐẶC TẢ VÀ HIỆN THỰC HỆ THỐNG

Trong chương này, nhóm sẽ mơ tả và hiện thực hệ thống chatbot.

Mục lục 5.1 Thiết kế hệ thống . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32 5.2 Chi tiết các thành phần . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 5.3 Vấn đề cần giải quyết . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.4 Khó khăn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 5.5 Giải pháp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

CHƯƠNG 5 ĐẶC TẢ VÀ HIỆN THỰC HỆ THỐNG 32

5.1 Thiết kế hệ thống

5.1.1 Tổng quan về kiến trúc hệ thống và chức năng

Hình 5.1:Kiến trúc tổng quan hệ thống

Hệ thống chatbot được thiết kế gồm hai thành phần chính bao gồm: giao diện người dùng và phần lõi của hệ thống. Trong phần lõi của hệ thống gồm nhiều thành phần nhỏ hơn trong hình 5.1 được mơ tả cụ thể sau đây:

Message Handler:có nhiệm vụ quản lý tin nhắn người dùng gửi lên và gửi câu trả lời về đúng người dùng.

Message History:cơ sở dữ liệu lưu trữ cuộc trò chuyện để tiếp tục huấn luyện và cải thiện mơ hình.

Message Classifier:có nhiệm vụ phân loại ý định của tin nhắn để đưa đúng lớp có thể xử lý được.

General Chat Module:có nhiệm vụ xử lý các ý định cơ bản như: chào, tạm biệt, hỏi tên, hỏi tuổi, hỏi giới tính của bot,. . .

QA Module:có nhiệm vụ trả lời các câu hỏi về người.

GPT Module:có nhiệm vụ sinh ra các câu trả lời nếu các phần trên không thể xử lý được. Câu nhập vào của người dùng có thể được xử lý qua các lớp: lớp xử lý ý định cơ bản, lớp trả lời câu hỏi và lớp dùng mơ hình sinh. Với mỗi lớp có một chức năng hiểu và tạo ra câu trả lời khác nhau. Lớp cuối cùng được thiết để có thể sinh ra câu trả lời cho hầu hết mọi tình huống. Điều này sẽ giúp giảm thiểu tối đa khả năng chatbot không thể trả lời được các trường hợp không định nghĩa sẵn hoặc khi các lớp trên đó gặp sự cố. Tuy nhiên, nếu chỉ sử dụng lớp dùng mơ hình sinh ngơn ngữ, các câu trả lời được sinh ra sẽ khó kiểm sốt được nội dung. Chính vì thế lớp xử lý ý định cơ bản giúp kiểm soát được cuộc trị chuyện.

5.1.2 Sơ đồ tình huống sử dụng (Use Case Diagram)

CHƯƠNG 5 ĐẶC TẢ VÀ HIỆN THỰC HỆ THỐNG 33

Hình 5.2:Sơ đồ tình huống sử dụng - Use Case Diagram của chatbot

Tên tình huống Hỏi câu hỏi về người Tác nhân Người dùng

Mơ tả Người dùng nhập câu hỏi về người và gửi

Điều kiện Câu nhập vào là một câu hỏi về người ví dụ câu hỏi ai là. . . ?

Luồng xử lý

1. Người dùng vào trang chính.

2. Nhập câu hỏi về người vào khung chat. 3. Nhấn gửi hoặc nhấn phímEnter.

4. Trả về câu trả và hiện thị ở khung chat.

Ngoại lệ Tại bước 4: Hệ thống sinh ra câu nói nếu khơng tìm thấy câu trả lời.

CHƯƠNG 5 ĐẶC TẢ VÀ HIỆN THỰC HỆ THỐNG 34

Tên tình huống Chat Tác nhân Người dùng

Mơ tả Người dùng nhập câu chat và gửi

Luồng xử lý

1. Người dùng vào trang chính. 2. Nhập câu nói vào khung chat. 3. Nhấn gửi hoặc nhấn phímEnter.

4. Trả về câu phản hồi và hiện thị ở khung chat.

CHƯƠNG 5 ĐẶC TẢ VÀ HIỆN THỰC HỆ THỐNG 35

5.1.3 Sơ đồ trình tự (Sequence Diagram)

Hình 5.3:Sơ đồ trình tự - Sequence Diagram của hệ thống chatbot

Sơ đồ trình tự của hệ thống chatbot được nhóm mơ tả ở hình 5.3 gồm có ba trường hợp được mơ tả cụ thể như sau:

Type general:khi câu nhập vào của người dùng thuộc các ý định cơ bản, Message Handler sẽ yêu cầu sinh ra câu trả lời từ module này.

Type QA: khi người dùng hỏi về người, ví dụ "Ai là người đầu tiên lên mặt trăng?", hệ thống sẽ tìm kiếm câu trả lời thơng qua module QA.

GPT Module: khi câu nhập vào của người dùng khơng thể trả lời được từ các module trên thì hệ thống sẽ dùng module GPT để sinh ra câu trả lời.

5.2 Chi tiết các thành phần

5.2.1 Bộ xử lý tin nhắn cơ bản (General Chat Module)

Các tin nhắn cơ bản được chia thành nhiều ý định khác nhau. Ý định người dùng là những mong muốn mà người dùng thể hiện qua văn bản. Ứng với mỗi ý định đó, sinh câu hỏi chung sẽ chọn

CHƯƠNG 5 ĐẶC TẢ VÀ HIỆN THỰC HỆ THỐNG 36 câu trả lời đã được định nghĩa sẵn. Với những ý định cơ bản sẽ chứa những từ khố thường gặp để chỉ ý định đó. Do đó, bộ ý định cơ bản được hiện thực bằng phương pháp so trùng từ khoá. Danh sách từ khoá và câu trả lời cho mỗi ý định được định nghĩa dưới đây:

Chào:các câu với ý định chào. Danh sách từ khoá:

hey hello hi chào xin chào chào bạn chào buổi sáng chào buổi trưa chào buổi tối

Câu trả lời:

xin chào bạn chào bạn hế nhơ

Tạm biệt:các câu với ý định tạm biệt. Danh sách từ khoá:

bye bye tạm biệt hẹn gặp lại gặp lại sau bái bai Câu trả lời: tạm biệt nha bye bye

Hỏi tên:các câu với ý định hỏi tên của chatbot. Danh sách từ khố:

bạn tên gì cậu tên gì

Câu trả lời:

CHƯƠNG 5 ĐẶC TẢ VÀ HIỆN THỰC HỆ THỐNG 37 • Hỏi tuổi:các câu có ý định hỏi tuổi của chatbot. Danh sách từ khố:

tuổi sinh năm

Câu trả lời:

mình mới có 1 tuổi à tuổi tác khơng quan trọng hỏi tuổi tui chi chời

Hỏi về người yêu:các câu có ý định hỏi người yêu của chatbot. Danh sách từ khoá:

người yêu bồ

Câu trả lời:

bồ bịch gì tầm này

đẹp thì mới có nhiều đứa u

Hỏi về nơi ở:các câu có ý định hỏi nơi ở của chatbot. Danh sách từ khoá:

ở đâu nơi nào

Câu trả lời:

xa tận chân trời, gần ngay trước mắt tui ở ngay trước mắt nè

5.2.2 Bộ trả lời câu hỏi (QA Module)

Hình 5.2.2 mô tả thiết kế bộ trả lời câu hỏi được thiết kế dựa theo mơ hình trích xuất thơng tin trong khố học Speech and Language Processing [25] gồm các chức năng chính:

Document Retrieval:Thu thập các văn bản có liên quan đến câu hỏi.

Passage Retrieval:Tách văn bản ra thành nhiều đoạn và chọn lọc theo mức độ liên quan đến câu hỏi.

CHƯƠNG 5 ĐẶC TẢ VÀ HIỆN THỰC HỆ THỐNG 38

Hình 5.4:Chi tiết bộ trả lời câu hỏi

5.2.3 Bộ sinh ngơn ngữ tự nhiên (GPT Module)

Để có thể xử lý được những tình huống khơng được định nghĩa trước hay những câu hỏi khơng thể trả lời chính xác, nhóm áp dụng mơ hình sinh ngơn ngữ tự nhiên để có thể tạo ra nhiều câu trả lời khác nhau mà vẫn có thể liên quan đến ngữ cảnh của cuộc trị chuyện. Trong đề tài này, nhóm xây dựng bộ sinh ngơn ngữ từ hai kiến trúc khác nhau: LSTM và GPT-2. Sau đó sẽ so sánh kết quả đạt được ở mục 7.4.3.

5.2.4 Bộ phân loại tin nhắn (Message Classifier)

Mơ tả:

Bộ phân loại tin nhắn sẽ phân loại tin nhắn dựa vào xử lý ngôn ngữ tự nhiên. Tin nhắn của người dùng sẽ được phân loại để phù hợp với tầng có thể xử lý được. Cụ thể các loại tin nhắn được chia như sau:

Tin nhắn thông thường: là những tin nhắn chào, tạm biệt, hỏi tên, hỏi tuổi, . . . những mẫu tin nhắn này có thể trả lời bằng những mẫu câu định nghĩa sẵn được đặc tả ở phần General Chat Module.

Tin nhắn câu hỏi về người: là những tin nhắn hỏi về ai, ví dụ: "ai là . . . ?", "ai làm . . . ?", . . .

Tin nhắn khác: là những tin nhắn sẽ được dùng phương pháp sinh để tạo ra câu trả lời đa dạng hơn.

Hiện thực:

Các tin nhắn thuộc những loại trên thường có những từ khố đặc trưng trong tin nhắn. Những từ khố để phân loại tin nhắn thơng thường được định nghĩa ở mục 5.2.1. Đối với những câu hỏi về ai, thường sẽ có những từ khố hỏi trong câu như sau:

ai là ai làm là ai ai tạo ra ai phát minh người nào

Các trường hợp khơng có từ khố trùng với định nghĩa ở trên sẽ thuộc tin nhắn loại khác và sẽ được bộ sinh ngôn ngữ tự nhiên tạo ra câu trả lời.

CHƯƠNG 5 ĐẶC TẢ VÀ HIỆN THỰC HỆ THỐNG 39

5.2.5 Bộ xử lý tin nhắn (Message Handler)

Bộ xử lý tin nhắn có nhiệm vụ kết nối giữ chatbot với người dùng. Trong đề tài này, nhóm sử dụng một bộ công cụ mã nguồn mở BotKit để xây dựng hệ thống quản lý tin nhắn này. Bộ công cụ này sử dụng giao thức WebSocket để gửi nhận gói tin giữ người dùng và chatbot.

5.3 Vấn đề cần giải quyết

Dựa trên thiết kế đã được mơ tả, nhóm nhận thấy có một số vấn đề cần được giải quyết như sau: • Xây dựng bộ trả lời câu hỏi từ một số đoạn văn bản cho trước.

• Xác định các ý định cơ bản trong một cuộc trị chuyện.

• Thu thập dữ liệu, xử lý, huấn luyện và thuật tốn sinh cho mơ hình sinh ngơn ngữ tự nhiên. • Xây dựng bộ phân loại ý định của người dùng gồm các ý định cơ bản và câu hỏi về người. • Xây dựng một trang web để tích hợp các thành phần hệ thống thành một chatbot cho người

dùng cuối.

• Triển khai hệ thống và thu thập đánh giá từ người dùng chatbot.

5.4 Khó khăn

Trong q trình giải quyết các vấn đề ở mục 5.3, nhóm gặp phải một số khó khăn sau:

• Những đoạn văn bản khi trả lời câu hỏi cho người dùng là khơng có sẵn như khi huấn luyện mơ hình.

• Các ý định cơ bản của người dùng rất nhiều và khó có thể định nghĩa chính xác tuyệt đối. • Dữ liệu để huấn luyện cho mơ hình sinh khi thu thập bị nhiễu khá nhiều và cấu trúc chưa

phù hợp để huấn luyện mơ hình.

• Các ý định của người dùng có nhiều cách diễn đạt khác nhau và giới hạn về dữ liệu. • Việc kết hợp các thành phần cần nhiều thời gian điều chỉnh và thử nghiệm để chatbot có

phản hồi cuối là phù hợp.

5.5 Giải pháp

CHƯƠNG 5 ĐẶC TẢ VÀ HIỆN THỰC HỆ THỐNG 40 • Các đoạn văn bản để trả lời câu hỏi của người dùng có thể được thu thập bằng cách trích xuất những bài viết, bài báo trên Internet. Nhóm đã xây dựng một hệ thống dùng Google Custom Search API để có thể tìm kiếm những trang web có chưa đoạn văn bản liên qua đến câu hỏi của người dùng và xử lý để biến thành dữ liệu đầu vào cho mơ hình trả lời câu hỏi.

• Nhóm định nghĩa một số ý định cơ bản và chọn lọc lại những ý định thường gặp nhất như chào hỏi, tạm biệt, . . . tiến hảnh xây dựng một hệ thống chatbot cơ bản bằng luật.

• Dữ liệu về hội thoại sau khi thu thập, nhóm tiến hành phân tích mức độ phù hợp với yêu cầu của nhóm và tiến hành tiền xử lý một phần để thử nghiệm trên mơ hình nhỏ nhằm đưa ra đánh giá ban đầu. Sau khi kết quả khả thi, nhóm tiếp tục dùng tồn bộ dữ liệu để cải thiện độ tổng qt của mơ hình.

• Sau khi giới hạn những ý định cơ bản và những câu hỏi mà bộ trả lời câu hỏi có thể xử lý được, nhóm nhận thấy những ý định của câu nhập có thể phân loại tốt bằng phương pháp so trùng từ khố.

• Các thành phần sau khi được kết hợp sẽ được triển khai dùng thử và thu thập khảo sát đánh giá từ các bạn sinh viên để tiến hành điều chỉnh phù hợp hơn.

6

CƠNG NGHỆ SỬ DỤNG

Trong chương này, nhóm sẽ trình bày các cơng nghệ được sử dụng để phát triển hệ thống chatbot.

Mục lục

6.1 Ngơn ngữ lập trình . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

6.2 Nền tảng và thư viện . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

CHƯƠNG 6 CÔNG NGHỆ SỬ DỤNG 42

6.1 Ngơn ngữ lập trình 6.1.1 Python

Python là ngơn ngữ lập trình thơng dịch do Guido Van Rossum tạo ra năm 1990 và được phát triển trong một dự án mã nguồn mở. Python là ngơn ngữ lập trình bậc cao, sử dụng kiểu cấp phát bộ nhớ động, hỗ trợ các phương thức lập trình như lập trình hướng đối tượng, lập trình hàm,. . .

Hình thức của ngơn ngữ Python sáng sủa, rõ ràng, cú pháp dễ nhớ và dễ sử dụng. Do đó, Python hiện tại là ngôn ngữ được ưa chuộng để dạy cho người mới bắt đầu lập trình.

Những năm gần đây, với sự phát triển mạnh mẽ của Machine Learning và Deep Learning, Python với sự hỗ trợ tốt cho xử lý vector và ma trận cùng với các thư viện hỗ trợ như Pandas, Numpy, Scipy,. . . Python trở nên ngày càng phổ biến.

Chính vì sử phổ biến và hỗ trợ tốt cho việc phát triển các ứng dụng Machine Learning nên tôi

Một phần của tài liệu Phát triển hệ thống chatbot trò chuyện nhiều tầng (Trang 41)

Tải bản đầy đủ (PDF)

(75 trang)