AIML-퀵 가이드
AIML은 Artificial Intelligence Markup Language. AIML은 1995-2000 년 동안 Alicebot 자유 소프트웨어 커뮤니티와 Dr. Richard S. Wallace에 의해 개발되었습니다. AIML은 ALICE (Artificial Linguistic Internet Computer Entity) 무료 소프트웨어를 기반으로하는 채팅 상자 응용 프로그램 인 Alicebot을 만들거나 사용자 지정하는 데 사용됩니다.
AIML 태그
다음은 AIML 문서에서 일반적으로 사용되는 중요한 태그입니다.
S. 아니. | AIML 태그 / 설명 |
---|---|
1 | <aiml> AIML 문서의 시작과 끝을 정의합니다. |
2 | <category> 정의 unit of knowledge Alicebot의 지식 기반에서. |
삼 | <pattern> 사용자가 Alicebot에 입력 할 수있는 것과 일치하는 패턴을 정의합니다. |
4 | <template> 사용자 입력에 대한 Alicebot의 응답을 정의합니다. |
AIML 기본 태그 장 에서 이러한 각 태그에 대해 설명합니다 .
다음은 널리 사용되는 다른 aiml 태그 중 일부입니다. 다음 장에서 각 태그에 대해 자세히 논의 할 것입니다.
S. 아니. | AIML 태그 / 설명 |
---|---|
1 | <star> 와일드 카드 일치에 사용 * <pattern> 태그의 문자. |
2 | <srai> 다른 카테고리를 호출 / 일치하는 데 사용되는 다목적 태그입니다. |
삼 | <random> 익숙한 <random> 무작위 응답을 얻습니다. |
4 | <li> 여러 응답을 나타내는 데 사용됩니다. |
5 | <set> AIML 변수에 값을 설정하는 데 사용됩니다. |
6 | <get> AIML 변수에 저장된 값을 가져 오는 데 사용됩니다. |
7 | <that> 컨텍스트에 따라 응답하기 위해 AIML에서 사용됩니다. |
8 | <topic> AIML에서 컨텍스트를 저장하는 데 사용되므로 나중에 해당 컨텍스트를 기반으로 대화를 수행 할 수 있습니다. |
9 | <think> AIML에서 사용자에게 알리지 않고 변수를 저장하는 데 사용됩니다. |
10 | <condition> 프로그래밍 언어의 switch 문과 유사합니다. ALICE가 일치하는 입력에 응답하는 데 도움이됩니다. |
AIML 어휘
AIML 어휘는 단어, 공백 및 두 개의 특수 문자를 사용합니다. * 과 _와일드 카드로. AIML 인터프리터는_ 패턴보다 *. AIML 태그는 XML을 준수하며 패턴은 대소 문자를 구분하지 않습니다.
예
<aiml version = "1.0.1" encoding = "UTF-8"?>
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User!
</template>
</category>
</aiml>
다음은 고려해야 할 중요한 사항입니다.
<aiml> 태그는 AIML 문서의 시작을 나타냅니다.
<category> 태그는 지식 단위를 정의합니다.
<pattern> 태그는 사용자가 입력 할 패턴을 정의합니다.
<template> 태그는 사용자가 Hello Alice를 입력하는 경우 사용자에 대한 응답을 정의합니다.
결과
User: Hello Alice
Bot: Hello User
이 튜토리얼은 AIML로 작업을 시작하여 자동 채팅 소프트웨어를 만들기 위해 개발 환경을 준비하는 방법을 안내합니다. 프로그램 AB는 ALICE AI Foundation에서 개발 및 유지 관리하는 AIML 2.0의 참조 구현입니다. 이 튜토리얼은 또한 Program AB 라이브러리를 설정하기 전에 JDK를 설정하는 방법을 알려줍니다.
1 단계-JDK (Java Development Kit) 설정
Oracle의 Java 사이트 -Java SE Downloads 에서 최신 버전의 SDK를 다운로드 할 수 있습니다 . 다운로드 한 파일에서 JDK 설치 지침을 찾을 수 있으며, 제공된 지침에 따라 설치 및 구성을 구성합니다. 마지막으로 java 및 javac (일반적으로 각각 java_install_dir / bin 및 java_install_dir)가 포함 된 디렉토리를 참조하도록 PATH 및 JAVA_HOME 환경 변수를 설정합니다.
Windows를 실행 중이고 C : \ jdk1.7.0_75에 JDK를 설치 한 경우 C : \ autoexec.bat 파일에 다음 행을 입력해야합니다.
set PATH = C:\jdk1.7.0_75\bin;%PATH%
set JAVA_HOME = C:\jdk1.7.0_75
또는 Windows NT / 2000 / XP에서 내 컴퓨터를 마우스 오른쪽 버튼으로 클릭하고 속성, 고급, 환경 변수를 차례로 선택할 수도 있습니다. 그런 다음 PATH 값을 업데이트하고 OK 버튼을 누릅니다.
Unix (Solaris, Linux 등)에서 SDK가 /usr/local/jdk1.7.0_75에 설치되어 있고 C 쉘을 사용하는 경우 .cshrc 파일에 다음을 넣습니다.
setenv PATH /usr/local/jdk1.7.0_75/bin:$PATH
setenv JAVA_HOME /usr/local/jdk1.7.0_75
또는 Borland JBuilder, Eclipse, IntelliJ IDEA 또는 Sun ONE Studio와 같은 IDE (통합 개발 환경)를 사용하는 경우 간단한 프로그램을 컴파일하고 실행하여 IDE가 Java를 설치 한 위치를 알고 있는지 확인하고 그렇지 않으면 주어진 문서에 따라 적절한 설정을 수행합니다. IDE의.
2 단계-프로그램 AB 설정
이제 모든 것이 정상이면 프로그램 AB 설정을 진행할 수 있습니다. 다음은 컴퓨터에 라이브러리를 다운로드하고 설치하는 간단한 단계입니다.
Windows 또는 Unix에 AIML을 설치할지 여부를 선택한 후 다음 단계로 진행하여 .zip 파일을 다운로드합니다.
다음에서 Program AB 바이너리의 최신 버전을 다운로드하십시오. https://code.google.com/p/program-ab/program-ab-0.0.4.3.zip 링크를 사용합니다 .
이 튜토리얼을 작성할 때 program-ab-0.0.4.3.zip 내 Windows 컴퓨터에서 다운로드 한 파일의 압축을 풀면 다음과 같이 C : \ ab 내부의 디렉토리 구조가 제공됩니다.
S. 아니. | 디렉토리 및 설명 |
---|---|
1 | c:/ab/bots AIML 봇 저장 |
2 | c:/ab/lib Java 라이브러리 저장 |
삼 | c:/ab/out Java 클래스 파일 디렉토리 |
4 | c:/ab/run.bat 프로그램 AB 실행을위한 배치 파일 |
이 마지막 단계를 마치면 다음 장에서 보게 될 첫 번째 AIML 예제를 진행할 준비가 된 것입니다.
사용자에게 간단히 인사 할 첫 번째 봇을 만들어 보겠습니다. Hello User! 사용자가 입력 할 때 Hello Alice.
프로젝트 구조 만들기
AIML Environment Setup 에서와 마찬가지로 program-ab의 내용을 추출했습니다.C > ab 다음 디렉토리 구조로.
S. 아니. | 디렉토리 및 설명 |
---|---|
1 | c:/ab/bots AIML 봇 저장 |
2 | c:/ab/lib Java 라이브러리 저장 |
삼 | c:/ab/out Java 클래스 파일 디렉토리 |
4 | c:/ab/run.bat 프로그램 AB 실행을위한 배치 파일 |
이제 내부에 디렉터리 테스트를 만듭니다. C > ab > bots 그 안에 다음 디렉토리를 만듭니다.
S. 아니. | 디렉토리 및 설명 |
---|---|
1 | c:/ab/bots/test/aiml AIML 파일 저장 |
2 | c:/ab/bots/test/aimlif AIMLIF 파일 저장 |
삼 | c:/ab/bots/test/config 구성 파일 저장 |
4 | c:/ab/bots/test/sets AIML 세트 저장 |
5 | c:/ab/bots/test/maps AIML지도 저장 |
소스 파일 생성
내부에 test.aiml 만들기 C > ab > bots > test > aiml 및 test.aiml.csv 내부 C > ab > bots > test > aimlif 디렉토리.
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
프로그램 실행
명령 프롬프트를 엽니 다. 이동C > ab > 다음 명령을 입력하십시오-
java -cp lib/Ab.jar Main bot = test action = chat trace = false
결과 확인
다음 출력이 표시됩니다.
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:
유형 Hello Alice 결과를 확인한 다음 다른 것을 입력하여 변경된 결과를 확인합니다.
Human: hello alice
Robot: Hello User
Human: bye
Robot: I have no answer for that.
Human:
이 튜토리얼에서는 AIML의 기본 태그에 대해 설명합니다.
<aiml> − AIML 문서의 시작과 끝을 정의합니다.
<category> − 정의 unit of knowledge Alicebot의 지식 기반에서.
<pattern> − 사용자가 Alicebot에 입력 할 수있는 것과 일치하는 패턴을 정의합니다.
<template> − 사용자 입력에 대한 Alicebot의 응답을 정의합니다.
다음 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>
<aiml> 태그
<aiml> 태그는 AIML 문서의 시작과 끝을 표시합니다. 버전 및 인코딩 속성 아래에 버전 및 인코딩 정보가 포함됩니다. version 속성은 ALICE chatterbot Knowledge Base, KB에서 사용하는 AIML 버전을 저장합니다. 예를 들어 1.0.1 버전을 사용했습니다. 이 속성은 선택 사항입니다.
인코딩 속성은 문서에서 사용할 문자 세트를 제공합니다. 예를 들어 UTF-8을 사용했습니다. 필수 요구 사항으로 <aiml> 태그에는 하나 이상의 <category> 태그가 포함되어야합니다. 각 AIML 파일에 단일 <aiml> 태그가 포함 된 여러 AIML 파일을 만들 수 있습니다. 각 AIML 파일의 목적은 카테고리라는 하나 이상의 지식 단위를 ALICE chatterbot KB에 추가하는 것입니다.
<aiml version = "1.0.1" encoding = "UTF-8"?>
...
</aiml>
<카테고리> 태그
<category> 태그는 ALICE Bot의 기본 지식 단위입니다. 각 카테고리에는-
어설 션, 질문 및 느낌표 등이 될 수있는 문장 형태의 사용자 입력. 사용자 입력에는 다음과 같은 와일드 카드 문자가 포함될 수 있습니다. * 과 _.
Alicebot이 제공 할 사용자 입력에 대한 응답.
선택적 컨텍스트.
ㅏ <category> 태그에는 <pattern> 과 <template> 꼬리표. <pattern> 사용자 입력을 나타내고 템플릿은 봇의 응답을 나타냅니다.
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
여기에서 사용자가 입력하면 Hello Alice 그런 다음 봇은 다음과 같이 응답합니다. Hello User.
<pattern> 태그
<pattern> 태그는 사용자의 입력을 나타냅니다. <category> 태그 내에서 첫 번째 태그 여야합니다. <pattern> 태그는 사용자 입력으로 둘 이상의 문장과 일치하는 와일드 카드를 포함 할 수 있습니다. 예를 들어,이 예에서 <pattern>은 HELLO ALICE를 포함합니다.
AIML은 대소 문자를 구분하지 않습니다. 사용자가 Hello Alice, hello alice, HELLO ALICE 등을 입력하면 모든 입력이 유효하며 봇은이를 HELLO ALICE와 일치시킵니다.
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
여기서 템플릿은 "Hello User"이며 사용자 입력에 대한 로봇의 응답을 나타냅니다.
<템플릿> 태그
<template> 태그는 사용자에 대한 봇의 응답을 나타냅니다. <category> 태그 내의 두 번째 태그 여야합니다. 이 <template> 태그는 데이터를 저장하고, 다른 프로그램을 호출하고, 조건부 응답을 제공하거나 다른 범주에 위임 할 수 있습니다.
<category>
<pattern> HELLO ALICE </pattern>
<template>
Hello User
</template>
</category>
여기서 템플릿은 "Hello User"이며 사용자 입력에 대한 로봇의 응답을 나타냅니다.
<star> 태그는 와일드 카드 일치에 사용됩니다. * <pattern> 태그의 문자.
통사론
<star index = "n"/>
n <pattern> 태그의 사용자 입력에서 *의 위치를 나타냅니다.
다음 예를 고려하십시오-
<category>
<pattern> A * is a *. </pattern>
<template>
When a <star index = "1"/> is not a <star index = "2"/>?
</template>
</category>
사용자가 "망고는 과일입니다."라고 입력하면 그러면 봇은 "망고가 과일이 아닐 때"라고 응답합니다.
예
내부에 star.aiml 만들기 C > ab > bots > test > aiml 및 star.aiml.csv 내부 C > ab > bots > test > aimlif 디렉토리.
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
프로그램 실행
명령 프롬프트를 엽니 다. 이동C > ab > 다음 명령을 입력하십시오-
java -cp lib/Ab.jar Main bot = test action = chat trace = false
결과 확인
다음 출력이 표시됩니다.
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"/>은 종종 <star />로 사용됩니다.
<srai>태그는 다목적 태그입니다. 이 태그를 사용하면 AIML이 동일한 템플릿에 대해 서로 다른 대상을 정의 할 수 있습니다.
통사론
<srai> pattern </srai>
다음은 다음과 관련된 일반적으로 사용되는 용어입니다. srai −
상징적 감소
분할 및 정복
동의어 확인
키워드 감지
상징적 감소
기호 축소 기법은 패턴을 단순화하는 데 사용됩니다. 간단한 패턴으로 복잡한 문법 패턴을 줄이는 데 도움이됩니다.
예를 들어, 다음 대화를 고려하십시오.
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.
지금 What if 질문은 다음과 같이 제기됩니다.
Human: DO YOU KNOW WHO Albert Einstein IS?
Human: DO YOU KNOW WHO Isaac Newton IS?
여기, <srai> 태그가 작동합니다. 사용자의 패턴을 템플릿으로 사용할 수 있습니다.
1 단계 : 카테고리 만들기
<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 단계 : <srai> 태그를 사용하여 일반 카테고리 생성
<category>
<pattern>DO YOU KNOW WHO * IS?</pattern>
<template>
<srai>WHO IS <star/></srai>
</template>
</category>
예
내부에 srai.aiml 만들기 C > ab > bots > test > aiml 및 srai.aiml.csv 내부 C > ab > bots > test > aimlif 디렉토리.
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
프로그램 실행
명령 프롬프트를 엽니 다. 이동C > ab > 다음 명령을 입력하십시오-
java -cp lib/Ab.jar Main bot = test action = chat trace = false
결과 확인
다음 출력이 표시됩니다.
Human: Do you know who Albert Einstein is
Robot: Albert Einstein was a German physicist.
분할 및 정복
Divide and Conquer는 완전한 답장을 만들 때 하위 문장을 재사용하는 데 사용됩니다. 여러 범주 정의를 줄이는 데 도움이됩니다.
예를 들어, 다음 대화를 고려하십시오.
Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!
이제 여기 로봇이 응답 할 것으로 예상됩니다. GoodBye! 사용자가 말할 때마다 Bye 문장 시작 부분에.
여기에 <srai> 태그를 붙여 보겠습니다.
1 단계 : 카테고리 생성
<category>
<pattern>BYE</pattern>
<template>Good Bye!</template>
</category>
2 단계 : <srai> 태그를 사용하여 일반 카테고리 생성
<category>
<pattern>BYE *</pattern>
<template>
<srai>BYE</srai>
</template>
</category>
예
내부 srai.aiml 업데이트 C > ab > bots > test > aiml 및 srai.aiml.csv 내부 C > ab > bots > test > aimlif 디렉토리.
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
프로그램 실행
명령 프롬프트를 엽니 다. 이동C > ab > 다음 명령을 입력하십시오-
java -cp lib/Ab.jar Main bot = test action = chat trace = false
결과 확인
다음 출력이 표시됩니다.
Human: Bye
Robot: GoodBye!
Human: Bye Alice!
Robot: GoodBye!
동의어 해상도
동의어는 유사한 의미를 가진 단어입니다. 봇은 유사한 단어에 대해 동일한 방식으로 응답해야합니다.
예를 들어, 다음 대화를 고려하십시오.
Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!
이제 여기 로봇이 응답 할 것으로 예상됩니다. Development Center! 사용자가 말할 때마다 Factory 또는 Industry.
넣어 보자 <srai> 여기에서 일하는 태그.
1 단계 : 카테고리 생성
<category>
<pattern>FACTORY</pattern>
<template>Development Center!</template>
</category>
2 단계 : <srai> 태그를 사용하여 일반 카테고리 생성
<category>
<pattern>INDUSTRY</pattern>
<template>
<srai>FACTORY</srai>
</template>
</category>
예
내부 srai.aiml 업데이트 C > ab > bots > test > aiml 및 srai.aiml.csv 내부 C > ab > bots > test > aimlif 디렉토리.
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
프로그램 실행
명령 프롬프트를 엽니 다. 이동C > ab > 다음 명령을 입력하십시오-
java -cp lib/Ab.jar Main bot = test action = chat trace = false
결과 확인
다음 출력이 표시됩니다.
Human: Factory
Robot: Development Center!
Human: Industry
Robot: Development Center!
키워드 감지
사용 srai, 사용자가 특정 키워드 (예 : School)를 입력하면 문장에서 "school"이 어디에 있든 관계없이 간단한 응답을 반환 할 수 있습니다.
예를 들어, 다음 대화를 고려하십시오.
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.
여기서 로봇은 표준 메시지에 응답해야합니다. 'School is an important institution in a child's life.' 사용자가 가질 때마다 school 문장에서.
넣어 보자 <srai>여기에서 일하는 태그. 여기서는 와일드 카드를 사용합니다.
1 단계 : 카테고리 생성
<category>
<pattern>SCHOOL</pattern>
<template>School is an important institution in a child's life.</template>
</category>
2 단계 : <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>
예
내부 srai.aiml 업데이트 C > ab > bots > test > aiml 및 srai.aiml.csv 내부 C > ab > bots > test > aimlif 디렉토리.
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
프로그램 실행
명령 프롬프트를 엽니 다. 이동C > ab > 다음 명령을 입력하십시오-
java -cp lib/Ab.jar Main bot = test action = chat trace = false
결과 확인
다음 출력이 표시됩니다.
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>태그는 무작위 응답을 얻는 데 사용됩니다. 이 태그를 사용하면 AIML이 동일한 입력에 대해 다르게 응답 할 수 있습니다. <random> 태그는 <li> 태그와 함께 사용됩니다. <li> 태그는 사용자에게 무작위로 전달되는 다양한 응답을 전달합니다.
통사론
<random>
<li> pattern1 </li>
<li> pattern2 </li>
...
<li> patternN </li>
</random>
예를 들어, 다음 대화를 고려하십시오.
Human: Hi
Robot: Hello!
Human: Hi
Robot: Hi! Nice to meet you!
예
내부에 random.aiml 만들기 C > ab > bots > test > aiml 및 random.aiml.csv 내부 C > ab > bots > test > aimlif 디렉토리.
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
프로그램 실행
명령 프롬프트를 엽니 다. 이동C > ab > 다음 명령을 입력하십시오-
java -cp lib/Ab.jar Main bot = test action = chat trace = false
결과 확인
다음 출력이 표시됩니다.
Human: Hi
Robot: Hi! Nice to meet you!
Human: Hi
Robot: Hello!
여기서 응답은 무작위 응답을 고려하여 달라질 수 있습니다.
<set> 과 <get>태그는 AIML의 변수 작업에 사용됩니다. 변수는 미리 정의 된 변수이거나 프로그래머가 만든 변수 일 수 있습니다.
통사론
<set> 태그는 변수에 값을 설정하는 데 사용됩니다.
<set name = "variable-name"> variable-value </set>
<get> 태그는 변수에서 값을 가져 오는 데 사용됩니다.
<get name = "variable-name"></get>
예를 들어, 다음 대화를 고려하십시오.
Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!
예
내부에 setget.aiml 만들기 C > ab > bots > test > aiml 및 setget.aiml.csv 내부 C > ab > bots > test > aimlif 디렉토리.
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
프로그램 실행
명령 프롬프트를 엽니 다. 이동C > ab > 다음 명령을 입력하십시오-
java -cp lib/Ab.jar Main bot = test action = chat trace = false
결과 확인
다음 출력이 표시됩니다.
Human: I am Mahesh
Robot: Hello Mahesh!
Human: Good Night
Robot: Good Night Mahesh! Thanks for the conversation!
<that> 태그는 AIML에서 컨텍스트에 따라 응답하는 데 사용됩니다.
통사론
<that> template </that>
예를 들어, 다음 대화를 고려하십시오.
Human: Hi Alice! What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.
예
that.aiml 내부 생성 C > ab > bots > test > aiml 그리고 that.aiml.csv 내부 C > ab > bots > test > aimlif 디렉토리.
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
프로그램 실행
명령 프롬프트를 엽니 다. 이동C > ab > 다음 명령을 입력하십시오-
java -cp lib/Ab.jar Main bot = test action = chat trace = false
결과 확인
다음 출력이 표시됩니다.
Human: What about movies?
Robot: Do you like comedy movies?
Human: No
Robot: Ok! But I like comedy movies.
<topic>태그는 AIML에서 컨텍스트를 저장하는 데 사용되므로 나중에 해당 컨텍스트를 기반으로 대화를 수행 할 수 있습니다. 보통,<topic> 태그는 Yes/No type conversation. AIML이 주제 컨텍스트 내에서 작성된 카테고리를 검색하는 데 도움이됩니다.
통사론
<set> 태그를 사용하여 주제 정의
<template>
<set name = "topic"> topic-name </set>
</template>
<topic> 태그를 사용하여 카테고리 정의
<topic name = "topic-name">
<category>
...
</category>
</topic>
예를 들어, 다음 대화를 고려하십시오.
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.
여기서 봇은 "영화"를 주제로 삼아 응답합니다.
예
내부에 topic.aiml 만들기 C > ab > bots > test > aiml 및 topic.aiml.csv 내부 C > ab > bots > test > aimlif 디렉토리.
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
프로그램 실행
명령 프롬프트를 엽니 다. 이동C > ab > 다음 명령을 입력하십시오-
java -cp lib/Ab.jar Main bot = test action = chat trace = false
결과 확인
다음 출력이 표시됩니다.
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> 태그는 AIML에서 사용자에게 알리지 않고 변수를 저장하는 데 사용됩니다.
통사론
<think> 태그를 사용하여 값 저장
<think>
<set name = "variable-name"> variable-value </set>
</think>
예를 들어, 다음 대화를 고려하십시오.
Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!
예
내부에 think.aiml 만들기 C > ab > bots > test > aiml 그리고 think.aiml.csv 내부 C > ab > bots > test > aimlif 디렉토리.
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
프로그램 실행
명령 프롬프트를 엽니 다. 이동C > ab > 다음 명령을 입력하십시오-
java -cp lib/Ab.jar Main bot = test action = chat trace = false
결과 확인
다음 출력이 표시됩니다.
Human: My name is Mahesh
Robot: Hello!
Human: Byeee
Robot: Hi Mahesh Thanks for the conversation!
<condition>태그는 프로그래밍 언어의 switch 문과 유사합니다. ALICE가 일치하는 입력에 응답하는 데 도움이됩니다.
통사론
<condition name = "variable-name" value = "variable-value"/>
예를 들어, 다음 대화를 고려하십시오.
Human: How are you feeling today
Robot: I am happy!
여기에 저장했습니다 happy ALICE의 상태로 "I am happy!"로 응답합니다.
예
내부에 condition.aiml 만들기 C > ab > bots > test > aiml 및 condition.aiml.csv 내부 C > ab > bots > test > aimlif 디렉토리.
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
프로그램 실행
명령 프롬프트를 엽니 다. 이동C > ab > 다음 명령을 입력하십시오-
java -cp lib/Ab.jar Main bot = test action = chat trace = false
결과 확인
다음 출력이 표시됩니다.
Human: How are you feeling today
Robot: I am happy!