Các Widget của Tkinter

Một phần của tài liệu 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Í (Trang 97 - 107)

STT Button Mô tả

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

2 Canvas Canvas được sử dụng để vẽ các hình trên cửa sổ.

3 Checkbutton Checkbutton được sử dụng để hiển thị CheckButton trên cửa sổ.

4 Entry

Entry được sử dụng để hiển thị trường văn bản một 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.

5 Frame Frame có thể được định nghĩa là một vùng chứa mà có thể chứa một hoặc nhiều widget khác.

6 Label Label là một văn bản được sử dụng để hiển thị một số thông báo hoặc thông tin cho các widget khác.

SVTH: LÊ TRUNG KIÊN 76 7 ListBox ListBox được sử dụng để hiển thị danh sách các tùy

chọn cho người dùng.

8 Menubutton Menubutton được sử dụng để hiển thị các mục menu cho người dùng.

9 Menu Menu được sử dụng để thêm các mục menu cho người dùng.

10 Message Message được sử dụng để hiển thị hộp tin nhắn cho người dùng.

11 Radiobutton Người dùng được cung cấp các tùy chọn khác nhau và người dùng chỉ có thể chọn một tùy chọn trong số đó. 12 Scale Nó được sử dụng để cung cấp thanh trượt cho người

dùng.

13 Scrollbar Nó cung cấp thanh cuộn cho người dùng để người dùng có thể cuộn cửa sổ lên và xuống.

14 Text

Nó khác với Entry vì nó cung cấp một trường văn bản 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ó.

15 Toplevel Nó được sử dụng để tạo một vùng chứa cửa sổ riêng biệt.

16 Spinbox Nó là một widget mục nhập được sử dụng để chọn từ các tùy chọn của các giá trị.

17 PanedWindow Nó giống như một widget container chứa các ô ngang hoặc dọc.

18 LabelFrame LabelFrame là một widget vùng chứa hoạt động như một container.

18 MessageBox Nó được sử dụng để hiển thị hộp thơng báo trong các ứ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 số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 77

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 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 78 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 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 79 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 80

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', '?']

SVTH: LÊ TRUNG KIÊN 81 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 tố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

SVTH: LÊ TRUNG KIÊN 82 + 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.]

SVTH: LÊ TRUNG KIÊN 83

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 84

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 85 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 tố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)

Một phần của tài liệu 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Í (Trang 97 - 107)

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

(137 trang)