AIML - Szybki przewodnik
AIML oznacza Artificial Intelligence Markup Language. AIML został opracowany przez społeczność wolnego oprogramowania Alicebot i dr Richarda S. Wallace'a w latach 1995-2000. AIML służy do tworzenia lub dostosowywania Alicebota, który jest aplikacją chat-box opartą na bezpłatnym oprogramowaniu ALICE (Artificial Linguistic Internet Computer Entity).
Tagi AIML
Poniżej przedstawiono ważne znaczniki, które są powszechnie używane w dokumentach AIML.
S.No. | Znacznik / opis AIML |
---|---|
1 | <aiml> Definiuje początek i koniec dokumentu AIML. |
2 | <category> Definiuje unit of knowledge w bazie wiedzy Alicebot. |
3 | <pattern> Definiuje wzorzec pasujący do tego, co użytkownik może wprowadzić do Alicebota. |
4 | <template> Definiuje odpowiedź Alicebota na dane wejściowe użytkownika. |
Omówimy każdy z tych tagów w rozdziale o tagach AIML Basic .
Poniżej znajduje się kilka innych powszechnie używanych tagów AIML. W kolejnych rozdziałach omówimy szczegółowo każdy tag.
S.No. | Znacznik / opis AIML |
---|---|
1 | <star> Używane do dopasowania dzikiej karty * znak (i) w tagu <pattern>. |
2 | <srai> Znacznik uniwersalny, używany do wywoływania / dopasowywania innych kategorii. |
3 | <random> Używany <random> aby uzyskać losowe odpowiedzi. |
4 | <li> Używane do reprezentowania wielu odpowiedzi. |
5 | <set> Służy do ustawiania wartości w zmiennej AIML. |
6 | <get> Służy do pobierania wartości przechowywanej w zmiennej AIML. |
7 | <that> Używany w AIML do odpowiadania na podstawie kontekstu. |
8 | <topic> Używany w AIML do przechowywania kontekstu, aby później można było prowadzić konwersację w oparciu o ten kontekst. |
9 | <think> Używany w AIML do przechowywania zmiennej bez powiadamiania użytkownika. |
10 | <condition> Podobnie jak instrukcje przełączania w języku programowania. Pomaga ALICE reagować na pasujące dane wejściowe. |
AIML Vocabulary
Słownictwo AIML używa słów, spacji i dwóch znaków specjalnych * i _jako dzikie karty. Interpreter AIML preferuje posiadanie wzorca_ niż posiadanie wzoru *. Tagi AIML są zgodne z XML, a wzorce nie uwzględniają wielkości liter.
Przykład
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User!
</template>
</category>
</aiml>
Poniżej przedstawiono ważne punkty, które należy wziąć pod uwagę -
<aiml> znacznik oznacza początek dokumentu AIML.
<category> tag definiuje jednostkę wiedzy.
<pattern> tag określa wzorzec, który będzie wpisywany przez użytkownika.
<template> tag definiuje odpowiedź dla użytkownika, jeśli użytkownik wpisze Hello Alice.
Wynik
User: Hello Alice
Bot: Hello User
Ten samouczek poprowadzi Cię, jak przygotować środowisko programistyczne do rozpoczęcia pracy z AIML w celu stworzenia oprogramowania do automatycznego czatu. Program AB jest referencyjną implementacją AIML 2.0 opracowaną i utrzymywaną przez ALICE AI Foundation. Ten samouczek nauczy Cię również, jak skonfigurować JDK, zanim skonfigurujesz bibliotekę Program AB -
Krok 1 - Skonfiguruj zestaw Java Development Kit (JDK)
Najnowszą wersję pakietu SDK można pobrać z witryny Oracle Java - Java SE Downloads . Znajdziesz instrukcje instalacji JDK w pobranych plikach, postępuj zgodnie z podanymi instrukcjami, aby zainstalować i skonfigurować instalację. Na koniec ustaw zmienne środowiskowe PATH i JAVA_HOME, aby odwoływały się do katalogu zawierającego elementy java i javac, zazwyczaj odpowiednio katalog_instalacyjny_java / bin i katalog_instalacyjny_java.
Jeśli używasz systemu Windows i zainstalowałeś pakiet JDK w C: \ jdk1.7.0_75, musisz umieścić następujący wiersz w pliku C: \ autoexec.bat.
set PATH = C:\jdk1.7.0_75\bin;%PATH%
set JAVA_HOME = C:\jdk1.7.0_75
Alternatywnie, w systemie Windows NT / 2000 / XP można również kliknąć prawym przyciskiem myszy Mój komputer, wybrać Właściwości, następnie Zaawansowane, a następnie Zmienne środowiskowe. Następnie zaktualizuj wartość PATH i naciśnij przycisk OK.
W systemie Unix (Solaris, Linux itp.), Jeśli SDK jest zainstalowany w /usr/local/jdk1.7.0_75 i używasz powłoki C, umieściłbyś następujące elementy w swoim pliku .cshrc.
setenv PATH /usr/local/jdk1.7.0_75/bin:$PATH
setenv JAVA_HOME /usr/local/jdk1.7.0_75
Alternatywnie, jeśli używasz zintegrowanego środowiska programistycznego (IDE), takiego jak Borland JBuilder, Eclipse, IntelliJ IDEA lub Sun ONE Studio, skompiluj i uruchom prosty program, aby potwierdzić, że IDE wie, gdzie zainstalowałeś Javę, w przeciwnym razie wykonaj odpowiednią konfigurację zgodnie z podanym dokumentem IDE.
Krok 2 - Ustaw program AB
Teraz, jeśli wszystko jest w porządku, możesz przystąpić do konfiguracji programu AB. Poniżej przedstawiono proste kroki, aby pobrać i zainstalować bibliotekę na komputerze.
Wybierz, czy chcesz zainstalować AIML w systemie Windows, czy Unix, a następnie przejdź do następnego kroku, aby pobrać plik .zip
Pobierz najnowszą wersję plików binarnych programu AB z witryny https://code.google.com/p/program-ab/używając linku program-ab-0.0.4.3.zip .
W momencie pisania tego samouczka pobrałem program-ab-0.0.4.3.zip na moim komputerze z systemem Windows i po rozpakowaniu pobranego pliku da ci strukturę katalogów wewnątrz C: \ ab w następujący sposób.
S.No. | Katalog i opis |
---|---|
1 | c:/ab/bots Przechowuje boty AIML |
2 | c:/ab/lib Przechowuje biblioteki Java |
3 | c:/ab/out Katalog plików klas Java |
4 | c:/ab/run.bat plik wsadowy do uruchamiania programu AB |
Kiedy skończysz z tym ostatnim krokiem, możesz przejść do pierwszego przykładu AIML, który zobaczysz w następnym rozdziale.
Zacznijmy tworzyć pierwszego bota, który po prostu przywita użytkownika Hello User! gdy użytkownik pisze Hello Alice.
Utwórz strukturę projektu
Podobnie jak w przypadku konfiguracji środowiska AIML , wyodrębniliśmy zawartość program-ab inC > ab z następującą strukturą katalogów.
S.No. | Katalog i opis |
---|---|
1 | c:/ab/bots Przechowuje boty AIML |
2 | c:/ab/lib Przechowuje biblioteki Java |
3 | c:/ab/out Katalog plików klas Java |
4 | c:/ab/run.bat plik wsadowy do uruchamiania programu AB |
Teraz utwórz test katalogu w środku C > ab > bots i utwórz w nim następujące katalogi.
S.No. | Katalog i opis |
---|---|
1 | c:/ab/bots/test/aiml Przechowuje pliki AIML |
2 | c:/ab/bots/test/aimlif Przechowuje pliki AIMLIF |
3 | c:/ab/bots/test/config Przechowuje pliki konfiguracyjne |
4 | c:/ab/bots/test/sets Przechowuje zestawy AIML |
5 | c:/ab/bots/test/maps Przechowuje mapy AIML |
Utwórz pliki źródłowe
Utwórz plik test.aiml inside C > ab > bots > test > aiml i test.aiml.csv wewnątrz C > ab > bots > test > aimlif katalogi.
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
Wykonaj program
Otwórz wiersz polecenia. Iść doC > ab > i wpisz następujące polecenie -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Sprawdź wynik
Zobaczysz następujące dane wyjściowe -
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:
Rodzaj Hello Alice i zobacz wynik, a następnie wpisz cokolwiek innego, aby zobaczyć zmieniony wynik.
Human: hello alice
Robot: Hello User
Human: bye
Robot: I have no answer for that.
Human:
W tym samouczku omówimy podstawowe tagi AIML.
<aiml> - określa początek i koniec dokumentu AIML.
<category> - definiuje unit of knowledge w bazie wiedzy Alicebot.
<pattern> - definiuje wzorzec pasujący do tego, co użytkownik może wprowadzić do Alicebota.
<template> - definiuje odpowiedź Alicebota na dane wejściowe użytkownika.
Następujące pliki AIML zostały użyte tutaj jako odniesienie.
<?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>
tag <aiml>
Znacznik <aiml> oznacza początek i koniec dokumentu AIML. Zawiera informacje o wersji i kodowaniu w atrybutach wersji i kodowania. atrybut wersji przechowuje wersję AIML używaną przez bazę wiedzy ALICE chatterbot, KB. Na przykład używaliśmy wersji 1.0.1. Ten atrybut jest opcjonalny.
Atrybuty kodowania zapewniają zestawy znaków, które mają być używane w dokumencie. Na przykład użyliśmy UTF-8. Tag <aiml> musi zawierać co najmniej jeden tag <category> jako obowiązkowy wymóg. Możemy tworzyć wiele plików AIML, z których każdy zawiera jeden tag <aiml>. Celem każdego pliku AIML jest dodanie co najmniej jednej jednostki wiedzy zwanej kategorią do bazy wiedzy ALICE chatterbot.
<aiml version = "1.0.1" encoding = "UTF-8"?>
...
</aiml>
tag <category>
Tag <category> to podstawowa jednostka wiedzy botów ALICE. Każda kategoria zawiera -
Dane wprowadzane przez użytkownika w formie zdania, które może być stwierdzeniem, pytaniem, wykrzyknikiem itp. Wprowadzane przez użytkownika mogą zawierać symbole wieloznaczne, takie jak * i _.
Odpowiedź na dane wejściowe użytkownika, które ma przedstawić Alicebot.
Kontekst opcjonalny.
ZA <category> tag musi mieć <pattern> i <template> etykietka. <pattern> reprezentuje dane wejściowe użytkownika, a szablon reprezentuje odpowiedź bota.
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
Tutaj, jeśli użytkownik wejdzie Hello Alice wtedy bot odpowie jako Hello User.
tag <pattern>
Znacznik <pattern> reprezentuje dane wejściowe użytkownika. Powinien to być pierwszy tag w tagu <category>. Znacznik <pattern> może zawierać symbole wieloznaczne, aby dopasować więcej niż jedno zdanie jako dane wejściowe użytkownika. Na przykład w naszym przykładzie <wzór> zawiera HELLO ALICE.
AIML nie rozróżnia wielkości liter. Jeśli użytkownik wpisze Hello Alice, hello alice, HELLO ALICE itp., Wszystkie dane wejściowe są prawidłowe i bot dopasuje je do HELLO ALICE.
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
Tutaj szablon to „Hello User” i reprezentuje odpowiedź robota na dane wejściowe użytkownika.
tag <template>
Tag <template> reprezentuje odpowiedź bota na użytkownika. Powinien to być drugi tag w tagu <category>. Ten tag <template> może zapisywać dane, wywoływać inny program, udzielać warunkowych odpowiedzi lub delegować do innych kategorii.
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
Tutaj szablon to „Hello User” i przedstawia odpowiedź robota na dane wejściowe użytkownika.
<star> Tag służy do dopasowywania symboli wieloznacznych * znak (i) w tagu <pattern>.
Składnia
<star index = "n"/>
n oznacza pozycję * w tagu <pattern> wprowadzanym przez użytkownika.
Rozważmy następujący przykład -
<category>
<pattern> A * is a *. </pattern>
<template>
When a <star index = "1"/> is not a <star index = "2"/>?
</template>
</category>
Jeśli użytkownik wpisze „Mango to owoc”. wtedy bot odpowie „Kiedy mango nie jest owocem?”
Przykład
Utwórz star.aiml inside C > ab > bots > test > aiml i star.aiml.csv wewnątrz C > ab > bots > test > aimlif katalogi.
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
Wykonaj program
Otwórz wiersz polecenia. Iść doC > ab > i wpisz następujące polecenie -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Sprawdź wynik
Zobaczysz następujący wynik -
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" /> jest często używane jako <star />
<srai>Tag to tag uniwersalny. Ten tag umożliwia AIML definiowanie różnych celów dla tego samego szablonu.
Składnia
<srai> pattern </srai>
Poniżej znajdują się powszechnie używane terminy związane z srai -
Symboliczna redukcja
Dziel i rządź
Rozdzielczość synonimów
Wykrywanie słów kluczowych
Symboliczna redukcja
Technika redukcji symbolicznej służy do uproszczenia wzorów. Pomaga zredukować złożone wzorce gramatyczne dzięki prostym wzorom (wzorom).
Weźmy na przykład pod uwagę następującą rozmowę.
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.
Teraz What if pytania są podnoszone jako
Human: DO YOU KNOW WHO Albert Einstein IS?
Human: DO YOU KNOW WHO Isaac Newton IS?
Tutaj, <srai> tag działa. Może przyjąć wzorzec użytkownika jako szablon.
Krok 1: Utwórz kategorie
<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>
Krok 2: Utwórz kategorię ogólną za pomocą tagu <srai>
<category>
<pattern>DO YOU KNOW WHO * IS?</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
Przykład
Utwórz srai.aiml inside C > ab > bots > test > aiml i srai.aiml.csv wewnątrz C > ab > bots > test > aimlif katalogi.
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
Wykonaj program
Otwórz wiersz polecenia. Iść doC > ab > i wpisz następujące polecenie -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Sprawdź wynik
Zobaczysz następujący wynik -
Human: Do you know who Albert Einstein is
Robot: Albert Einstein was a German physicist.
Dziel i rządź
Dziel i rządź służy do ponownego wykorzystania podrzędnych zdań w celu uzyskania pełnej odpowiedzi. Pomaga ograniczyć definiowanie wielu kategorii.
Na przykład rozważ śledzenie rozmowy.
Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!
Teraz oczekuje się, że robot odpowie GoodBye! Zawsze, gdy mówi użytkownik Bye na początku zdania.
Umieśćmy tutaj tag <srai>.
Krok 1: Utwórz kategorię
<category>
<pattern>BYE</pattern>
<template>Good Bye!</template>
</category>
Krok 2: Utwórz kategorię ogólną za pomocą tagu <srai>
<category>
<pattern>BYE *</pattern>
<template>
<srai>BYE</srai>
</template>
</category>
Przykład
Zaktualizuj srai.aiml inside C > ab > bots > test > aiml i srai.aiml.csv wewnątrz C > ab > bots > test > aimlif katalogi.
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
Wykonaj program
Otwórz wiersz polecenia. Iść doC > ab > i wpisz następujące polecenie -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Sprawdź wynik
Zobaczysz następujący wynik -
Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!
Rozdzielczość synonimów
Synonimy to słowa o podobnym znaczeniu. Bot powinien odpowiadać w ten sam sposób na podobne słowa.
Weźmy na przykład pod uwagę następującą rozmowę.
Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!
Teraz oczekuje się, że robot odpowie Development Center! za każdym razem, gdy mówi użytkownik Factory lub Industry.
Włóżmy <srai> tag do pracy tutaj.
Krok 1: Utwórz kategorię
<category>
<pattern>FACTORY</pattern>
<template>Development Center!</template>
</category>
Krok 2: Utwórz kategorię ogólną za pomocą tagu <srai>
<category>
<pattern>INDUSTRY</pattern>
<template>
<srai>FACTORY</srai>
</template>
</category>
Przykład
Zaktualizuj srai.aiml inside C > ab > bots > test > aiml i srai.aiml.csv wewnątrz C > ab > bots > test > aimlif katalogi.
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
Wykonaj program
Otwórz wiersz polecenia. Iść doC > ab > i wpisz następujące polecenie -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Sprawdź wynik
Zobaczysz następujący wynik -
Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!
Wykrywanie słów kluczowych
Za pomocą srai, możemy zwrócić prostą odpowiedź, gdy użytkownik wpisze określone słowo kluczowe, na przykład Szkoła, bez względu na to, gdzie w zdaniu występuje słowo „szkoła”.
Weźmy na przykład pod uwagę następującą rozmowę.
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.
Tutaj oczekuje się, że robot odpowie na standardową wiadomość 'School is an important institution in a child's life.' zawsze, gdy użytkownik ma school w zdaniu.
Włóżmy <srai>tag do pracy tutaj. Użyjemy tutaj symboli wieloznacznych.
Krok 1: Utwórz kategorię
<category>
<pattern>SCHOOL</pattern>
<template>School is an important institution in a child's life.</template>
</category>
Krok 2: Utwórz kategorie ogólne za pomocą tagu <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>
Przykład
Zaktualizuj srai.aiml inside C > ab > bots > test > aiml i srai.aiml.csv wewnątrz C > ab > bots > test > aimlif katalogi.
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
Wykonaj program
Otwórz wiersz polecenia. Iść doC > ab > i wpisz następujące polecenie -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Sprawdź wynik
Zobaczysz następujący wynik -
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 służy do uzyskiwania losowych odpowiedzi. Ten tag umożliwia AIML różną odpowiedź na to samo wejście. Znacznik <random> jest używany razem z tagami <li>. Tagi <li> zawierają różne odpowiedzi, które mają być dostarczane użytkownikowi w sposób losowy.
Składnia
<random>
<li> pattern1 </li>
<li> pattern2 </li>
...
<li> patternN </li>
</random>
Weźmy na przykład pod uwagę następującą rozmowę.
Human: Hi
Robot: Hello!
Human: Hi
Robot: Hi! Nice to meet you!
Przykład
Utwórz random.aiml inside C > ab > bots > test > aiml i random.aiml.csv wewnątrz C > ab > bots > test > aimlif katalogi.
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
Wykonaj program
Otwórz wiersz polecenia. Iść doC > ab > i wpisz następujące polecenie -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Sprawdź wynik
Zobaczysz następujący wynik -
Human: Hi
Robot: Hi! Nice to meet you!
Human: Hi
Robot: Hello!
Tutaj odpowiedź może się różnić, biorąc pod uwagę losowe odpowiedzi.
<set> i <get>Tagi są używane do pracy ze zmiennymi w AIML. Zmienne mogą być predefiniowanymi zmiennymi lub zmiennymi utworzonymi przez programistę.
Składnia
Tag <set> służy do ustawiania wartości w zmiennej.
<set name = "variable-name"> variable-value </set>
Tag <get> służy do pobierania wartości ze zmiennej.
<get name = "variable-name"></get>
Weźmy na przykład pod uwagę następującą rozmowę.
Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!
Przykład
Utwórz plik setget.aiml inside C > ab > bots > test > aiml i setget.aiml.csv wewnątrz C > ab > bots > test > aimlif katalogi.
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
Wykonaj program
Otwórz wiersz polecenia. Iść doC > ab > i wpisz następujące polecenie -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Sprawdź wynik
Zobaczysz następujący wynik -
Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!
<that> Tag jest używany w AIML do odpowiadania na podstawie kontekstu.
Składnia
<that> template </that>
Weźmy na przykład pod uwagę następującą rozmowę.
Human: Hi Alice! What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.
Przykład
Stwórz to. Cel w środku C > ab > bots > test > aiml i that.aiml.csv w środku C > ab > bots > test > aimlif katalogi.
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
Wykonaj program
Otwórz wiersz polecenia. Iść doC > ab > i wpisz następujące polecenie -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Sprawdź wynik
Zobaczysz następujący wynik -
Human: What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.
<topic>Tag jest używany w AIML do przechowywania kontekstu, aby później można było prowadzić konwersację w oparciu o ten kontekst. Zwykle,<topic> tag jest używany w Yes/No type conversation. Pomaga AIML w wyszukiwaniu kategorii napisanych w kontekście tematu.
Składnia
Zdefiniuj temat za pomocą tagu <set>
<template>
<set name = "topic"> topic-name </set>
</template>
Zdefiniuj kategorię za pomocą tagu <topic>
<topic name = "topic-name">
<category>
...
</category>
</topic>
Weźmy na przykład pod uwagę następującą rozmowę.
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.
Tutaj bot odpowiada, biorąc za temat „film”.
Przykład
Utwórz plik topic.aiml wewnątrz C > ab > bots > test > aiml i topic.aiml.csv wewnątrz C > ab > bots > test > aimlif katalogi.
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
Wykonaj program
Otwórz wiersz polecenia. Iść doC > ab > i wpisz następujące polecenie -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Sprawdź wynik
Zobaczysz następujący wynik -
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 jest używany w AIML do przechowywania zmiennej bez powiadamiania użytkownika.
Składnia
Zapisz wartość za pomocą tagu <think>
<think>
<set name = "variable-name"> variable-value </set>
</think>
Weźmy na przykład pod uwagę następującą rozmowę.
Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!
Przykład
Stwórz think.aiml inside C > ab > bots > test > aiml i think.aiml.csv w środku C > ab > bots > test > aimlif katalogi.
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
Wykonaj program
Otwórz wiersz polecenia. Iść doC > ab > i wpisz następujące polecenie -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Sprawdź wynik
Zobaczysz następujący wynik -
Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!
<condition>Tag jest podobny do instrukcji przełączania w języku programowania. Pomaga ALICE odpowiedzieć na pasujące dane wejściowe.
Składnia
<condition name = "variable-name" value = "variable-value"/>
Weźmy na przykład pod uwagę następującą rozmowę.
Human: How are you feeling today
Robot: I am happy!
Tutaj mamy przechowywane happy jako stan ALICE i tak reaguje jako „Jestem szczęśliwy!”.
Przykład
Utwórz condition.aiml inside C > ab > bots > test > aiml i wewnątrz condition.aiml.csv C > ab > bots > test > aimlif katalogi.
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
Wykonaj program
Otwórz wiersz polecenia. Iść doC > ab > i wpisz następujące polecenie -
java -cp lib/Ab.jar Main bot = test action = chat trace = false
Sprawdź wynik
Zobaczysz następujący wynik -
Human: How are you feeling today
Robot: I am happy!