AIML - Panduan Cepat

AIML adalah singkatan dari Artificial Intelligence Markup Language. AIML dikembangkan oleh komunitas perangkat lunak bebas Alicebot dan Dr. Richard S. Wallace selama 1995-2000. AIML digunakan untuk membuat atau menyesuaikan Alicebot yang merupakan aplikasi chat-box berdasarkan perangkat lunak gratis ALICE (Artificial Linguistic Internet Computer Entity).

Tag AIML

Berikut adalah tag penting yang biasa digunakan dalam dokumen AIML.

S.No. Tag / Deskripsi AIML
1

<aiml>

Mendefinisikan awal dan akhir dokumen AIML.

2

<category>

Mendefinisikan unit of knowledge di basis pengetahuan Alicebot.

3

<pattern>

Mendefinisikan pola untuk mencocokkan apa yang mungkin dimasukkan pengguna ke Alicebot.

4

<template>

Mendefinisikan respon dari Alicebot untuk input pengguna.

Kami akan membahas masing-masing tag ini di bab Tag Dasar AIML .

Berikut adalah beberapa tag bertujuan lain yang banyak digunakan. Kami akan membahas setiap tag secara detail di bab-bab selanjutnya.

S.No. Tag / Deskripsi AIML
1

<star>

Digunakan untuk mencocokkan kartu liar * karakter di Tag <pattern>.

2

<srai>

Tag multiguna, digunakan untuk memanggil / mencocokkan kategori lainnya.

3

<random>

Bekas <random> untuk mendapatkan tanggapan acak.

4

<li>

Digunakan untuk mewakili banyak tanggapan.

5

<set>

Digunakan untuk menetapkan nilai dalam variabel AIML.

6

<get>

Digunakan untuk mendapatkan nilai yang disimpan dalam variabel AIML.

7

<that>

Digunakan di AIML untuk merespons berdasarkan konteksnya.

8

<topic>

Digunakan di AIML untuk menyimpan konteks sehingga percakapan nanti bisa dilakukan berdasarkan konteks itu.

9

<think>

Digunakan di AIML untuk menyimpan variabel tanpa memberi tahu pengguna.

10

<condition>

Mirip dengan pernyataan switch dalam bahasa pemrograman. Ini membantu ALICE untuk menanggapi masukan yang cocok.

Kosakata AIML

Kosakata AIML menggunakan kata, spasi, dan dua karakter khusus * dan _sebagai kartu liar. Penerjemah AIML lebih mengutamakan kepemilikan pola_ dari pada memiliki pola *. Tag AIML sesuai dengan XML dan polanya tidak peka huruf besar / kecil.

Contoh

<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> HELLO ALICE </pattern>
      
      <template>
         Hello User!
      </template>
      
   </category>
</aiml>

Berikut ini adalah poin penting yang harus diperhatikan -

  • <aiml> tag menandakan awal dari dokumen AIML.

  • <category> tag mendefinisikan unit pengetahuan.

  • <pattern> tag mendefinisikan pola yang akan diketik pengguna.

  • <template> tag mendefinisikan respons kepada pengguna jika pengguna mengetik Hello Alice.

Hasil

User: Hello Alice
Bot: Hello User

Tutorial ini akan memandu Anda tentang cara mempersiapkan lingkungan pengembangan untuk memulai pekerjaan Anda dengan AIML untuk membuat perangkat lunak obrolan otomatis. Program AB adalah implementasi referensi dari AIML 2.0 yang dikembangkan dan dikelola oleh ALICE AI Foundation. Tutorial ini juga akan mengajari Anda cara menyiapkan JDK, sebelum Anda menyiapkan pustaka Program AB -

Langkah 1 - Siapkan Java Development Kit (JDK)

Anda dapat mengunduh versi terbaru SDK dari situs Java Oracle - Unduhan Java SE . Anda akan menemukan instruksi untuk menginstal JDK dalam file yang diunduh, ikuti instruksi yang diberikan untuk menginstal dan mengkonfigurasi pengaturan. Terakhir, setel variabel lingkungan PATH dan JAVA_HOME untuk merujuk ke direktori yang berisi java dan javac, biasanya masing-masing java_install_dir / bin dan java_install_dir.

Jika Anda menjalankan Windows dan menginstal JDK di C: \ jdk1.7.0_75, Anda harus meletakkan baris berikut di file C: \ autoexec.bat Anda.

set PATH = C:\jdk1.7.0_75\bin;%PATH%
set JAVA_HOME = C:\jdk1.7.0_75

Sebagai alternatif, pada Windows NT / 2000 / XP, Anda juga dapat mengklik kanan pada My Computer, pilih Properties, lalu Advanced, lalu Environment Variables. Kemudian, Anda akan memperbarui nilai PATH dan menekan tombol OK.

Di Unix (Solaris, Linux, dll.), Jika SDK diinstal di /usr/local/jdk1.7.0_75 dan Anda menggunakan shell C, Anda akan memasukkan yang berikut ini ke dalam file .cshrc Anda.

setenv PATH /usr/local/jdk1.7.0_75/bin:$PATH
setenv JAVA_HOME /usr/local/jdk1.7.0_75

Alternatifnya, jika Anda menggunakan Integrated Development Environment (IDE) seperti Borland JBuilder, Eclipse, IntelliJ IDEA, atau Sun ONE Studio, kompilasi dan jalankan program sederhana untuk memastikan bahwa IDE mengetahui di mana Anda menginstal Java, jika tidak lakukan pengaturan yang tepat seperti dokumen yang diberikan. dari IDE.

Langkah 2 - Siapkan Program AB

Sekarang jika semuanya baik-baik saja, maka Anda dapat melanjutkan ke setup Program AB Anda. Berikut adalah langkah-langkah sederhana untuk mengunduh dan menginstal pustaka di komputer Anda.

  • Tentukan pilihan apakah Anda ingin menginstal AIML di Windows, atau Unix, lalu lanjutkan ke langkah berikutnya untuk mendownload file .zip

  • Unduh versi terbaru binari Program AB dari https://code.google.com/p/program-ab/menggunakan link program-ab-0.0.4.3.zip .

  • Pada saat menulis tutorial ini, saya mengunduh program-ab-0.0.4.3.zip di mesin Windows saya dan ketika Anda mengekstrak file yang diunduh itu akan memberi Anda struktur direktori di dalam C: \ ab sebagai berikut.

S.No. Direktori & Deskripsi
1

c:/ab/bots

Menyimpan bot AIML

2

c:/ab/lib

Menyimpan perpustakaan Java

3

c:/ab/out

Direktori file kelas Java

4

c:/ab/run.bat

file batch untuk menjalankan Program AB

Setelah Anda selesai dengan langkah terakhir ini, Anda siap untuk melanjutkan dengan Contoh AIML pertama Anda yang akan Anda lihat di bab berikutnya.

Mari kita mulai membuat bot pertama yang akan menyapa pengguna dengan Hello User! saat pengguna mengetik Hello Alice.

Buat Struktur Proyek

Seperti di AIML Environment Setup , kami telah mengekstrak konten program-ab diC > ab dengan struktur direktori berikut.

S.No. Direktori & Deskripsi
1

c:/ab/bots

Menyimpan bot AIML

2

c:/ab/lib

Menyimpan perpustakaan Java

3

c:/ab/out

Direktori file kelas Java

4

c:/ab/run.bat

file batch untuk menjalankan Program AB

Sekarang, buat pengujian direktori di dalamnya C > ab > bots dan buat direktori berikut di dalamnya.

S.No. Direktori & Deskripsi
1

c:/ab/bots/test/aiml

Menyimpan file AIML

2

c:/ab/bots/test/aimlif

Menyimpan file AIMLIF

3

c:/ab/bots/test/config

Menyimpan file konfigurasi

4

c:/ab/bots/test/sets

Menyimpan Set AIML

5

c:/ab/bots/test/maps

Menyimpan AIML Maps

Buat File Sumber

Buat test.aiml di dalamnya C > ab > bots > test > aiml dan test.aiml.csv di dalamnya C > ab > bots > test > aimlif direktori.

test.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version="1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> HELLO ALICE </pattern>
      
      <template>
         Hello User
      </template>
      
   </category>
</aiml>

test.aiml.csv

0,HELLO ALICE,*,*,Hello User,test.aiml

Jalankan Program

Buka prompt perintah. Pergi keC > ab > dan ketik perintah berikut -

java -cp lib/Ab.jar Main bot = test action = chat trace = false

Verifikasi Hasilnya

Anda akan melihat output berikut -

Working Directory = C:\ab

Program AB 0.0.4.2 beta -- AI Foundation Reference AIML 2.0 implementation
bot = test
action = chat
trace = false
trace mode = false
Name = test Path = C:\ab/bots/test

C:\ab
C:\ab/bots
C:\ab/bots/test
C:\ab/bots/test/aiml
C:\ab/bots/test/aimlif
C:\ab/bots/test/config
C:\ab/bots/test/logs
C:\ab/bots/test/sets
C:\ab/bots/test/maps

Preprocessor: 0 norms 0 persons 0 person2
Get Properties: C:\ab/bots/test/config/properties.txt
addAIMLSets: C:\ab/bots/test/sets does not exist.
addCategories: C:\ab/bots/test/aiml does not exist.
AIML modified Tue Apr 07 22:24:29 IST 2015 AIMLIF modified Tue Apr 07 22:26:53 I
ST 2015
No deleted.aiml.csv file found
No deleted.aiml.csv file found
Loading AIML files from C:\ab/bots/test/aimlif

Reading Learnf file
Loaded 1 categories in 0.009 sec
--> Bot test 1 completed 0 deleted 0 unfinished
(1[6])--HELLO-->(1[5])--ALICE-->(1[4])--<THAT>-->(1[3])--*-->(1[2])--<TOPIC>-->(
1[1])--*-->(0[null,null]) Hello User...
7 nodes 6 singletons 1 leaves 0 shortcuts 0 n-ary 6 branches 0.85714287 average
branching
Human:

Tipe Hello Alice dan lihat hasilnya lalu ketik apa saja untuk melihat hasil yang berubah.

Human: hello alice
Robot: Hello User
Human: bye
Robot: I have no answer for that.
Human:

Dalam tutorial ini, kita akan membahas tag dasar AIML.

  • <aiml> - mendefinisikan awal dan akhir dokumen AIML.

  • <category> - mendefinisikan unit of knowledge di basis pengetahuan Alicebot.

  • <pattern> - mendefinisikan pola untuk mencocokkan apa yang mungkin dimasukkan pengguna ke Alicebot.

  • <template> - mendefinisikan respon dari Alicebot untuk masukan pengguna.

File AIML berikut telah digunakan di sini sebagai referensi.

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> HELLO ALICE </pattern>
      
      <template>
         Hello User
      </template>
      
   </category>
</aiml>

<aiml>

Tag <aiml> menandai awal dan akhir dokumen AIML. Ini berisi informasi versi dan pengkodean di bawah atribut versi dan pengkodean. atribut versi menyimpan versi AIML yang digunakan oleh ALICE chatterbot Knowledge Base, KB. Misalnya, kami telah menggunakan versi 1.0.1. Atribut ini opsional.

Atribut pengkodean menyediakan kumpulan karakter yang akan digunakan dalam dokumen. Misalnya, kami telah menggunakan UTF-8. Sebagai persyaratan wajib, tag <aiml> harus mengandung setidaknya satu tag <category>. Kita dapat membuat beberapa file AIML di mana setiap file AIML berisi satu tag <aiml>. Tujuan dari setiap file AIML adalah untuk menambahkan setidaknya satu unit pengetahuan yang disebut kategori ke ALICE chatterbot KB.

<aiml version = "1.0.1" encoding = "UTF-8"?>
   ...
</aiml>

<category>

Tag <category> adalah unit pengetahuan dasar dari ALICE Bot. Setiap kategori berisi -

  • Input pengguna berupa kalimat yang bisa berupa asersi, pertanyaan, dan seru dll. Input pengguna dapat berisi karakter wild card seperti * dan _.

  • Tanggapan atas masukan pengguna yang akan disajikan oleh Alicebot.

  • Konteks opsional.

SEBUAH <category> tag harus memiliki <pattern> dan <template> menandai. <pattern> mewakili input pengguna dan template mewakili respons bot.

<category>
   <pattern> HELLO ALICE </pattern>
   
   <template>
      Hello User
   </template>
   
</category>

Di sini, jika pengguna masuk Hello Alice maka bot akan merespon kembali sebagai Hello User.

<pattern>

Tag <pattern> merepresentasikan masukan pengguna. Ini harus menjadi tag pertama dalam tag <category>. Tag <pattern> dapat berisi wild card untuk mencocokkan lebih dari satu kalimat sebagai input pengguna. Misalnya, dalam contoh kita, <pattern> berisi HELLO ALICE.

AIML peka huruf besar kecil. Jika pengguna memasukkan Hello Alice, hello alice, HELLO ALICE, dll., Semua input valid dan bot akan mencocokkannya dengan HELLO ALICE.

<category>
   <pattern> HELLO ALICE </pattern>
   
   <template>
      Hello User
   </template>
   
</category>

Di sini, templatenya adalah "Halo Pengguna" dan mewakili respons robot terhadap input pengguna.

<template>

Tag <template> merepresentasikan respons bot kepada pengguna. Ini harus menjadi tag kedua dalam tag <category>. Tag <template> ini dapat menyimpan data, memanggil program lain, memberikan jawaban bersyarat atau mendelegasikan ke kategori lain.

<category>
   <pattern> HELLO ALICE </pattern>
   
   <template>
      Hello User
   </template>
   
</category>

Di sini, templatenya adalah "Halo Pengguna" dan mewakili respons robot terhadap input pengguna.

<star> Tag digunakan untuk mencocokkan kartu liar * karakter dalam Tag <pattern>.

Sintaksis

<star index = "n"/>

n menandakan posisi * dalam input pengguna di Tag <pattern>.

Perhatikan contoh berikut -

<category>
   <pattern> A * is a *. </pattern>
   
   <template>
      When a <star index = "1"/> is not a <star index = "2"/>?
   </template>
   
</category>

Jika pengguna memasukkan "Mangga adalah buah". maka bot akan menjawab sebagai "Ketika mangga bukan buah?"

Contoh

Buat star.aiml di dalamnya C > ab > bots > test > aiml dan star.aiml.csv di dalamnya C > ab > bots > test > aimlif direktori.

star.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   
   <category>
      <pattern>I LIKE *</pattern>
      <template>
         I too like <star/>.
      </template>
   </category>
   
   <category>
      <pattern>A * IS A *</pattern>
      <template>
         How <star index = "1"/> can not be a <star index = "2"/>?
      </template>
   </category>
   
</aiml>

star.aiml.csv

0,I LIKE *,*,*,I too like <star/>.,star.aiml
0,A * IS A *,*,*,How <star index = "1"/> can not be a <star index = "2"/>?,star.aiml

Jalankan Program

Buka prompt perintah. Pergi keC > ab > dan ketik perintah berikut -

java -cp lib/Ab.jar Main bot = test action = chat trace = false

Verifikasi Hasilnya

Anda akan melihat output berikut -

Human: I like mango
Robot: I too like mango.
Human: A mango is a fruit
Robot: How mango can not be a fruit?

<star index = "1" /> sering digunakan sebagai <star />

<srai>Tag adalah tag multiguna. Tag ini memungkinkan AIML menentukan target berbeda untuk template yang sama.

Sintaksis

<srai> pattern </srai>

Berikut adalah istilah-istilah yang umum digunakan terkait dengan srai -

  • Pengurangan Simbolik

  • Memecah dan menaklukkan

  • Resolusi sinonim

  • Deteksi kata kunci

Pengurangan Simbolik

Teknik reduksi simbolik digunakan untuk menyederhanakan pola. Ini membantu untuk mengurangi pola tata bahasa yang kompleks dengan pola sederhana.

Misalnya, perhatikan percakapan berikut.

Human: Who was Albert Einstein?
Robot: Albert Einstein was a German physicist.
Human: Who was Isaac Newton?
Robot: Isaac Newton was a English physicist and mathematician.

Sekarang What if pertanyaan diajukan sebagai

Human: DO YOU KNOW WHO Albert Einstein IS?
Human: DO YOU KNOW WHO Isaac Newton IS?

Sini, <srai> tag berfungsi. Ini bisa mengambil pola pengguna sebagai template.

Langkah 1: Buat kategori

<category>
   <pattern>WHO IS ALBERT EINSTEIN?</pattern>
   <template>Albert Einstein was a German physicist.</template>
</category>

<category>
   <pattern> WHO IS Isaac NEWTON? </pattern>
   <template>Isaac Newton was a English physicist and mathematician.</template>
</category>

Langkah 2: Buat kategori umum menggunakan tag <srai>

<category>
   <pattern>DO YOU KNOW WHO * IS?</pattern>
   
   <template>
      <srai>WHO IS <star/></srai>
   </template>
   
</category>

Contoh

Buat srai.aiml di dalamnya C > ab > bots > test > aiml dan srai.aiml.csv di dalamnya C > ab > bots > test > aimlif direktori.

srai.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> WHO IS ALBERT EINSTEIN </pattern>
      <template>Albert Einstein was a German physicist.</template>
   </category>
   
   <category>
      <pattern> WHO IS Isaac NEWTON </pattern>
      <template>Isaac Newton was a English physicist and mathematician.</template>
   </category>
   
   <category>
      <pattern>DO YOU KNOW WHO * IS</pattern>
      <template>
         <srai>WHO IS <star/></srai>
      </template>
   </category>
</aiml>

star.aiml.csv

0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml

Jalankan Program

Buka prompt perintah. Pergi keC > ab > dan ketik perintah berikut -

java -cp lib/Ab.jar Main bot = test action = chat trace = false

Verifikasi Hasilnya

Anda akan melihat output berikut -

Human: Do you know who Albert Einstein is
Robot: Albert Einstein was a German physicist.

Memecah dan menaklukkan

Divide and Conquer digunakan untuk menggunakan kembali sub kalimat dalam membuat jawaban lengkap. Ini membantu mengurangi pendefinisian beberapa kategori.

Misalnya, pertimbangkan untuk mengikuti percakapan.

Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!

Nah disini robot diharapkan membalas GoodBye! Kapanpun pengguna berkata Bye di awal kalimat.

Mari kita gunakan tag <srai> untuk bekerja di sini.

Langkah 1: Buat kategori

<category>
   <pattern>BYE</pattern>
   <template>Good Bye!</template>
</category>

Langkah 2: Buat kategori umum menggunakan tag <srai>

<category>
   <pattern>BYE *</pattern>
   
   <template>
      <srai>BYE</srai>
   </template>
   
</category>

Contoh

Perbarui srai.aiml di dalam C > ab > bots > test > aiml dan srai.aiml.csv di dalamnya C > ab > bots > test > aimlif direktori.

srai.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> WHO IS ALBERT EINSTEIN </pattern>
      <template>Albert Einstein was a German physicist.</template>
   </category>
 
   <category>
      <pattern> WHO IS Isaac NEWTON </pattern>
      <template>Isaac Newton was a English physicist and mathematician.</template>
   </category>
   
   <category>
      <pattern>DO YOU KNOW WHO * IS</pattern>
      <template>
         <srai>WHO IS <star/></srai>
      </template>
   </category>
   
   <category>
      <pattern>BYE</pattern>
      <template>Good Bye!</template>
   </category>
   
   <category>
      <pattern>BYE *</pattern>
      <template>
         <srai>BYE</srai>
      </template>
   </category>
   
</aiml>

star.aiml.csv

0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml

Jalankan Program

Buka prompt perintah. Pergi keC > ab > dan ketik perintah berikut -

java -cp lib/Ab.jar Main bot = test action = chat trace = false

Verifikasi Hasilnya

Anda akan melihat output berikut -

Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!

Resolusi Sinonim

Sinonim adalah kata-kata dengan arti yang mirip. Bot harus membalas dengan cara yang sama untuk kata-kata yang mirip.

Misalnya, perhatikan percakapan berikut.

Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!

Nah disini robot diharapkan membalas Development Center! setiap kali pengguna berkata Factory atau Industry.

Mari kita taruh <srai> tag untuk bekerja di sini.

Langkah 1: Buat kategori

<category>
   <pattern>FACTORY</pattern>
   <template>Development Center!</template>
</category>

Langkah 2: Buat kategori umum menggunakan tag <srai>

<category>
   <pattern>INDUSTRY</pattern>
   
   <template>
      <srai>FACTORY</srai>
   </template>
   
</category>

Contoh

Perbarui srai.aiml di dalam C > ab > bots > test > aiml dan srai.aiml.csv di dalamnya C > ab > bots > test > aimlif direktori.

srai.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> WHO IS ALBERT EINSTEIN </pattern>
      <template>Albert Einstein was a German physicist.</template>
   </category>
   
   <category>
      <pattern> WHO IS Isaac NEWTON </pattern>
      <template>Isaac Newton was a English physicist and mathematician.</template>
   </category>
   
   <category>
      <pattern>DO YOU KNOW WHO * IS</pattern>
      <template>
         <srai>WHO IS <star/></srai>
      </template>
   </category>
   
   <category>
      <pattern>BYE</pattern>
      <template>Good Bye!</template>
   </category>
   
   <category>
      <pattern>BYE *</pattern>
      <template>
         <srai>BYE</srai>
      </template>
   </category>
   
   <category>
      <pattern>FACTORY</pattern>
      <template>Development Center!</template>
   </category>
   
   <category>
      <pattern>INDUSTRY</pattern>
      <template>
         <srai>FACTORY</srai>
      </template>
   </category>
   
</aiml>

star.aiml.csv

0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml
0,FACTORY,*,*,Development Center!,srai.aiml
0,INDUSTRY,*,*,<srai>FACTORY</srai>,srai.aiml

Jalankan Program

Buka prompt perintah. Pergi keC > ab > dan ketik perintah berikut -

java -cp lib/Ab.jar Main bot = test action = chat trace = false

Verifikasi Hasilnya

Anda akan melihat output berikut -

Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!

Deteksi Kata Kunci

Menggunakan srai, kami dapat mengembalikan respons sederhana saat pengguna mengetikkan kata kunci tertentu, misalnya, Sekolah, di mana pun "sekolah" berada dalam kalimat.

Misalnya, perhatikan percakapan berikut.

Human: I love going to school daily.
Robot: School is an important institution in a child's life.
Human: I like my school.
Robot: School is an important institution in a child's life.

Di sini, robot diharapkan membalas pesan standar 'School is an important institution in a child's life.' kapan pun pengguna memilikinya school dalam kalimat tersebut.

Mari kita taruh <srai>tag untuk bekerja di sini. Kami akan menggunakan kartu liar di sini.

Langkah 1: Buat kategori

<category>
   <pattern>SCHOOL</pattern>
   <template>School is an important institution in a child's life.</template>
</category>

Langkah 2: Buat kategori umum menggunakan tag <srai>

<category>
   <pattern>_ SCHOOL</pattern>
   <template>
      <srai>SCHOOL</srai>
   </template>
</category>

<category>
   <pattern>_ SCHOOL</pattern>
   <template>
      <srai>SCHOOL</srai>
   </template>
</category>

<category>
   <pattern>SCHOOL *</pattern>
   <template>
      <srai>SCHOOL</srai>
   </template>
</category>

<category>
   <pattern>_ SCHOOL *</pattern>
   <template>
      <srai>SCHOOL</srai>
   </template>
</category>

Contoh

Perbarui srai.aiml di dalam C > ab > bots > test > aiml dan srai.aiml.csv di dalamnya C > ab > bots > test > aimlif direktori.

srai.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> WHO IS ALBERT EINSTEIN </pattern>
      <template>Albert Einstein was a German physicist.</template>
   </category>
   
   <category>
      <pattern> WHO IS Isaac NEWTON </pattern>
      <template>Isaac Newton was a English physicist and mathematician.</template>
   </category>
   
   <category>
      <pattern>DO YOU KNOW WHO * IS</pattern>
      <template>
         <srai>WHO IS <star/></srai>
      </template>
   </category>
   
   <category>
      <pattern>BYE</pattern>
      <template>Good Bye!</template>
   </category>
   
   <category>
      <pattern>BYE *</pattern>
      <template>
         <srai>BYE</srai>
      </template>
   </category>
   
   <category>
      <pattern>FACTORY</pattern>
      <template>Development Center!</template>
   </category>
   
   <category>
      <pattern>INDUSTRY</pattern>
      <template>
         <srai>FACTORY</srai>
      </template>
   </category>
   
   <category>
      <pattern>SCHOOL</pattern>
      <template>School is an important institution in a child's life.</template>
   </category>  
   
   <category>
      <pattern>_ SCHOOL</pattern>
      <template>
         <srai>SCHOOL</srai>
      </template>
   </category>
   
   <category>
      <pattern>_ SCHOOL</pattern>
      <template>
         <srai>SCHOOL</srai>
      </template>
   </category>
   
   <category>
      <pattern>SCHOOL *</pattern>
      <template>
         <srai>SCHOOL</srai>
      </template>
   </category>
   
   <category>
      <pattern>_ SCHOOL *</pattern>
      <template>
         <srai>SCHOOL</srai>
      </template>
   </category>
   
</aiml>

star.aiml.csv

0,WHO IS ALBERT EINSTEIN,*,*,Albert Einstein was a German physicist.,srai.aiml
0,WHO IS Isaac NEWTON,*,*,Isaac Newton was a English physicist and mathematician.,srai.aiml
0,DO YOU KNOW WHO * IS,*,*,<srai>WHO IS <star/></srai>,srai.aiml
0,BYE,*,*,Good Bye!,srai.aiml
0,BYE *,*,*,<srai>BYE</srai>,srai.aiml
0,FACTORY,*,*,Development Center!,srai.aiml
0,INDUSTRY,*,*,<srai>FACTORY</srai>,srai.aiml
0,SCHOOL,*,*,School is an important institution in a child's life.,srai.aiml
0,_ SCHOOL,*,*,<srai>SCHOOL</srai>,srai.aiml
0,SCHOOL *,*,*,<srai>SCHOOL</srai>,srai.aiml
0,_ SCHOOL *,*,*,<srai>SCHOOL</srai>,srai.aiml

Jalankan Program

Buka prompt perintah. Pergi keC > ab > dan ketik perintah berikut -

java -cp lib/Ab.jar Main bot = test action = chat trace = false

Verifikasi Hasilnya

Anda akan melihat output berikut -

Human: I love going to school daily.
Robot: School is an important institution in a child's life.
Human: I like my school.
Robot: School is an important institution in a child's life.

<random>Tag digunakan untuk mendapatkan respon acak. Tag ini memungkinkan AIML merespons secara berbeda untuk masukan yang sama. Tag <random> digunakan bersama dengan tag <li>. <li> tag membawa tanggapan berbeda yang akan dikirim ke pengguna secara acak.

Sintaksis

<random>
   <li> pattern1 </li>
   <li> pattern2 </li>
   ...
   <li> patternN </li>
</random>

Misalnya, perhatikan percakapan berikut.

Human: Hi
Robot: Hello!
Human: Hi
Robot: Hi! Nice to meet you!

Contoh

Buat random.aiml di dalamnya C > ab > bots > test > aiml dan random.aiml.csv di dalamnya C > ab > bots > test > aimlif direktori.

random.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding ="UTF-8"?>
   <category>
      <pattern>HI</pattern>
      
      <template>
         <random>
            <li> Hello! </li>
            <li> Hi! Nice to meet you! </li>
         </random>
      </template>
      
   <category>      
</aiml>

random.aiml.csv

0,HI,*,*, <random><li> Hello! </li><li> Hi! Nice to meet you! </li></random>,random.aiml

Jalankan Program

Buka prompt perintah. Pergi keC > ab > dan ketik perintah berikut -

java -cp lib/Ab.jar Main bot = test action = chat trace = false

Verifikasi Hasilnya

Anda akan melihat output berikut -

Human: Hi
Robot: Hi! Nice to meet you!
Human: Hi
Robot: Hello!

Di sini, respons dapat bervariasi dengan mempertimbangkan respons acak.

<set> dan <get>tag digunakan untuk bekerja dengan variabel di AIML. Variabel dapat berupa variabel yang telah ditentukan sebelumnya atau variabel yang dibuat pemrogram.

Sintaksis

Tag <set> digunakan untuk menyetel nilai dalam variabel.

<set name = "variable-name"> variable-value </set>

Tag <get> digunakan untuk mendapatkan nilai dari variabel.

<get name = "variable-name"></get>

Misalnya, perhatikan percakapan berikut.

Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!

Contoh

Buat setget.aiml di dalamnya C > ab > bots > test > aiml dan setget.aiml.csv di dalamnya C > ab > bots > test > aimlif direktori.

setget.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern>I am *</pattern>
      <template>
         Hello <set name = "username"> <star/>! </set>
      </template>  
   </category>  
   
   <category>
      <pattern>Good Night</pattern>
      <template>
         Hi <get name = "username"/> Thanks for the conversation!
      </template>  
   </category>  
   
</aiml>

setget.aiml.csv

0,I am *,*,*, Hello <set name = "username"> <star/>! </set>,setget.aiml
0,Good Night,*,*, Hi <get name = "username"/> Thanks for the conversation!,setget.aiml

Jalankan Program

Buka prompt perintah. Pergi keC > ab > dan ketik perintah berikut -

java -cp lib/Ab.jar Main bot = test action = chat trace = false

Verifikasi Hasilnya

Anda akan melihat output berikut -

Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!

<that> Tag digunakan di AIML untuk merespon berdasarkan konteksnya.

Sintaksis

<that> template </that>

Misalnya, perhatikan percakapan berikut.

Human: Hi Alice! What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.

Contoh

Buat that.aiml di dalam C > ab > bots > test > aiml dan that.aiml.csv di dalamnya C > ab > bots > test > aimlif direktori.

that.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern>WHAT ABOUT MOVIES</pattern>
      <template>Do you like comedy movies</template>  
   </category>
   
   <category>
      <pattern>YES</pattern>
      <that>Do you like comedy movies</that>
      <template>Nice, I like comedy movies too.</template>
   </category>
   
   <category>
      <pattern>NO</pattern>
      <that>Do you like comedy movies</that>
      <template>Ok! But I like comedy movies.</template>
   </category> 
   
</aiml>

that.aiml.csv

0,WHAT ABOUT MOVIES,*,*,Do you like comedy movies,that.aiml
0,YES,Do you like comedy movies,*,Nice! I like comedy movies too.,that.aiml
0,NO,Do you like comedy movies,*,Ok! But I like comedy movies.,that.aiml

Jalankan Program

Buka prompt perintah. Pergi keC > ab > dan ketik perintah berikut -

java -cp lib/Ab.jar Main bot = test action = chat trace = false

Verifikasi Hasilnya

Anda akan melihat output berikut -

Human: What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.

<topic>Tag digunakan dalam AIML untuk menyimpan suatu konteks sehingga percakapan nanti dapat dilakukan berdasarkan konteks tersebut. Biasanya,<topic> tag digunakan dalam Yes/No type conversation. Ini membantu AIML untuk mencari kategori yang ditulis dalam konteks topik.

Sintaksis

Tentukan topik menggunakan tag <set>

<template> 
   <set name = "topic"> topic-name </set>
</template>

Tentukan kategori menggunakan tag <topic>

<topic name = "topic-name">
   <category>
      ...
   </category>     
</topic>

Misalnya, perhatikan percakapan berikut.

Human: let discuss movies
Robot: Yes movies
Human: Comedy movies are nice to watch
Robot: Watching good movie refreshes our minds.
Human: I like watching comedy
Robot: I too like watching comedy.

Di sini bot merespons dengan mengambil "film" sebagai topik.

Contoh

Buat topic.aiml di dalam C > ab > bots > test > aiml dan topic.aiml.csv di dalamnya C > ab > bots > test > aimlif direktori.

topic.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern>LET DISCUSS MOVIES</pattern>
      <template>Yes <set name = "topic">movies</set></template>  
   </category>
   
   <topic name = "movies">
      <category>
         <pattern> * </pattern>
         <template>Watching good movie refreshes our minds.</template>
      </category>
      
      <category>
         <pattern> I LIKE WATCHING COMEDY! </pattern>
         <template>I like comedy movies too.</template>
      </category>
      
   </topic>
</aiml>

that.aiml.csv

0,LET DISCUSS MOVIES,*,*,Yes <set name = "topic">movies</set>,topic.aiml
0,*,*,movies,Watching good movie refreshes our minds.,topic.aiml
0,I LIKE WATCHING COMEDY!,*,movies,I like comedy movies too.,topic.aiml

Jalankan Program

Buka prompt perintah. Pergi keC > ab > dan ketik perintah berikut -

java -cp lib/Ab.jar Main bot = test action = chat trace = false

Verifikasi Hasilnya

Anda akan melihat output berikut -

Human: let discuss movies
Robot: Yes movies
Human: Comedy movies are nice to watch
Robot: Watching good movie refreshes our minds.
Human: I like watching comedy
Robot: I too like watching comedy.

<think> Tag digunakan di AIML untuk menyimpan variabel tanpa memberi tahu pengguna.

Sintaksis

Simpan nilai menggunakan tag <think>

<think> 
   <set name = "variable-name"> variable-value </set>
</think>

Misalnya, perhatikan percakapan berikut.

Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!

Contoh

Buat think.aiml di dalam C > ab > bots > test > aiml dan think.aiml.csv di dalamnya C > ab > bots > test > aimlif direktori.

think.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern>My name is *</pattern>
      <template>
         Hello!<think><set name = "username"> <star/></set></think>
      </template>  
   </category>  
   
   <category>
      <pattern>Byeee</pattern>
      <template>
         Hi <get name = "username"/> Thanks for the conversation!
      </template>  
   </category>  
   
</aiml>

think.aiml.csv

0,My name is *,*,*, Hello! <think><set name = "username"> <star/></set></think>,think.aiml
0,Byeee,*,*, Hi <get name = "username"/> Thanks for the conversation!,think.aiml

Jalankan Program

Buka prompt perintah. Pergi keC > ab > dan ketik perintah berikut -

java -cp lib/Ab.jar Main bot = test action = chat trace = false

Verifikasi Hasilnya

Anda akan melihat output berikut -

Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!

<condition>Tag mirip dengan pernyataan switch dalam bahasa pemrograman. Ini membantu ALICE untuk menanggapi masukan yang cocok.

Sintaksis

<condition name = "variable-name" value = "variable-value"/>

Misalnya, perhatikan percakapan berikut.

Human: How are you feeling today
Robot: I am happy!

Di sini kami telah menyimpannya happy sebagai negara bagian ALICE dan begitulah tanggapannya sebagai "Saya bahagia!".

Contoh

Buat condition.aiml di dalam C > ab > bots > test > aiml dan condition.aiml.csv di dalamnya C > ab > bots > test > aimlif direktori.

condition.aiml

<?xml version = "1.0" encoding = "UTF-8"?>
<aiml version = "1.0.1" encoding = "UTF-8"?>
   <category>
      <pattern> HOW ARE YOU FEELING TODAY </pattern>
      
      <template>
         <think><set name = "state"> happy</set></think>
         <condition name = "state" value = "happy">
            I am happy!
         </condition>
         
         <condition name = "state" value = "sad">
            I am sad!
         </condition>
      </template>
      
   </category>
</aiml>

condition.aiml.csv

0,HOW ARE YOU FEELING TODAY,*,*,
   <think>
      <set name = "state"> happy</set>
   </think>
   
   <condition name = "state" value = "happy">I am happy!</condition>
   <condition name = "state" value = "sad">I am sad!</condition>,condition.aiml

Jalankan Program

Buka prompt perintah. Pergi keC > ab > dan ketik perintah berikut -

java -cp lib/Ab.jar Main bot = test action = chat trace = false

Verifikasi Hasilnya

Anda akan melihat output berikut -

Human: How are you feeling today
Robot: I am happy!