THIẾT KẾ VÀ XÂY DỰNG GIAO DIỆN CHO CHATBOT

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 81)

CHATBOT

4.1 Ứng dụng mạng nơ ron nhân tạo vào chatbot

Mạng nơ-ron nhân tạo (Artificial Neural Network – ANN) là một mô phỏng xử lý thông tin hay thường được gọi ngắn gọn là mạng nơ-ron, được nghiên cứu dựa trên hệ thống thần kinh của sinh vật, giống như một bộ não con người để xử lý các thông tin. ANN bao gồm một số lượng lớn các mối gắn kết để xử lý các yếu tố làm việc trong mối quan hệ giải quyết vấn đề rõ ràng. ANN được giới thiệu năm 1943 bởi nhà thần kinh học Warren McCulloch và nhà logic học Walter Pits, hoạt động của nó giống như hoạt động bộ não của con người, được học hỏi bởi kinh nghiệm thơng qua việc đào tạo, huấn luyện, có khả năng lưu giữ được các tri thức và sử dụng những tri thức đó trong việc phán đốn các dữ liệu mới, chưa biết (unseen data). Processing Elements (PE) của ANN gọi là nơ-ron, nhận các dữ liệu vào (inputs) xử lý chúng và cho ra một kết quả (output) duy nhất. Kết quả xử lý của một nơ-ron có thể làm input cho các nơ-ron khác.

Hình 4.1: Kiến trúc mạng nơ ron nhân tạo

SVTH: LÊ TRUNG KIÊN

Kiến trúc chung của một ANN gồm 3 thành phần đó là Input Layer, Hidden

Layer và Output Layer

Trong đó, lớp ẩn (Hidden Layer) gồm các nơ-ron, nhận dữ liệu input từ các Nơ- ron ở lớp (Layer) trước đó và chuyển đổi các input này cho các lớp xử lý tiếp theo. Trong một mạng ANN có thể có nhiều Hidden Layer.

Lợi thế lớn nhất của các mạng ANN là khả năng được sử dụng như một cơ chế xấp xỉ hàm tùy ý mà “học” được từ các dữ liệu quan sát. Tuy nhiên, sử dụng chúng không đơn giản như vậy, một số các đặc tính và kinh nghiệm khi thiết kế một mạng nơ-ron ANN.

Phương pháp này là tính tốn tỷ lệ chính xác dữ liệu đầu ra (output) từ dữ liệu đầu vào (input) bằng cách tính tốn các trọng số cho mỗi kết nối (connection) từ các lần lặp lại trong khi “huấn luyện” dữ liệu cho chatbot. Mỗi bước “huấn luyện” dữ liệu cho chatbot sẽ sửa đổi các trọng số dẫn đến dữ liệu output được xuất ra với độ chính xác cao.

Chọn mơ hình: Điều này phụ thuộc vào cách trình bày dữ liệu và các ứng

dụng. Mơ hình quá phức tạp có xu hướng dẫn đền những thách thức trong q trình học.

Cấu trúc và sự liên kết giữa các nơ-ron.

Thuật tốn học: Có hai vấn đề cần học đối với mỗi mạng ANN, đó là học tham

số của mơ hình (parameter learning) và học cấu trúc (structure learning). Học tham số là thay đổi trọng số của các liên kết giữa các nơ-ron trong một mạng, còn học cấu trúc là việc điều chỉnh cấu trúc mạng bằng việc thay đổi số lớp ẩn, số nơ-ron mỗi lớp và cách liên kết giữa chúng. Hai vấn đề này có thể được thực hiện đồng thời hoặc tách biệt. Nếu các mơ hình, hàm chi phí và thuật tốn học được lựa chọn một cách thích hợp, thì mạng ANN sẽ cho kết quả có thể vơ cùng mạnh mẽ và hiệu quả.

SVTH: LÊ TRUNG KIÊN

Hình 4.2: Q trình xử lý thơng tin của một mạng nơ-ron nhân tạo

Inputs: Mỗi Input tương ứng với 1 đặc trưng của dữ liệu. Ví dụ như trong ứng

dụng của ngân hàng xem xét có chấp nhận cho khách hàng vay tiền hay khơng thì mỗi input là một thuộc tính của khách hàng như thu nhập, nghề nghiệp, tuổi, số con,…

Output: Kết quả của một ANN là một giải pháp cho một vấn đề, ví dụ như với

bài toán xem xét chấp nhận cho khách hàng vay tiền hay khơng thì output là yes hoặc no.

Connection Weights (Trọng số liên kết) : Đây là thành phần rất quan trọng

của một ANN, nó thể hiện mức độ quan trọng, độ mạnh của dữ liệu đầu vào đối với quá trình xử lý thơng tin chuyển đổi dữ liệu từ Layer này sang layer khác. Quá trình học của ANN thực ra là quá trình điều chỉnh các trọng số Weight của các dữ liệu đầu vào để có được kết quả mong muốn.

Summation Function (Hàm tổng): Tính tổng trọng số của tất cả các input

được đưa vào mỗi Nơ-ron. Hàm tổng của một Nơ-ron đối với n input được tính theo cơng thức sau:

= ∑

=1

SVTH: LÊ TRUNG KIÊN

Transfer Function (Hàm chuyển đổi): Hàm tổng của một nơ-ron cho biết khả

năng kích hoạt của nơ-ron đó cịn gọi là kích hoạt bên trong. Các nơ-ron này có thể sinh ra một output hoặc khơng trong mạng ANN, nói cách khác rằng có thể output của 1 Nơ- ron có thể được chuyển đến layer tiếp trong mạng Nơ-ron theo hoặc không. Mối quan hệ giữa hàm tổng và kết quả output được thể hiện bằng hàm chuyển đổi.

Việc lựa chọn hàm chuyển đổi có ANN. Hàm chuyển đổi phi tuyến được sử hoặc tanh.

tác động lớn đến kết quả đầu ra của mạng dụng phổ biến trong mạng ANN là sigmoid

Trong đó, hàm tanh là phiên bản thay đổi tỉ lệ của sigmoid , tức là khoảng giá trị đầu ra của hàm chuyển đổi thuộc khoảng [-1, 1] thay vì [0,1] của Sigmoid nên chúng cịn gọi là hàm chuẩn hóa (Normalized Function).

Kết quả xử lý tại các nơ-ron (Output) đơi khi rất lớn, vì vậy hàm chuyển đổi được sử dụng để xử lý output này trước khi chuyển đến layer tiếp theo. Đơi khi thay vì sử dụng Transfer Function người ta sử dụng giá trị ngưỡng (Threshold value) để kiểm soát các output của các neuron tại một layer nào đó trước khi chuyển các output này đến các Layer tiếp theo. Nếu output của một neuron nào đó nhỏ hơn Threshold thì nó sẻ khơng được chuyển đến Layer tiếp theo.

Mạng nơ-ron của chúng ta dự đoán dựa trên lan truyền thẳng (forward propagation) là các phép nhân ma trận cùng với activation function để thu được kết quả đầu ra. Nếu input x là vector 2 chiều thì ta có thể tính kết quả dự đốn bằng công thức :

SVTH: LÊ TRUNG KIÊN

Trong đó, là input của layer thứ , là output của layer thứ sau khi áp dụng activation function. 1, 1, 2, 2 là các tham số (parameters) cần tìm của mơ hình mạng nơ-ron. Huấn luyện để tìm các tham số cho mơ hình tương đương với việc tìm các tham số 1, 1, 2, 2 sao cho hàm lỗi của mơ hình đạt được là thấp nhất. Ta gọi hàm lỗi của mơ hình là loss function. Đối với softmax function, ta dùng crossentropy loss (còn gọi là negative log likelihood). Nếu ta có N ví dụ dữ liệu huấn luyện, và C nhóm phân lớp, khi đó hàm lỗi giữa giá trị dự đốn và được tính:

( , ) = −

∈ ∈

Ý nghĩa công thức trên nghĩa là: lấy tổng trên toàn bộ tập huấn luyện và cộng dồn vào hàm loss nếu kết quả phân lớp sai. Độ dị biệt giữa hai giá

trị và càng lớn

thì độ lỗi càng cao. Mục tiêu của chúng ta là tối thiểu hóa hàm lỗi này. Ta có thể sử dụng phương pháp gradient descent để tối tiểu hóa hàm lỗi. Có hai loại gradient descent, một loại với fixed learning rate được gọi là batch gradient descent, loại cịn lại có learning rate thay đổi theo q trình huấn luyện được gọi là SGD (stochastic gradient descent) hay minibatch gradient descent.

Gradient descent cần các gradient là các vector có được bằng cách lấy đạo hàm

của loss function theo từng tham số , , , để tính các gradient này, ta sử

1 1 2 2

dụng thuật toán lan truyền ngược (backpropagation). Đây là cách hiệu quả để tính gradient khởi điểm từ output layer.

Áp dụng giải thuật lan truyền ngược ta có các đại lượng:

SVTH: LÊ TRUNG KIÊN

2 = 3

= 2

1 = 2

4.2 Một số thư viện Python hỗ trợ luận văn4.2.1 Thư viện json 4.2.1 Thư viện json

4.2.1.1 Giới thiệu

JSON là từ viết tắt của ký hiệu đối tượng JavaScript. Python có gói tích hợp có tên ‘json’ để hỗ trợ làm việc với JSON trong Python. JSON về cơ bản được sử dụng để mã hóa và giải mã dữ liệu. Q trình mã hóa dữ liệu JSON được gọi là tuần tự hóa vì nó liên quan đến việc chuyển đổi dữ liệu thành một chuỗi byte có thể được lưu trữ và truyền giữa các máy chủ và ứng dụng web. Vì tuần tự hóa là mã hóa dữ liệu, chúng ta có thể đốn thuật ngữ được sử dụng để giải mã.

Ví dụ: JSON được cho là có thể đọc được bởi bất kỳ ai sử dụng ngôn ngữ kiểu C và Python là ngôn ngữ kiểu C.

SVTH: LÊ TRUNG KIÊN

Hình 4.3: Ví dụ về json

Như bạn có thể thấy, JSON hỗ trợ các kiểu nguyên thủy, như chuỗi và số, cũng như các danh sách và đối tượng lồng nhau. Nó trơng giống như một từ điển Python.

Python hỗ trợ JSON ngun bản!

Python đi kèm với gói tích hợp được gọi là json, thư viện này cung cấp cho chúng ta những công cụ để làm việc cũng như để mã hóa và giải mã dữ liệu JSON.

Bảng 4.1: Các phương thức có sẵn trong mơ-đun JSON

Phương thức

Mã hóa dữ liệu Python sang JSON

SVTH: LÊ TRUNG KIÊN

Q trình mã hóa JSON thường được gọi là tuần tự hóa . Thuật ngữ này đề cập đến việc chuyển đổi dữ liệu thành một chuỗi byte (do đó nối tiếp ) sẽ được lưu trữ hoặc truyền qua mạng

Các đối tượng Python được dịch sang JSON theo một chuyển đổi khá trực quan.

Bảng 4.2: Các đối tượng Python sau khi được dịch sang Python

4.2.1.2 Kiểu dữ liệu của Json

Json có 5 kiểu dữ liệu chính

- Number: kiểu số bao gồm số nguyên và số thực.

- String: kiểu chuỗi, nội dung bao bởi cặp dấu nháy kép “, những ký tự đặt biệt được escape bởi dấu .Theo chuẩn JSON thì khơng sử dụng dấu nháy đơn như Javascript để bọc chuỗi.

- Boolean: kiểu luận lý bao gồm 2 giá trị là true và false

- Array: kiểu mảng, gồm các phần tử phân cách nhau bởi dấu phẩy ‘,’ và mảng được bao bởi cặp dấu [ và ].

- Object: kiểu đối tượng, gồm những cặp giá trị đi cùng nhau, mỗi cặp phân cách bởi dấu phẩy’,’, đối tượng được bao bởi cặp dấu { và }, cặp giá trị bao gồm tên và giá trị được phân cách bởi dấu hai chấm’:’.

- Null: giá trị null.

4.2.1.3 Ưu điểm của Json

- Có thể đọc hiểu được (human-readability).

SVTH: LÊ TRUNG KIÊN

- Là kiểu dữ liệu trên nền cơ sở Javascript nên dễ dàng tiếp cận.

- Dữ liệu truyền tải ngắn gọn so với những định dạng dữ liệu khác như: xml, html…

- Dễ dàng chuyển đổi(parse) dữ liệu từ dạng chuỗi (nhận từ server) sang dữ liệu có thể sử dụng được (thành Object, Number, Array)…

- Dễ truy cập nội dung.

- Với những ứng dụng Ajax lấy và xử lý dữ liệu từ một web service nào đó khác

domain: Nếu nội dung trả về có dạng xml thì javascript từ trang web của chúng ta khơng thể trực tiếp truy cập mà phải nhờ một proxy để đáp ứng yêu cầu của same origin policy. Nhưng nếu là dạng JSON thì đó khơng là vấn đề. (Thường dùng lệnh eval).

- Hai công nghệ phổ biến sử dụng JSON là PHP và .NET

4.2.2 Thư viện SpeechRecognition 4.2.2.1 Giới thiệu

Nhận dạng giọng nói, như tên cho thấy, đề cập đến việc nhận dạng tự động giọng nói của con người. Nhận dạng giọng nói là một trong những nhiệm vụ quan trọng nhất trong lĩnh vực tương tác với máy tính của con người. Nếu bạn đã từng tương tác với Alexa hoặc đã từng ra lệnh cho Siri hoàn thành một nhiệm vụ, bạn đã trải nghiệm sức mạnh của nhận dạng giọng nói.

Nhận dạng giọng nói có nhiều ứng dụng khác nhau, từ phiên âm tự động dữ liệu giọng nói (như thư thoại) đến tương tác với rơ bốt qua giọng nói.

Thực hiện lệnh sau để cài đặt thư viện:pip install SpeechRecognition

4.2.2.2 Nhận đầu vào âm thanh từ micrô

Để sử dụng micrô, chúng tôi cũng sẽ phải cài đặt mô-đun pyaudio(pip install

PyAudio). Chúng tơi sử dụng lớp micrơ để lấy lời nói đầu vào từ micrơ thay vì bất

kỳ phương thức nhập nào khác như tệp âm thanh.

SVTH: LÊ TRUNG KIÊN

Đối với hầu hết các dự án, chúng tơi có thể sử dụng micrơ mặc định. Nhưng nếu bạn không muốn sử dụng micrơ mặc định, bạn có thể lấy danh sách tên micrô bằng phương thức list_microphone_names.

Để nắm bắt đầu vào từ micrô, chúng tôi sử dụng phương pháp nghe:

import speechrecognition as sr r = sr.Recognizer()

with sr.Microphone() as source: audio = sr.listen(source)

4.2.3 Thư viện NLU 4.2.3.1 Giới thiệu

NLTK là một nền tảng hàng đầu để xây dựng các chương trình Python để làm việc với dữ liệu ngơn ngữ của con người. Nó cung cấp các giao diện dễ sử dụng cho hơn 50 tài nguyên ngữ liệu và từ vựng như Mạng từ, cùng với một bộ thư viện xử lý văn bản để phân loại, mã hóa, tạo gốc, gắn thẻ, phân tích cú pháp và lập luận ngữ nghĩa, trình bao bọc cho các thư viện NLP cơng nghiệp, và một diễn đàn thảo luận tích cực .

Nhờ hướng dẫn thực hành giới thiệu các nguyên tắc cơ bản về lập trình cùng với các chủ đề trong ngơn ngữ học tính tốn, cùng với tài liệu API tồn diện, NLTK phù hợp với các nhà ngơn ngữ học, kỹ sư, sinh viên, nhà giáo dục, nhà nghiên cứu và người dùng trong ngành. NLTK có sẵn cho Windows, Mac OS X và Linux. Hơn hết, NLTK là một dự án miễn phí, mã nguồn mở, hướng tới cộng đồng.

NLTK đã được gọi là “một công cụ tuyệt vời để giảng dạy và làm việc trong ngơn ngữ học tính tốn sử dụng Python” và “một thư viện tuyệt vời để chơi với ngôn ngữ tự nhiên.”

SVTH: LÊ TRUNG KIÊN

Xử lý ngôn ngữ tự nhiên với Python cung cấp giới thiệu thực tế về lập trình để xử lý ngơn ngữ. Được viết bởi những người tạo ra NLTK, nó hướng dẫn người đọc các nguyên tắc cơ bản của việc viết chương trình Python, làm việc với kho ngữ liệu, phân loại văn bản, phân tích cấu trúc ngơn ngữ và hơn thế nữa. Phiên bản trực tuyến của cuốn sách đã được cập nhật cho Python 3 và NLTK 3.

Thực hiện lệnh sau để cài đặt thư viện: pip install nltk Một số chức năng chính của NLTK:

- Mã hóa và gắn thẻ một số văn bản

- Xác định các thực thể được đặt tên:

4.2.4 Thư viện Numpy

Numpy (Numeric Python): là một thư viện toán học phổ biến và mạnh mẽ của Python. Cho phép làm việc hiệu quả với ma trận và mảng, đặc biệt là dữ liệu ma trận và mảng lớn với tốc độ xử lý nhanh hơn nhiều lần khi chỉ sử dụng “core Python” đơn thuần.

NumPy được phát triển bởi Jim Hugunin. Phiên bản ban đầu là Numarray được phát triển, có một số chức năng bổ sung. Năm 2005, Travis Oliphant đã tạo ra gói NumPy bằng cách kết hợp các tính năng của Numarray và gói Numeric.

Sử dụng NumPy, lập trình viên có thể thực hiện các thao tác sau:

- Các phép toán học và logic trên mảng.

- Các biến đổi Fourier và các quy trình để thao tác shape.

- Các phép tốn liên quan đến đại số tuyến tính. NumPy tích hợp sẵn các hàm cho đại số tuyến tính và tạo số ngẫu nhiên.

Thực hiện lệnh sau để cài đặt thư viện: pip install numpy

SVTH: LÊ TRUNG KIÊN

4.2.5 Thư viện Openpyxl 4.2.5.1 Giới thiệu

Python cung cấp mô-đun Openpyxl, được sử dụng để xử lý các tệp Excel mà không liên quan đến phần mềm ứng dụng Microsoft của bên thứ ba. Bằng cách sử dụng mơ-đun này, chúng ta có thể kiểm sốt excel mà khơng cần mở ứng dụng. Nó được sử dụng để thực hiện các tác vụ excel như đọc dữ liệu từ tệp excel, hoặc ghi dữ liệu vào tệp excel, vẽ một số biểu đồ, truy cập trang tính excel, đổi tên trang tính, sửa đổi (thêm và xóa) trong trang tính excel, định dạng, tạo kiểu trong trang tính và bất kỳ nhiệm vụ nào khác. Openpyxl rất hiệu quả để thực hiện các tác vụ này cho bạn.

Các nhà khoa học dữ liệu thường sử dụng Openpyxl để thực hiện các hoạt động khác nhau như sao chép dữ liệu để khai thác dữ liệu cũng như phân tích dữ liệu.

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 81)

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

(148 trang)
w