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!