AIML - Hızlı Kılavuz

AIML kısaltması Artificial Intelligence Markup Language. AIML, Alicebot özgür yazılım topluluğu ve Dr. Richard S. Wallace tarafından 1995-2000 yılları arasında geliştirilmiştir. AIML, ALICE (Yapay Dilbilimsel İnternet Bilgisayar Varlığı) ücretsiz yazılımına dayalı bir sohbet kutusu uygulaması olan Alicebot'u oluşturmak veya özelleştirmek için kullanılır.

AIML Etiketleri

AIML belgelerinde yaygın olarak kullanılan önemli etiketler aşağıdadır.

S.No. AIML Etiketi / Açıklama
1

<aiml>

Bir AIML belgesinin başlangıcını ve sonunu tanımlar.

2

<category>

Tanımlar unit of knowledge Alicebot'un bilgi tabanında.

3

<pattern>

Bir kullanıcının bir Alicebot'a girebileceği ile eşleşecek modeli tanımlar.

4

<template>

Bir Alicebot'un kullanıcının girdisine verdiği cevabı tanımlar.

Bu etiketlerin her birini AIML Temel etiketler bölümünde tartışacağız .

Aşağıda, yaygın olarak kullanılan diğer aiml etiketlerinden bazıları verilmiştir. Her bir etiketi ilerleyen bölümlerde ayrıntılı olarak tartışacağız.

S.No. AIML Etiketi / Açıklama
1

<star>

Joker karakterle eşleşmek için kullanılır * <pattern> Etiketindeki karakter (ler).

2

<srai>

Diğer kategorileri çağırmak / eşleştirmek için kullanılan çok amaçlı etiket.

3

<random>

Kullanılmış <random> rastgele yanıtlar almak için.

4

<li>

Birden çok yanıtı temsil etmek için kullanılır.

5

<set>

Bir AIML değişkeninde değer ayarlamak için kullanılır.

6

<get>

Bir AIML değişkeninde depolanan değeri elde etmek için kullanılır.

7

<that>

AIML'de bağlama göre yanıt vermek için kullanılır.

8

<topic>

AIML'de bir bağlamı depolamak için kullanılır, böylece daha sonraki konuşmalar bu bağlama göre yapılabilir.

9

<think>

AIML'de kullanıcıyı bilgilendirmeden bir değişkeni saklamak için kullanılır.

10

<condition>

Programlama dilinde anahtar deyimlerine benzer. ALICE'ın eşleşen girdiye yanıt vermesine yardımcı olur.

AIML Kelime Bilgisi

AIML kelime dağarcığı kelimeler, boşluk ve iki özel karakter kullanır * ve _joker kart olarak. AIML yorumlayıcısı, modele sahip olmayı tercih eder_ desen sahip olmaktan *. AIML etiketleri XML uyumludur ve desenler büyük / küçük harfe duyarlıdır.

Misal

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

Dikkat edilmesi gereken önemli noktalar aşağıdadır -

  • <aiml> etiketi, AIML belgesinin başlangıcını belirtir.

  • <category> etiketi bilgi birimini tanımlar.

  • <pattern> etiketi, kullanıcının yazacağı kalıbı tanımlar.

  • <template> etiketi, kullanıcı Hello Alice yazarsa kullanıcıya verilecek yanıtı tanımlar.

Sonuç

User: Hello Alice
Bot: Hello User

Bu eğitim, otomatik sohbet yazılımı oluşturmak için AIML ile çalışmanıza başlamak için bir geliştirme ortamını nasıl hazırlayacağınız konusunda size rehberlik edecektir. AB Programı, ALICE AI Vakfı tarafından geliştirilen ve sürdürülen AIML 2.0'ın bir referans uygulamasıdır. Bu eğitim, Program AB kitaplığını kurmadan önce JDK'yi nasıl kuracağınızı da öğretecektir -

Adım 1 - Java Geliştirme Kiti'ni (JDK) kurun

En son SDK sürümünü Oracle'ın Java sitesinden indirebilirsiniz - Java SE İndirmeleri . İndirilen dosyalara JDK kurulumu için talimatlar bulacaksınız, kurulumu kurmak ve yapılandırmak için verilen talimatları izleyin. Son olarak, PATH ve JAVA_HOME ortam değişkenlerini java ve javac içeren dizine başvuracak şekilde ayarlayın, tipik olarak sırasıyla java_install_dir / bin ve java_install_dir.

Windows çalıştırıyorsanız ve JDK'yı C: \ jdk1.7.0_75'e yüklüyorsanız, aşağıdaki satırı C: \ autoexec.bat dosyanıza koymanız gerekir.

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

Alternatif olarak, Windows NT / 2000 / XP'de Bilgisayarım'a sağ tıklayabilir, Özellikler'i, ardından Gelişmiş'i ve ardından Ortam Değişkenleri'ni seçebilirsiniz. Ardından, PATH değerini güncellersiniz ve OK düğmesine basarsınız.

Unix'te (Solaris, Linux, vb.), SDK /usr/local/jdk1.7.0_75'e kuruluysa ve C kabuğunu kullanıyorsanız, aşağıdakileri .cshrc dosyanıza koyarsınız.

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

Alternatif olarak, Borland JBuilder, Eclipse, IntelliJ IDEA veya Sun ONE Studio gibi bir Entegre Geliştirme Ortamı (IDE) kullanıyorsanız, IDE'nin Java'yı nereye yüklediğinizi bildiğini doğrulamak için basit bir program derleyin ve çalıştırın, aksi takdirde verilen belgeye göre uygun kurulumu yapın IDE'nin.

Adım 2 - AB Programını Kurun

Şimdi her şey yolundaysa, Program AB'nizi kurmaya devam edebilirsiniz. Kitaplığı makinenize indirip kurmanın basit adımları aşağıdadır.

  • AIML'yi Windows'a mı yoksa Unix'e mi yüklemek istediğinizi seçin ve ardından .zip dosyasını indirmek için bir sonraki adıma geçin.

  • Program AB ikili dosyalarının en son sürümünü şuradan indirin: https://code.google.com/p/program-ab/program-ab-0.0.4.3.zip bağlantısını kullanarak .

  • Bu öğreticiyi yazarken, indirdim program-ab-0.0.4.3.zip Windows makinemde ve indirilen dosyayı açtığınızda, size aşağıdaki gibi C: \ ab içinde dizin yapısını verecektir.

S.No. Dizin ve Açıklama
1

c:/ab/bots

AIML botlarını depolar

2

c:/ab/lib

Java kitaplıklarını depolar

3

c:/ab/out

Java sınıfı dosya dizini

4

c:/ab/run.bat

AB Programını çalıştırmak için toplu iş dosyası

Bu son adımı tamamladığınızda, bir sonraki bölümde göreceğiniz ilk AIML Örneğinize geçmeye hazırsınız.

Kullanıcıyı basitçe selamlayacak ilk botu oluşturmaya başlayalım. Hello User! bir kullanıcı yazdığında Hello Alice.

Proje Yapısını Oluşturun

Olduğu gibi AIML Çevre Kurulum , program-ab içeriğini çıkarılan ettikC > ab aşağıdaki dizin yapısıyla.

S.No. Dizin ve Açıklama
1

c:/ab/bots

AIML botlarını depolar

2

c:/ab/lib

Java kitaplıklarını depolar

3

c:/ab/out

Java sınıfı dosya dizini

4

c:/ab/run.bat

AB Programını çalıştırmak için toplu iş dosyası

Şimdi, içinde bir dizin testi oluşturun C > ab > bots ve içinde aşağıdaki dizinleri oluşturun.

S.No. Dizin ve Açıklama
1

c:/ab/bots/test/aiml

AIML dosyalarını depolar

2

c:/ab/bots/test/aimlif

AIMLIF dosyalarını depolar

3

c:/ab/bots/test/config

Yapılandırma dosyalarını depolar

4

c:/ab/bots/test/sets

AIML Setlerini depolar

5

c:/ab/bots/test/maps

AIML Haritalarını saklar

Kaynak Dosyaları Oluşturun

İçinde test.aiml oluşturun C > ab > bots > test > aiml ve test.aiml.csv içinde C > ab > bots > test > aimlif dizinler.

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

Programı Çalıştırın

Komut istemini açın. GitC > ab > ve aşağıdaki komutu yazın -

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

Sonucu Doğrulayın

Aşağıdaki çıktıyı göreceksiniz -

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:

Tür Hello Alice ve sonucu görün ve değiştirilen sonucu görmek için başka bir şey yazın.

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

Bu eğitimde, AIML'nin temel etiketlerini tartışacağız.

  • <aiml> - Bir AIML belgesinin başlangıcını ve sonunu tanımlar.

  • <category> - tanımlar unit of knowledge Alicebot'un bilgi tabanında.

  • <pattern> - bir kullanıcının bir Alicebot'a girebileceği ile eşleşecek modeli tanımlar.

  • <template> - bir Alicebot'un kullanıcının girdisine verdiği cevabı tanımlar.

Aşağıdaki AIML dosyaları burada referans olarak kullanılmıştır.

<?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> etiketi

<aiml> etiketi, bir AIML belgesinin başlangıcını ve sonunu belirtir. Sürüm ve kodlama özniteliklerinin altında sürüm ve kodlama bilgilerini içerir. sürüm özniteliği, ALICE chatterbot Knowledge Base, KB tarafından kullanılan AIML sürümünü depolar. Örneğin, 1.0.1 sürümünü kullandık. Bu özellik isteğe bağlıdır.

Kodlama nitelikleri, belgede kullanılacak karakter kümelerini sağlar. Örneğin UTF-8 kullandık. Zorunlu bir gereklilik olarak, <aiml> etiketi en az bir <category> etiketi içermelidir. Her AIML dosyasının tek bir <aiml> etiketi içerdiği birden çok AIML dosyası oluşturabiliriz. Her AIML dosyasının amacı, ALICE chatterbot KB'ye kategori adı verilen en az tek bir bilgi birimi eklemektir.

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

<category> etiketi

<category> etiketi, bir ALICE Botunun temel bilgi birimidir. Her kategori şunları içerir -

  • Bir iddia, soru ve ünlem vb. Olabilen bir cümle biçimindeki kullanıcı girişi. Kullanıcı girişi gibi joker karakterler içerebilir * ve _.

  • Alicebot tarafından sunulacak kullanıcı girdisine yanıt.

  • İsteğe bağlı bağlam.

Bir <category> etiket olmalıdır <pattern> ve <template> etiket. <pattern> kullanıcı girdisini ve şablon botun yanıtını temsil eder.

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

Burada kullanıcı girerse Hello Alice bot şu şekilde yanıt verecektir: Hello User.

<pattern> etiketi

<pattern> etiketi, bir kullanıcının girişini temsil eder. <category> etiketi içindeki ilk etiket olmalıdır. <pattern> etiketi, kullanıcı girdisi olarak birden fazla cümleyle eşleştirmek için joker karakter içerebilir. Örneğin, örneğimizde, <pattern> HELLO ALICE içerir.

AIML büyük / küçük harf duyarlıdır. Bir kullanıcı Hello Alice, hello alice, HELLO ALICE vb. Girerse, tüm girişler geçerlidir ve bot bunları HELLO ALICE ile eşleştirir.

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

Burada şablon "Merhaba Kullanıcı" dır ve bir robotun kullanıcı girdisine verdiği yanıtı temsil eder.

<template> etiketi

<template> etiketi, botun kullanıcıya verdiği yanıtı temsil eder. <category> etiketi içindeki ikinci etiket olmalıdır. Bu <template> etiketi verileri kaydedebilir, başka bir programı çağırabilir, koşullu yanıtlar verebilir veya diğer kategorilere yetki verebilir.

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

Burada şablon "Merhaba Kullanıcı" dır ve bir robotun kullanıcı girdisine verdiği yanıtı temsil eder.

<star> Joker karakterle eşleştirmek için etiket kullanılır * <pattern> Etiketindeki karakter (ler).

Sözdizimi

<star index = "n"/>

n <desen> Etiketinde kullanıcı girdisi içindeki * konumunu belirtir.

Şu örneği düşünün -

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

Kullanıcı "Bir mango bir meyvedir" girerse. bot "mango meyve değilse?"

Misal

Star.aiml içinde oluşturun C > ab > bots > test > aiml ve star.aiml.csv içinde C > ab > bots > test > aimlif dizinler.

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

Programı Çalıştırın

Komut istemini açın. GitC > ab > ve aşağıdaki komutu yazın -

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

Sonucu Doğrulayın

Aşağıdaki çıktıyı göreceksiniz -

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" /> genellikle <yıldız /> olarak kullanılır

<srai>Etiket, çok amaçlı bir etikettir. Bu etiket, AIML'nin aynı şablon için farklı hedefleri tanımlamasını sağlar.

Sözdizimi

<srai> pattern </srai>

Aşağıdakiler ile ilişkili yaygın olarak kullanılan terimlerdir srai -

  • Sembolik Azaltma

  • Böl ve fethet

  • Eşanlamlı çözünürlük

  • Anahtar sözcük tespiti

Sembolik Azaltma

Sembolik indirgeme tekniği, kalıpları basitleştirmek için kullanılır. Basit kalıp (lar) la karmaşık gramer kalıplarını azaltmaya yardımcı olur.

Örneğin, aşağıdaki sohbeti düşünün.

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.

Şimdi What if sorular şu şekilde ortaya çıkıyor

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

Buraya, <srai> etiket çalışır. Kullanıcının kalıbını şablon olarak alabilir.

1. Adım: Kategoriler oluşturun

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

2. Adım: <srai> etiketini kullanarak genel kategori oluşturun

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

Misal

Srai.aiml içinde oluşturun C > ab > bots > test > aiml ve srai.aiml.csv içinde C > ab > bots > test > aimlif dizinler.

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

Programı Çalıştırın

Komut istemini açın. GitC > ab > ve aşağıdaki komutu yazın -

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

Sonucu Doğrulayın

Aşağıdaki çıktıyı göreceksiniz -

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

Böl ve fethet

Divide and Conquer, tam bir yanıt verirken alt cümleleri yeniden kullanmak için kullanılır. Birden fazla kategori tanımlamayı azaltmaya yardımcı olur.

Örneğin, aşağıdaki sohbeti düşünün.

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

Şimdi burada robotun cevap vermesi bekleniyor GoodBye! Bir kullanıcı söylediğinde Bye cümlenin başında.

Burada çalışmak için <srai> etiketi koyalım.

1. Adım: Kategori oluşturun

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

2. Adım: <srai> etiketini kullanarak genel kategori oluşturun

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

Misal

Srai.aiml içinde güncelleme C > ab > bots > test > aiml ve srai.aiml.csv içinde C > ab > bots > test > aimlif dizinler.

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

Programı Çalıştırın

Komut istemini açın. GitC > ab > ve aşağıdaki komutu yazın -

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

Sonucu Doğrulayın

Aşağıdaki çıktıyı göreceksiniz -

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

Eş Anlamlı Çözünürlük

Eş anlamlılar, benzer anlamlara sahip sözcüklerdir. Bir bot benzer kelimeler için aynı şekilde cevap vermelidir.

Örneğin, aşağıdaki sohbeti düşünün.

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

Şimdi burada robotun cevap vermesi bekleniyor Development Center! ne zaman bir kullanıcı söylese Factory veya Industry.

Koyalım <srai> burada çalışmak için etiket.

1. Adım: Kategori oluşturun

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

2. Adım: <srai> etiketini kullanarak genel kategori oluşturun

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

Misal

Srai.aiml içinde güncelleme C > ab > bots > test > aiml ve srai.aiml.csv içinde C > ab > bots > test > aimlif dizinler.

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

Programı Çalıştırın

Komut istemini açın. GitC > ab > ve aşağıdaki komutu yazın -

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

Sonucu Doğrulayın

Aşağıdaki çıktıyı göreceksiniz -

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

Anahtar Kelime Tespiti

Kullanma srai, kullanıcı belirli bir anahtar kelime yazdığında basit bir yanıt döndürebiliriz, örneğin Okul, cümlenin neresinde "okul" olursa olsun.

Örneğin, aşağıdaki sohbeti düşünün.

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.

Burada robotun standart bir mesajı yanıtlaması bekleniyor 'School is an important institution in a child's life.' ne zaman bir kullanıcı sahipse school cümlede.

Koyalım <srai>burada çalışmak için etiket. Burada joker kart kullanacağız.

1. Adım: Kategori oluşturun

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

2. Adım: <srai> etiketini kullanarak genel kategoriler oluşturun

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

Misal

Srai.aiml içinde güncelleme C > ab > bots > test > aiml ve srai.aiml.csv içinde C > ab > bots > test > aimlif dizinler.

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

Programı Çalıştırın

Komut istemini açın. GitC > ab > ve aşağıdaki komutu yazın -

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

Sonucu Doğrulayın

Aşağıdaki çıktıyı göreceksiniz -

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>Etiket rastgele yanıtlar almak için kullanılır. Bu etiket, AIML'nin aynı girdi için farklı yanıt vermesini sağlar. <random> etiketi, <li> etiketleriyle birlikte kullanılır. <li> etiketler, kullanıcıya rastgele bir temelde iletilecek farklı yanıtlar taşır.

Sözdizimi

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

Örneğin, aşağıdaki sohbeti düşünün.

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

Misal

Random.aiml içinde oluşturun C > ab > bots > test > aiml ve random.aiml.csv içinde C > ab > bots > test > aimlif dizinler.

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

Programı Çalıştırın

Komut istemini açın. GitC > ab > ve aşağıdaki komutu yazın -

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

Sonucu Doğrulayın

Aşağıdaki çıktıyı göreceksiniz -

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

Burada yanıt, rastgele yanıtlar dikkate alınarak değişebilir.

<set> ve <get>etiketleri AIML'deki değişkenlerle çalışmak için kullanılır. Değişkenler önceden tanımlanmış değişkenler veya programcı tarafından oluşturulan değişkenler olabilir.

Sözdizimi

<set> etiketi, bir değişkendeki değeri ayarlamak için kullanılır.

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

<get> etiketi bir değişkenden değer almak için kullanılır.

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

Örneğin, aşağıdaki sohbeti düşünün.

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

Misal

İçinde setget.aiml oluşturun C > ab > bots > test > aiml ve setget.aiml.csv içinde C > ab > bots > test > aimlif dizinler.

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

Programı Çalıştırın

Komut istemini açın. GitC > ab > ve aşağıdaki komutu yazın -

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

Sonucu Doğrulayın

Aşağıdaki çıktıyı göreceksiniz -

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

<that> Etiket, bağlama göre yanıt vermek için AIML'de kullanılır.

Sözdizimi

<that> template </that>

Örneğin, aşağıdaki sohbeti düşünün.

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

Misal

That.aiml içinde oluşturun C > ab > bots > test > aiml ve that.aiml.csv içinde C > ab > bots > test > aimlif dizinler.

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

Programı Çalıştırın

Komut istemini açın. GitC > ab > ve aşağıdaki komutu yazın -

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

Sonucu Doğrulayın

Aşağıdaki çıktıyı göreceksiniz -

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

<topic>Etiket, AIML'de bir bağlamı saklamak için kullanılır, böylece daha sonraki görüşmeler bu bağlama göre yapılabilir. Genelde,<topic> etiket kullanılır Yes/No type conversation. AIML'in konu bağlamında yazılmış kategorileri aramasına yardımcı olur.

Sözdizimi

<set> etiketini kullanarak bir konu tanımlayın

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

<topic> etiketini kullanarak kategoriyi tanımlayın

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

Örneğin, aşağıdaki sohbeti düşünün.

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.

Burada bot, konu olarak "film" i alarak yanıt verir.

Misal

Topic.aiml içinde oluşturun C > ab > bots > test > aiml ve topic.aiml.csv içinde C > ab > bots > test > aimlif dizinler.

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

Programı Çalıştırın

Komut istemini açın. GitC > ab > ve aşağıdaki komutu yazın -

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

Sonucu Doğrulayın

Aşağıdaki çıktıyı göreceksiniz -

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> Etiket, kullanıcıyı bilgilendirmeden bir değişkeni saklamak için AIML'de kullanılır.

Sözdizimi

<think> etiketini kullanarak bir değer depolayın

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

Örneğin, aşağıdaki sohbeti düşünün.

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

Misal

İçinde think.aiml oluşturun C > ab > bots > test > aiml ve içinde düşünün.aiml.csv C > ab > bots > test > aimlif dizinler.

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

Programı Çalıştırın

Komut istemini açın. GitC > ab > ve aşağıdaki komutu yazın -

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

Sonucu Doğrulayın

Aşağıdaki çıktıyı göreceksiniz -

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

<condition>Etiket, programlama dilindeki anahtar deyimlerine benzer. ALICE'ın eşleşen girdiye yanıt vermesine yardımcı olur.

Sözdizimi

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

Örneğin, aşağıdaki sohbeti düşünün.

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

Burada sakladık happy ALICE'ın durumu olarak "Mutluyum!"

Misal

Condition.aiml içinde oluşturun C > ab > bots > test > aiml ve condition.aiml.csv içinde C > ab > bots > test > aimlif dizinler.

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

Programı Çalıştırın

Komut istemini açın. GitC > ab > ve aşağıdaki komutu yazın -

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

Sonucu Doğrulayın

Aşağıdaki çıktıyı göreceksiniz -

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