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 UserTen 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_75Alternatywnie, 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_75Alternatywnie, 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.aimlWykonaj 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 = falseSprawdź 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.aimlWykonaj 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 = falseSprawdź 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.aimlWykonaj 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 = falseSprawdź 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.aimlWykonaj 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 = falseSprawdź 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.aimlWykonaj 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 = falseSprawdź 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.aimlWykonaj 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 = falseSprawdź 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.aimlWykonaj 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 = falseSprawdź 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.aimlWykonaj 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 = falseSprawdź 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.aimlWykonaj 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 = falseSprawdź 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.aimlWykonaj 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 = falseSprawdź 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.aimlWykonaj 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 = falseSprawdź 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.aimlWykonaj 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 = falseSprawdź wynik
Zobaczysz następujący wynik -
Human: How are you feeling today
Robot: I am happy!