AIML - tag <srai>
<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 przedstawiono 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.
W tym przypadku 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.