Hệ thống hội thoại

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Xây dựng hệ thống Agent hội thoại hiện thân cho tương tác người máy (Trang 51 - 56)

CHƯƠNG 4. HỆ THỐNG AGENT HỘI THOẠI HIỆN THÂN

4.2. Hệ thống hội thoại

Hệ thống này đƣợc chúng tôi xây dựng nhƣ là một kiểu chatterbot và sử dụng cơ sở dữ liệu dưới dạng các tệp AIML (Artificial Intelligence Markup Language).

Trong hệ thống này chúng tôi sử dụng thƣ viện AIMLBot [16].

4.2.1. AIMLBot

AIMLBot hay còn có tên là Program# là một thƣ viện nhỏ, thực thi nhanh và dễ dạng bổ sung các tuy biến tương thích với các chuẩn của AIML. AIMLBot được sử dụng trong các chương trình Chatterbot viết bằng C#. AIMLBot cũng đã được kiểm thử trên cả hai môi trường Microsoft runtime và Mono trên Linux.

Các đặc điểm của AIMLBot:

* Tương thích tốt trên nhiều nền tảng ứng dụng. Hỗ trợ .NET 1.1, 2.0 và XNA cũng nhƣ dự án mã nguồn mở MONO.

* Kiến trúc môdun hoàn toàn mới, dễ dạng cho các nhà phát triển để mở thông và thêm tính năng.

* Cung cấp API đơn giản và hợp lý hơn.

* Hỗ trợ định dạng AIML chuẩn với tùy chọn cho các thẻ mới.

* Kích thước rất nhỏ (khoảng 56k).

* Tốc độ thực thi nhanh (xử lý 30,000 chủ đề chƣa đến một giây).

* Đƣợc kiểm thử toàn diện dựa trên nUnit.

* “Bộ não” của bot được lưu trữ ở dạng tệp nhị phân (Graphmaster.dat).

Phiên bản mới nhất của AIMLBot đƣợc xây dựng trên nền .NET 2.0 của Microsoft và bốn lớp để cho chúng ta tương tác như hình Hình 11.

* Bot – Gói gọn các thao tác của một chatterbot.

* User – Đóng gói thông tin và lịch sử của người hội thoại.

* Request – Mô tả tất cả các loại thông tin về một yêu cầu đƣợc gửi tới chatterbot xử lý.

* Result – Đóng gói các thông tin về kết quả trả về của chatterbot.

Hình 11: Các lớp cơ bản của AIMLBot

Thiết lập chế độ và cách sử dụng thƣ viện AIMLBot rất đơn giản nhƣ ví dụ dưới đây.

Bot myBot = new Bot();

myBot.loadSettings();

myBot.loadAIMLFromFiles();

User myUser = new User("consoleUser", myBot);

while (true) {

Console.Write("You: ");

string input = Console.ReadLine();

if (input.ToLower() == "quit") {

break;

} else {

Request r = new Request(input, myUser, myBot);

Result res = myBot.Chat(r);

Console.WriteLine("Bot: " + res.Output);

} }

Đối tƣợng myBot đƣợc khởi tạo, sau đó đƣợc nạp các thông số mặc định bằng lời gọi hàm loadSettings và để nạp AIML thì sử dụng hàm loadAIMLFromFiles. Thƣ viện này cung cấp cho chúng ta nhiều cách thức để nạp AIML, các thông tin này có thể xem kỹ trong các lớp Bot và Utils.AIMLLoader.

Quá trình xử lý một request đƣợc mô tả ở mức cao nhƣ sau:

1. Dữ liệu đầu vào thô sẽ đƣợc đóng gói vào một đối tƣợng kiểu Request và phân chia thành các câu hợp thành rồi chuẩn hóa để tạo ra “path” cho bộ não của bot.

2. Mỗi “path” đƣợc liên kết với một đối tƣợng SubQuery và nó thực thi để có đƣợc kết quả là một tập hợp mẫu AIML.

3. Bất kỳ thẻ AIML nào đƣợc tìm thấy trong mẫu sẽ đƣợc thông dịch và dữ liệu thô trả về đƣợc tạo ra.

4. Kết quả đƣợc đóng gói vào một đối tƣợng Result và trả về cho bot.

Trong đó thƣ mục AIML Files chứa các file có định dạng AIML phục vụ cho hội thoại.

4.2.2. AIML - Artificial Intelligence Markup Language

AIML đƣợc viết tắt từ Artificial Intelligence Markup Language, là một dạng XML đƣợc phát triển bởi Richard Wallace và cộng đồng phần mềm tự do trên toàn thế

giới từ năm 1995 đến nay. AIML được sử dụng đầu tiên cho chương trình chattterbot với tên gọi “A.L.I.C.E” (Artificial Linguistic Internet Computer Entity), chương trình giành ba giải thưởng hàng năm Loebner Prize Contest for Most Human Computer và Chatterbox Challenge Champion 2004. AIML là tập hợp các mẫu đầu vào và phản hồi cho ALICE.

AIML chứa các mẫu dữ liệu nhập vào và mẫu các phản hồi tương ứng cho các chương trình chatterbot. Các câu dữ liệu nhập vào sẽ được phân tích để tìm ra mẫu thích hợp trong tệp AIML, sau khi tìm thấy thì các phản hồi tương ứng sẽ được trả lại cho người dùng. Tệp AIML đơn thuần là một file XML cho nên rất dễ dàng để thêm, sửa, xóa nội dung, nhờ đó có thể làm cho nội dung hội thoại trở nên phong phú và cuốn hút.

Hình 12: Mẫu file AIML

Thành phần của AIML

AIML có dạng đặc tả và schema chuẩn theo W3C XML. Dưới đây mô tả một số thành phần quan trọng.

4.2.2.1. Thẻ category

Trong AIML thì đây là đơn vị cơ sở của tri thức. Trong thẻ Category có chứa ít nhất hai thẻ pattern và element. Dưới đây là một ví dụ cho thẻ category

<category>

<pattern>WHAT IS YOUR NAME</pattern>

<template>My name is John.</template>

</category>

Nhƣ ví dụ trên, khi chatterbot mà nạp nội dung thẻ category này vào bộ nhớ thì bot sẽ phản hồi lại câu hỏi “What is your name” bằng câu “My name is John”.

4.2.2.2. Thẻ pattern

Nội dung của thẻ này chứa một chuỗi ký tự có nội dung phù hợp với một hay nhiều dữ liệu được người dùng đưa vào. Ví dụ với một mẫu như dưới đây

WHAT IS YOUR NAME

Thì chỉ tương ứng chỉ một dữ liệu đầu vào là “what is your name”. Nhưng với một mẫu gần giống vậy mà ta sử dụng ký tự đại diện như phía dưới

WHAT IS YOUR *

Thì nó có thể tương ứng với rất nhiều đầu vào như là “what is your name”,

“what is your shoe size”, “what is your purpose in life”… và rất nhiều câu kiểu nhƣ vậy.

Cú pháp của mẫu AIML là rất đơn giản, không phức tạp nhƣ regular expression.

4.2.2.3. Thẻ template

Nội dung trong thẻ này là sự phản hồi tương ứng với một mẫu. Có thể chỉ đơn giản với nội dung

My name is Hoa.

Hay với một mẫu sử dụng biến nhƣ

My name is <bot name="name"/>.

Sẽ thay thế tên của chatterbot vào trong câu. Hoặc

You told me you are <get name="user-age"/> years old.

Sẽ thay thế tuổi của người dùng nếu chatterbot biết vào trong câu.

Nội dung của thẻ template có thể đơn thuần là văn bản thuần túy hoặc cũng có thể là câu điều kiện hay một loạt câu phục vụ cho sự phản hồi ngẫu nhiên. Thẻ template cũng có thể được định hướng đến một mẫu khác bằng việc sử dụng thẻ srai trong nó, việc này thuận tiện đối với các mẫu đầu vào có nội dung giống nhau.

<category>

<pattern>WHAT IS YOUR NAME</pattern>

<template>My name is <bot name="name"/>.</template>

</category>

<category>

<pattern>WHAT ARE YOU CALLED</pattern>

<template>

<srai>what is your name</srai>

</template>

</category>

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Xây dựng hệ thống Agent hội thoại hiện thân cho tương tác người máy (Trang 51 - 56)

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

(69 trang)