DIY CHATBOT BUILDER MANUAL...2. (인비bot 지 기반의) 지 단위를 정의합니다. 3. ...

48
DIY CHATBOT BUILDER MANUAL Developer Version www.inbi.ai 문의사항: [email protected] Version1.0 Last updated 2017.03.23

Transcript of DIY CHATBOT BUILDER MANUAL...2. (인비bot 지 기반의) 지 단위를 정의합니다. 3. ...

Page 1: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

DIY CHATBOT BUILDER MANUAL

Developer Version

www.inbi.ai

문의사항: [email protected]

Version1.0 Last updated 2017.03.23

Page 2: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

2

목차

I. INTRODUCTION ······························································································································ 4

1. 챗봇(CHATBOT)이란? ··········································································································································· 4

2. DIY CHATBOT PLATFORM이란? ······················································································································ 4

II. CHATBOT BUILDER PLATFORM ···································································································· 6

1. 메뉴소개 ···································································································································································· 6

2. CHATBOT BUILDER ····················································································································································· 7

3. 커스텀 모듈 만들기 ·········································································································································· 13

4. 스토어 ····································································································································································· 14

III. AIML ················································································································································ 16

1. AIML INTRODUCTION ············································································································································ 16

2. AIML 기본 태그 ·················································································································································· 19

3. AIML <STAR> 태그 ············································································································································· 22

4. <SRAI>태그 ···························································································································································· 25

5. AIML <RANDOM> 태그 ····································································································································· 35

6. AIML <SET>, <GET> 태그 ································································································································ 38

7. AIML <THAT> 태그 ············································································································································· 40

8. AIML <TOPIC> 태그 ··········································································································································· 42

9. AIML <THINK>태그 ············································································································································· 45

10. AIML <CONDITION> 태그 ································································································································· 47

Page 3: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

3

I. Introduction

Page 4: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

4

I. INTRODUCTION

1. 챗봇(CHATBOT)이란?

챗봇(CHATBOT)이란 채팅로봇, 즉 인공지능을 기반으로 사람과 대화를 나누는 프로그램을 말합니

다. 애플의 ‘시리’나 구글 ‘나우’ 등이 챗봇의 일종입니다. 물론 정해진 패턴에 따라 대화하는 것이

전부는 아닙니다. 대화를 통한 정보 검색, 주문, 결제 등 다양한 기능을 수행할 수 있습니다. 이렇

게 고도화된 챗봇을 만들기 위해서는 자연어처리, 머신러닝, 개별기능 구현 등 여러 기술기반이

필요합니다. 하지만 걱정하실 필요 없습니다. Open source기반의 DIY CHATBOT PLATFORM은 이러

한 기술기반을 GUI환경에서 제공합니다. 모듈만 있다면, 코딩없이도 챗봇을 만들 수 있습니다.

개발자 플랫폼인 CHATBOT BUILDER에서 Drag&Drop으로 모듈을 추가하고, 필요한 노드만 연결

해주면 원하는 기능을 갖춘 챗봇을 만들 수 있습니다.

<그림 1> 모듈을 결합하여 쉽게 챗봇을 만들 수 있습니다

기본적으로 제공하는 AI모듈을 사용할 수도 있고, 다른 개발자가 만든 AI모듈을 구매해서 사용

할 수도 있습니다. 만약 기본 제공 모듈이나 판매 중인 모듈이 원하는 기능을 제공하지 않는다면,

XML기반의 Markup Language로 해당 기능을 개발하고 모듈로 판매도 할 수 있습니다. XML을 잘

모르더라도 매뉴얼의 예제를 활용하면, 금새 익숙해질 것입니다.

2. DIY CHATBOT PLATFORM이란?

DIY CHATBOT PLATFORM은 개발자 플랫폼뿐 아니라 소비자 플랫폼인 CHATBOT STORE까지 포함

하여 인공지능 비서 Ecosystem을 구축하고 있습니다. 잠시 후 매뉴얼을 통해 스토어에 어떻게 챗

봇을 등록하고 구매하는지 확인할 수 있습니다.

이 CHATBOT 스토어를 통해 다양한 AI모듈, 챗봇을 판매할 수 있습니다. 반대로 필요한 모듈과

챗봇을 구매하여 자신에게 맞게 수정할 수도 있습니다. 이 역시 매뉴얼을 통해 학습하게 될 것입

니다.

Page 5: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

5

II. CHATBOT BUILDER PLATFORM

Page 6: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

6

II. CHATBOT BUILDER PLATFORM

1. 메뉴소개

<그림 2> Chatbot Builder Main Page

Chatbot Builder의 첫 화면입니다. 좌측 메뉴부터 자세히 살펴보겠습니다.

<그림 2-1>의 번호와 영역표시는 설명을 위해

임의로 붙인 것이며, 실제 사용자 화면에서는 나타

나지 않습니다.

Chatbot Builder는 2부분으로 구분할 수 있습니다.

Chatbot Builder 에서는 챗봇을 생성하거나 보유

한 챗봇을 관리할 수 있습니다. 또한 챗봇의 모듈

배치, 연결, 수정 등 작업을 수행할 수 있습니다.

Module List 에서는 커스텀 모듈을 제작할 수 있

습니다. 이 기능을 활용하면 챗봇에 자신만의 기능을 추가하거나, 기존에 없는 기능을 모듈로 만

<그림 2-1> Chatbot Builder Menu

No. 설명

1 Chatbot Builder: 챗봇 생성, 관리, 수정.

챗봇 내 모듈 수정

2 Module List: 커스텀 모듈 제작

Page 7: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

7

들 수 있습니다.

Chatbot Store/Module Store 에서는 챗봇/모듈을 판매하거나 구매할 수 있습니다.

이제 각 메뉴에 대해 설명하겠습니다.

2. Chatbot Builder

<그림 3> Chatbot Builder Main Page

Chatbot Builder 는 챗봇의 생성, 보유한 챗봇의 삭제, 보유한 챗봇의 기능 수정요청 작업을 수행

합니다. <그림 3>의 1번 영역에 +버튼을 누르면 <그림3-1>이 보이며 챗봇을 생성할 수 있습니다.

Page 8: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

8

<그림 3-1> Chatbot 생성 - 속성

<그림 3-1> 1번 Chatbot name은 챗봇 이름을 설정하는 영역입니다.

<그림 3-1> 2번 Description은 챗봇에 대한 설명을 작성하는 부분입니다.

<그림 3-1> 3번 생성시 템플릿을 설정하는 부분입니다.

-Start with basic template: 기본 템플릿으로 챗봇을 생성합니다.

-Start with empty template: 빈 템플릿으로 챗봇을 생성합니다.

-Start with purchased template: 구매한 챗봇을 불러와 템플릿을 생성합니다.

위 내용을 설정하고 우측 하단의 Create 버튼을 클릭하면 새로운 챗봇이 생성됩니다.

챗봇의 기능은 Chatbot Builder에서 구현할 수 있습니다.

Page 9: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

9

<그림 3>의 2 번 영역에서 open 을 클릭하면 실제로 챗봇 동작 및 기능을 구현하는 Chatbot

Builder 페이지로 넘어갑니다.

Chatbot Builder 페이지에서 제공하는 기능 내역은 다음과 같습니다.

위의 기능을 통해 챗봇의 기능이 연속적으로 수행되도록 합니다.

<그림 3-2> Chatbot Builder 구현

<그림 3-2>의 1번 영역은 전역설정으로 누르면 챗봇의 시작과 종료 시 표시할 메시지를 설정할

수 있습니다.

<그림 3-2>의 2번 영역은 모듈영역으로 기본적으로 제공하는 모듈이나 구매한 모듈이 표시됩니

다. 이를 Drag & Drop하여 쉽게 모듈을 삽입할 수 있습니다.

구분 Chatbot Builder 기능 내역

A 챗봇 시작/종료 메시지 설정

B 챗봇 시작 노드(모듈)의 설정

C 챗봇에 모듈 삽입

D 챗봇에 존재하는 모듈 삭제

E 챗봇에 존재하는 모듈의 세부기능 설정

F 챗봇에 존재하는 노드 간의 연결

G Run을 통한 챗봇 테스트

Page 10: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

10

<그림 3-3> Chatbot Module Control

<그림3-3>은 Drag & Drop으로 모듈들을 추가하고 테스트를 실행중인 화면입니다. 하지만 아직

여러분의 모듈 노드는 서로 연결 되어있지 않을 것입니다. 이제 어떻게 저 모듈을 연결하는지 설

명 드리겠습니다. <그림3-2>의 2번 영역에서 버튼 프로세스 모듈을 추가하고, 버튼 프로세스 모

듈의 Open 버튼을 누르면 아래와 같은 창이 나옵니다.

Page 11: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

11

<그림 3-4> 1번 영역은 해당 모듈의 종류

를 나타냅니다. 모듈의 종류에 따라 다양한

기능을 추가할 수 있습니다.

<그림 3-4> 2번 process-name 영역에서

는 모듈의 이름을 설정합니다.

<그림 3-4> 3번 request-contents에는 모

듈이 실행되었을 때 사용자에게 출력될 내

용을 입력합니다. Javascript Function을 이

용하여 이미지, 오디오, 비디오 등을 삽입

할 수 있습니다. 각 태그 넣기 버튼으로 편

하게 Javascript 함수 원형을 호출 할 수 있

습니다.

<그림 3-4> 4번 error-response에는 실행

중 오류가 났을 때 출력할 내용을 입력합

니다.

<그림 3-4> 5번 button 영역은 각 모듈을

연결하는 버튼을 생성하는 부분입니다. 버

튼을 누르면 해당 모듈로 연결되도록 할

수 있고, URL 주소로 연결되도록 설정할 수

있고, Message를 출력할 수도 있습니다. 커

스텀 모듈의 경우, 채팅기반으로 동작하기

때문에 노드 연결이 필요 없습니다. 하지만

이외의 모듈은 모듈의 연결을 통해 연속적

인 동작이 가능하도록 할 수 있습니다. 버튼 이름입력 - URL / PROCESS / MESSAGE 연결 선택 -

연결할 모듈 / URL 입력 / MESSAGE 입력 단계를 통해 각 노드를 연결합니다.

<그림 3-4> 6번 영역은 모듈을 시작 노드로 설정하는 버튼입니다. 챗봇을 실행했을 때 가장 먼저

시작하는 노드입니다. 시작 노드 모듈은 파란색 테두리가 있어, 시작 노드임을 쉽게 알 수 있습니

다.

우측하단의 Save를 누르면 위 변경항목이 적용됩니다.

각 모듈 타입에 따라 기능이 다르며, 각기 다른 입력 창이 존재합니다. 기본적으로 버튼 프로세스

와 유사하지만, 일부 기능이 빠져있거나 추가되어 있을 수 있습니다. 각 기능과 목적에 따라 모듈

을 선택하여 사용하면 됩니다.

<그림 3-4> Button Module 속성

Page 12: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

12

<그림 3-5> Chatbot Builder Test – Run

그리고 <그림 3-5> 1번 영역의 Run을 누르면 그림 오른쪽 영역처럼 봇의 기능을 테스트 해볼 수

있습니다

Page 13: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

13

3. 커스텀 모듈 만들기

봇을 만들다 보면, 때로는 모

듈을 조금만 수정해서 쓰고

싶을 때가 있습니다. 내가 원

하는 기능의 모듈이 없을 때

도 있을 수 있습니다. 이럴 경

우, 커스텀 모듈을 사용해 봇

의 기능을 확장 / 수정할 수

있습니다.

커스텀 모듈은 <그림 5>의

1번 Module List를 통해 추가

할 수 있습니다.

<그림 5> 2번 영역에서 모듈

이름, 설명, 태그를 달 수 있

습니다. 태그는 스토어에서 모

듈 설명, 검색에 사용됩니다. 개인 모듈을 관리할 때도 유용하게 쓰일 수 있습니다.

<그림 5> 3번 UI스크립트 영역에서는 모듈이 실행되었을 때 사용자에게 출력될 내용을 입력합니

다. Javascript Function을 이용하여 이미지, 오디오, 비디오 등을 삽입할 수 있습니다. Chatbot

Builder의 request-contents와 동일하게 작동합니다.

<그림 5> 4번 서버 스크립트 영역에서는 XML기반의 Markup Language인 AIML을 활용하여 챗봇

의 응답을 다양하게 설정할 수 있습니다. AIML은 봇이 맥락에 기반하여 반응할 수 있도록 하거나,

같은 질의에도 다양한 응답을 출력하게 하는 등 다양한 기능을 태그형식으로 제공합니다. AIML의

간단한 구조와 태그에 대한 설명은 뒤의 AIML 파트에서 예제와 함께 자세히 설명하고 있습니다.

<그림 4> Custom Module

Page 14: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

14

4. 스토어

스토어에서는 챗봇과 모듈을 구매할 수 있습니다. 자신이 만든 챗봇이나 모듈을 판매할 수도 있

습니다. 구매한 챗봇과 모듈을 자신에 맞게 수정하는 것도 가능합니다. 구매한 챗봇/모듈은 서버

스크립트(AIML Tag)를 포함한 세부사항까지 수정할 수 있습니다.

사용자는 봇 구매전에 봇을 테스트해볼 수 있으며, 봇에 대한 후기와 설명을 참고할 수 있습니다.

태그를 활용해 원하는 기능을 쉽게 검색할 수도 있습니다.

<그림 5> Chatbot Store

Page 15: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

15

III-1. AIML : Introduction

Page 16: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

16

III. AIML

1. AIML Introduction

소개

AIML은 인공지능을 HUI 환경의 프로그램에서 적용하기 위한 XML기반의 Markup Language입니

다.

대상

튜토리얼은 소프트웨어 전문가를 대상으로 제작되었으며, 튜토리얼을 통해 AIML의 개념을 이해하

고 즉시 전문가 수준으로 적용하도록 할 것입니다.

필요역량

튜토리얼을 진행하기 전에, 자바와 텍스트 에디터에 대한 기본적 이해가 되어있어야 합니다. 프로

그램 AB를 사용하여 AIML 어플리케이션을 개발할 것이며, 자바 기반의 참조 작업이 수행될 것이

기 때문입니다.

*Markup Language: 문서에 구문을 달기 위해 텍스트에서 문법적으로 구별되는 시스템.

AIML Tags

다음은 AIML문서에서 공통적으로 사용되는 중요한 태그입니다. AIML은 chat box인 인비bot을 생

성하고 customizing하는데 사용합니다.

1. <aiml> aiml 문서의 시작과 끝을 정의합니다.

2. <category> (인비bot 지식 기반의) 지식 단위를 정의합니다.

3. <pattern> 사용자 입력과 매칭시킬 패턴을 정의합니다.

4. <template> 사용자 입력에 대한 인비bot의 반응을 정의합니다.

기본 태그 챕터에서 각 태그에 대해 설명할 것입니다.

아래는 널리 쓰리는 aiml tag입니다. 마찬가지도 각 챕터에서 정의할 것입니다.

1. <star> 패턴 태그에서 와일드카드 문자 *을 매칭시키는데 사용됩니다.

2. <srai> 다용도 태그입니다. 다른 카테고리를 call/match 하는데 사용됩니다.

3. <random> 무작위 반응을 얻어내는데 사용합니다.

4. <li> 여러 반응들을 대표하는데 사용합니다.

5. <set> AIML 변수 값을 설정하는데 사용합니다

6. <get> 저장된 AIML 변수 값을 얻어오는데 사용합니다.

7. <that> 문맥(맥락)기반으로 반응하는 AIML용 태그입니다.

8. <topic> 맥락을 저장하고 대화가 맥락기반으로 진행하도록 하는 AIML용 태그입니다.

Page 17: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

17

9. <think> 사용자 통보없이 변수를 저장하는 AIML용 태그입니다.

10. <condition> 프로그래밍언어의 switch문과 유사합니다. 입력에 맞게 인비의 반응을 도와줍니

다.

11. <get3rdAPI>외부 API를 적용하여 쓰는데 사용됩니다.

AIML 문법

AIML문법은 단어, 공백, *와 _ 두 와일드 카드를 사용합니다.

AIML의 인터프리터는 *이 있는 패턴보다 _가 있는 패턴을 선호합니다.

AIML 태그는 XML을 준수하며, 패턴은 대소문자를 구분하지 않습니다.

예제

<?xml version="1.0" encoding="UTF-8"?> <aiml>

<category>

<pattern>안녕하세요 인비</pattern>

<template>

안녕하세요,만나서 반가워요!

</template> </category>

</aiml>

1. <aiml> 태그는 AIML 문서의 시작을 나타냅니다.

2. <category> 태그는 지식 단위(knowledge unit)*를 정의 합니다.

3. <pattern> 태그는 사용자가 입력할 패턴을 정의합니다.

4. <template> 태그는 패턴을 입력 했을 때 출력할 반응을 정의합니다.

* 지식 단위(knowledge unit): 사용자의 입력 패턴(<pattern>태그로 정의)과 이에 반응하는 인비

챗봇의 출력(<template>태그로 정의)를 말합니다.

예제의 결과

User : 안녕하세요 인비.

Bot : 안녕하세요,만나서 반가워요!

Page 18: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

18

III-2. AIML : 기본 태그

Page 19: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

19

2. AIML 기본 태그

AIML를 이루는 4가지 기본 태그가 있습니다.

- <aiml>AIML 문서의 시작과 끝을 정의합니다

- <category> 인비bot의 지식 기반내의 지식 단위(unit of knowledge)를 정의합니다.

- <pattern> 사용자 입력과 매칭시킬 패턴 정의합니다.

- <template> 사용자 입력에 대한 반응(출력)을 정의합니다.

AIML 파일예시

<?xml version="1.0" encoding="UTF-8"?> <aiml>

<category>

<pattern>안녕하세요 인비</pattern>

<template>

안녕하세요,만나서 반가워요!

</template> </category>

</aiml>

<aiml> 태그

<aiml>태그는 AIML 문서의 시작과 끝을 표시합니다. 버전과 인코딩 속성을 통해 버전과 인코딩

정보를 확인할 수 있습니다. 버전 속성은 인비 챗봇의 지식 기반(Knowledge unit, KB)에 사용하는

AIML 버전을 표시합니다. 예제 코드에서는 1.0.버전을 사용합니다. 이것은 옵션으로 기능에 맞춰

원하는 버전으로 설정할 수 있습니다. 인코딩 속성은 어떤 문자 인코딩 방식인지를 표시합니다.

여기서 우리는 UTF-8을 사용하고 있습니다.

필수적 요구사항으로 <aiml>태그는 반드시 하나 이상의 <category> 태그를 포함해야 합니다.

우리는 하나의 <aiml>태그를 가진 많은 aiml 파일을 생성할 수 있습니다. 각기 다른 aiml파일의

목적은 인비 챗봇 KB에 카테고리라고 불리는 지식 단위(knowledge unit)을 하나 이상 추가하는

것입니다.

<?xml version="1.0" encoding="UTF-8"?> <aiml> ... </aiml>

<category> 태그

<category> 태그는 인비 봇의 기본적인 지식 단위입니다. 각 카테고리는 다음 사항을 포함합니다.

- 사용자 입력(문장 형태의 주장, 질의, 감탄사 등). 사용자 입력은 와일드 카드 *와 _를 포

함할 수 있습니다.

- 사용자 입력에 대한 인비 봇의 반응

- 선택 상황(Optional context)

<category>태그는 <pattern>태그와 <template>태그가 있어야 합니다. 여기서 <pattern>은 사

Page 20: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

20

용자의 입력을 나타내고, <template>은 봇의 응답을 나타냅니다.

<category>

<pattern>안녕하세요 인비</pattern>

<template>

안녕하세요,만나서 반가워요!

</template> </category>

위 예제에서 사용자가 ‘안녕하세요 인비’ 를 입력하면, 봇이 ‘안녕하세요, 만나서 반가워요’ 라고

응답할 것입니다.

<template>태그

<template>태그는 사용자에 입력에 대한 봇의 응답을 정의합니다. <category>내의 두 번째 태그

로 사용해야 합니다. <template>에서 다른 프로그램을 호출 할 수도 있습니다. 데이터를 저장하거

나, 조건부 답변을 제공하거나, 다른 카테고리로 위임하는 것도 가능합니다.

Page 21: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

21

III-3. AIML : <star> 태그

Page 22: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

22

3. AIML <star> 태그

<star>태그는 <pattern>태그에 *와 매칭되는 와일드 카드입니다. *는 사용자가 입력할 임의의 변

수입니다.

Syntax

<star index = "n"/>

위 구문에서 n은 *가 <pattern>태그의 사용자 입력 중 몇 번째에 위치하고 있는지 나타내는 숫

자입니다.

아래 예시를 보면 이해가 쉽습니다.

<category>

<pattern>나는 * 좋아해요</pattern>

<template>

저도 <star /> 좋아해요.

</template> </category> <category>

<pattern>* 랑 * 중에 누굴 더 좋아해</pattern>

<template>

나는 <star index="1"/> 랑 <star index="2"/> 둘 다 좋아해.

</template> </category>

만약 사용자가 “나는 축구를 좋아해요” 라고 입력하면, 봇은 “저도 축구 좋아해요” 라고 응답할

것입니다. 사용자가 패턴의 첫 번째 * 위치에 축구를 입력했습니다. <star index=”1”> 은 첫 번째

*에 입력한 변수를 뜻하므로, 축구가 됩니다.

<star>태그 예제

<?xml version="1.0" encoding="UTF-8"?> <aiml>

<category>

<pattern>나는 * 좋아해요</pattern>

<template>

저도 <star /> 좋아해요.

</template> </category> <category>

<pattern>* 랑 * 중에 누굴 더 좋아해</pattern>

<template>

나는 <star index="1"/> 랑 <star index="2"/> 둘 다 좋아해.

</template> </category>

</aiml>

결과 확인

Page 23: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

23

User: 나는 축구 좋아해요.

Bot: 저도 축구 좋아해요.

User: 호날두 랑 메시 중에 누굴 더 좋아해?

Bot: 나는 호날두랑 메시 둘 다 좋아해.

<star index="1"/>은 <star />로 입력할 수도 있습니다.

Page 24: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

24

III-4. AIML : <srai> 태그

Page 25: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

25

4. <srai>태그

<srai>는 다양한 목적으로 사용되는 태그입니다. 이 태그를 통해 AIML이 동일한 템플릿에 다른

응답을 정의할 수 있습니다.

Syntax

<srai> pattern </srai>

srai와 관하여 일반적으로 사용되는 용어는 다음과 같습니다.

- 기호 감소(Symbol Reduction)

- 분할 및 정복(Divide and Conquer)

- 동의어 해결(Synonyms resolution)

- 키워드 검색(Keywords detection)

기호 감소(Symbol Reduction)

기호 감소 기술(Symbolic reduction technique)은 패턴을 단순화 할 때 사용합니다. 이 기술로 복

잡한 문법 패턴을 간단한 문법패턴으로 줄일 수 있습니다. 복잡한 패턴 중 일부만을 지정해 동일

한 패턴이 있는지 확인하고, 동일한 패턴이 있다면 해당하는 카테고리와 연결하여 템플릿을 불러

옵니다.

의미는 같지만 표현은 다양한 패턴에 대응하기 위해 사용합니다. 예를 들어,

“너 에디슨이 누군지 알아?”

“너 혹시 에디슨이 누군지 알아?”

“전구 얘기가 나와서 말인데, 너 에디슨이 누군지 알아?”

위의 세 질문은 표현 패턴은 다양하지만 결국 “너 에디슨이 누군지 알아?”라는 질문입니다.

<srai>태그는 이런 다양한 질문에서 공통된 부분을 찾아 패턴을 단순화하고, 다른 카테고리의 다

양한 패턴과 연결시켜 응답할 수 있게 해줍니다.

이제 코드에 사용될 문장으로 예를 들어보겠습니다.

Human: 박효신은 누구야?

Bot: 박효신은 우리나라 최고의 발라드 가수야.

Human: 박지성은 누구야?

Bot: 박지성은 맨유에서 활약한 우리나라 최고의 축구선수야.

Human: 김연아는 누구야?

Bot: 김연아는 우리나라 최고의 피겨스케이팅 선수야.

위의 User의 질문의 특징을 하나의 형태로 정리해보면 다음과 같습니다

Human: (이름)은/는 누구야?

Page 26: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

26

여기서 <srai>태그가 작동합니다. 이 태그로 사용자 패턴에 따른 템플릿을 얻어올 수 있습니다.

Step 1: 카테고리 생성

<category>

<pattern>박효신은 누구야</pattern>

<template>박효신은 우리나라 최고의 발라드 가수야.</template>

</category> <category>

<pattern>박지성은 누구야</pattern>

<template>박지성은 맨유에서 활약한 우리나라 최고의 축구선수야.</template>

</category> <category>

<pattern>김연아는 누구야</pattern>

<template>김연아는 우리나라 최고의 피겨스케이팅 선수야.</template>

</category>

Step 2: <srai>태그를 사용해 포괄적 카테고리 생성

<category>

<pattern>* 누구야</pattern>

<template>

<srai><star/> 누구야</srai>

</template> </category>

기호 감소(Symbol Reduction) 예제

<?xml version="1.0" encoding="UTF-8"?> <aiml>

<category>

<pattern>박효신은 누구야</pattern>

<template>박효신은 우리나라 최고의 발라드 가수야.</template>

</category> <category>

<pattern>박지성은 누구야</pattern>

<template>박지성은 맨유에서 활약한 우리나라 최고의 축구선수야.</template>

</category> <category>

<pattern>김연아는 누구야</pattern>

<template>김연아는 우리나라 최고의 피겨스케이팅 선수야.</template>

</category> <category>

<pattern>* 누구야</pattern>

<template>

<srai><star/> 누구야</srai>

</template> </category>

</aiml>

Page 27: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

27

결과확인

User: 박효신은 누구야?

Bot: 박효신은 우리나라 최고의 발라드 가수야.

User: 박지성은 누구야?

Bot: 박지성은 맨유에서 활약한 우리나라 최고의 축구선수야.

User: 김연아는 누구야?

Bot: 김연아는 우리나라 최고의 피겨스케이팅 선수야.

분할 및 정복(Divide and Conquer)

분할 및 정복(Divide and Conquer)은 완전한 응답을 만드는 서브 문장을 재사용하는데 사용합니다.

이를 통해 여러 카테고리 정의를 줄일 수 있습니다.

Human: 잘가

Bot: 응 너도 잘가!

Human: 잘가 인비

Bot: 응 너도 잘가!

위 예시에서 사용자가 ‘잘가’를 입력하면, 봇이 ‘응 너도 잘가!’라고 응답하는 것을 알 수 있습니

다. 이제<srai>태그를 사용해보겠습니다.

Step 1: 카테고리 생성

<category>

<pattern>잘가</pattern>

<template>응 너도 잘가!</template>

</category>

Step 2: <srai> 태그를 사용한 포괄적 카테고리 생성

<category>

<pattern>잘가 *</pattern>

<template>

<srai>잘가</srai>

</template> </category>

분할 및 정복(Divide and Conquer) 예제

<?xml version="1.0" encoding="UTF-8"?> <aiml>

<category>

<pattern>박효신은 누구야</pattern>

<template>박효신은 우리나라 최고의 발라드 가수야.</template>

Page 28: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

28

</category> <category>

<pattern>박지성은 누구야</pattern>

<template>박지성은 맨유에서 활약한 우리나라 최고의 축구선수야.</template>

</category> <category>

<pattern>김연아는 누구야</pattern>

<template>김연아는 우리나라 최고의 피겨스케이팅 선수야.</template>

</category> <category>

<pattern>* 누구야</pattern>

<template>

<srai><star/> 누구야</srai>

</template> </category> <category>

<pattern>잘가</pattern>

<template>응 너도 잘가!</template>

</category> <category>

<pattern>잘가 *</pattern>

<template>

<srai>잘가</srai>

</template> </category>

</aiml>

결과확인

User: 잘가

Bot: 응 너도 잘가!

User: 잘가 인비

Bot: 응 너도 잘가!

동의어 해결(Synonyms resolution)

동의어는 비슷한 의미를 가진 단어입니다. 봇은 비슷한 단어를 동일한 방식으로 응답해야 합니다.

아래의 대화로 예를 들어보겠습니다

Human: 호날두

Bot: 축구선수

Human: 메시

Bot: 축구선수

사용자가 호날두나 메시를 입력하면, 봇은 축구선수라고 응답할 것임을 알 수 있습니다. <srai>

태그를 사용하여 적용해보겠습니다.

Page 29: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

29

Step 1: 카테고리 생성

<category>

<pattern>호날두</pattern>

<template>이 사람은 세계적인 축구선수야.</template>

</category>

Step 2: <srai> 태그를 사용한 포괄적 카테고리 생성

<category>

<pattern>메시</pattern>

<template>

<srai>호날두</srai>

</template> </category>

동의어 해결(Synonyms resolution) 예제

<?xml version="1.0" encoding="UTF-8"?> <aiml>

<category>

<pattern>박효신은 누구야</pattern>

<template>박효신은 우리나라 최고의 발라드 가수야.</template>

</category> <category>

<pattern>박지성은 누구야</pattern>

<template>박지성은 맨유에서 활약한 우리나라 최고의 축구선수야.</template>

</category> <category>

<pattern>김연아는 누구야</pattern>

<template>김연아는 우리나라 최고의 피겨스케이팅 선수야.</template>

</category> <category>

<pattern>* 누구야</pattern>

<template>

<srai><star/> 누구야</srai>

</template> </category> <category>

<pattern>잘가</pattern>

<template>응 너도 잘가!</template>

</category> <category>

<pattern>잘가 *</pattern>

<template>

<srai>잘가</srai>

</template> </category>

Page 30: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

30

<category>

<pattern>호날두</pattern>

<template>이 사람은 세계적인 축구선수야.</template>

</category> <category>

<pattern>메시</pattern>

<template>

<srai>호날두</srai>

</template> </category>

</aiml>

결과확인

User: 호날두

Bot: 이 사람은 세계적인 축구선수야.

User: 메시

Bot: 이 사람은 세계적인 축구선수야.

키워드 검색(Keywords Detection)

srai를 사용하여, 특정 단어가 사용자가 입력한 문장 어디에 있는 지와 관계없이 단어를 찾아내고

간단히 응답할 수 있습니다. 아래 대화는 호날두라는 특정 단어로, 키워드 검색을 수행한 예시입

니다.

Human: 호날두

Bot: 호날두는 레알마드리드에서 뛰고 있는 세계적인 축구선수야.

Human: 크리스티아누 호날두 프로필

Bot: 호날두는 레알마드리드에서 뛰고 있는 세계적인 축구선수야.

문장 어디에 호날두라는 단어가 들어가던지 표준 응답인 “호날두는 레알마드리드에서 뛰고 있는

세계적인 축구선수야.”이 출력됩니다.

이제 <srai> 태그에 적용해봅시다. 우리는 여기서 와일드카드를 사용할 것입니다.

Step 1: 카테고리 생성

<category>

<pattern>호날두</pattern>

<template>호날두는 레알마드리드에서 뛰고 있는 세계적인 축구선수야.</template>

</category>

Step 2: <srai> 태그를 사용한 포괄적 카테고리 생성

<category>

<pattern>_ 호날두</pattern>

Page 31: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

31

<template>

<srai>호날두</srai>

</template> </category> <category>

<pattern>_ 호날두</pattern>

<template>

<srai>호날두</srai>

</template> </category> <category>

<pattern>호날두 *</pattern>

<template>

<srai>호날두</srai>

</template> </category> <category>

<pattern>_ 호날두 *</pattern>

<template>

<srai>호날두</srai>

</template> </category>

키워드 검색(Keywords Detection) 예제

<?xml version="1.0" encoding="UTF-8"?> <aiml>

<category>

<pattern>박효신은 누구야</pattern>

<template>박효신은 우리나라 최고의 발라드 가수야.</template>

</category> <category>

<pattern>박지성은 누구야</pattern>

<template>박지성은 맨유에서 활약한 우리나라 최고의 축구선수야.</template>

</category> <category>

<pattern>김연아는 누구야</pattern>

<template>김연아는 우리나라 최고의 피겨스케이팅 선수야.</template>

</category> <category>

<pattern>* 누구야</pattern>

<template>

<srai><star/> 누구야</srai>

</template> </category> <category>

<pattern>잘가</pattern>

<template>응 너도 잘가!</template>

</category>

Page 32: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

32

<category>

<pattern>잘가 *</pattern>

<template>

<srai>잘가</srai>

</template> </category> <category>

<pattern>호날두</pattern>

<template>이 사람은 세계적인 축구선수야.</template>

</category> <category>

<pattern>메시</pattern>

<template>

<srai>호날두</srai>

</template> </category> <category>

<pattern>호날두</pattern>

<template>호날두는 레알마드리드에서 뛰고 있는 세계적인 축구선수야.</template>

</category> <category>

<pattern>_ 호날두</pattern>

<template>

<srai>호날두</srai>

</template> </category> <category>

<pattern>_ 호날두</pattern>

<template>

<srai>호날두</srai>

</template> </category> <category>

<pattern>호날두 *</pattern>

<template>

<srai>호날두</srai>

</template> </category> <category>

<pattern>_ 호날두 *</pattern>

<template>

<srai>호날두</srai>

</template> </category>

</aiml>

결과확인

User: 호날두 누구야?

Page 33: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

33

Bot: 호날두는 레알마드리드에서 뛰고 있는 세계적인 축구선수야.

User: 호날두 정보

Bot: 호날두는 레알마드리드에서 뛰고 있는 세계적인 축구선수야.

User: 크리스티아누 호날두

Bot: 호날두는 레알마드리드에서 뛰고 있는 세계적인 축구선수야.

Page 34: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

34

III-5. AIML : <random> 태그

Page 35: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

35

5. AIML <random> 태그

<random> 태그는 이름에서 알 수 있듯 임의의 응답을 출력하기 위해 사용합니다. 이 태그는

AIML이 같은 입력에 대해 다양한 출력을 할 수 있도록 합니다. <random>태그는 <li>태그들과

함께 사용됩니다. <li>태그들에 있는 서로 다른 응답이 중 하나가 임의로 사용자에게 출력됩니다.

Syntax

<random> <li> pattern1 </li> <li> pattern2 </li> ... <li> patternN </li> </random>

아래의 대화를 예시로 진행해보겠습니다.

Human: 안녕하세요

Bot: 응! 안녕? 만나서 정말 반가워.

Human: 안녕하세요

Bot: 안녕?넌 이름이 뭐야?

Human: 안녕하세요

Bot: 반가워,난 인비야.

Human: 안녕하세요

Bot: 안녕하세요.처음 뵙겠습니다.

예제

<?xml version="1.0" encoding="UTF-8"?> <aiml> <category>

<pattern>안녕하세요</pattern>

<template> <random>

<li> 응! 안녕? 만나서 정말 반가워.</li>

<li> 안녕?넌 이름이 뭐야? </li>

<li> 반가워,난 인비야.</li>

<li> 안녕하세요.처음 뵙겠습니다.</li>

</random> </template>

</category>

</aiml>

결과 확인

User: 안녕하세요

Bot: 응! 안녕? 만나서 정말 반가워.

User: 안녕하세요

Page 36: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

36

Bot: 안녕?넌 이름이 뭐야?

User: 안녕하세요

Bot: 반가워,난 인비야.

User: 안녕하세요

Bot: 안녕하세요.처음 뵙겠습니다.

다양한 응답이 출력되는 것을 확인할 수 있을 것입니다.

Page 37: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

37

III-6. AIML : <set>, <get> 태그

Page 38: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

38

6. AIML <set>, <get> 태그

<set>, <get> 태그는 AIML의 변수를 설정하고, 가져올 때 사용합니다. 변수는 미리 정의되었을

수도 있고, 프로그래머가 정의할 수도 있습니다.

Syntax - <set>

<set name = "variable-name"> variable-value </set>

Syntax - <get>

<get name = "variable-name"></get>

아래 대화를 예시로 설명하겠습니다.

Human: 내 이름은 메시입니다

Bot: 반가워 메시

Human: 잘자

Bot: 잘자 메시. 오늘 만나서 반가웠어.

예제

<?xml version="1.0" encoding="UTF-8"?> <aiml>

<category>

<pattern>내 이름은 * 입니다</pattern>

<template>

반가워 <set name="username"><star/></set>

</template> </category> <category>

<pattern>잘자</pattern>

<template>

잘자 <get name="username"/>. 오늘 만나서 반가웠어.

</template> </category>

</aiml>

결과 확인

User: 내 이름은 메시 입니다

Bot: 반가워 메시

User: 잘자

Bot: 잘자 메시. 오늘 만나서 반가웠어.

Page 39: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

39

III-7. AIML : <that> 태그

Page 40: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

40

7. AIML <that> 태그

<that>태그는 AIML이 문맥에 맞는 응답이 가능하도록 합니다.

Syntax

<that> template </that>

아래 대화를 예시로 설명하겠습니다.

Human: 축구 좋아해요?

Bot: 네, 저 축구 엄청 좋아해요. 야구는 좋아하세요?

Human: 아니요

Bot: 아 그러시구나. 당연히 야구도 좋아하실줄 알았어요.

예제

<?xml version="1.0" encoding="UTF-8"?> <aiml>

<category>

<pattern>축구 좋아해요</pattern>

<template>네, 저 축구 엄청 좋아해요. 야구는 좋아하세요?</template>

</category> <category>

<pattern>네</pattern><that>야구는 좋아하세요</that>

<template>야구도 좋아하시는 줄은 몰랐네요. 다음에 같이 보러가요.</template>

</category> <category>

<pattern>아니요</pattern><that>야구는 좋아하세요</that>

<template>아 그러시구나. 당연히 야구도 좋아하실줄 알았어요.</template>

</category>

</aiml>

결과 확인

User: 축구 좋아해요?

Bot: 네, 저 축구 엄청 좋아해요. 야구는 좋아하세요?

User: 아니요

Bot: 아 그러시구나. 당연히 야구도 좋아하실줄 알았어요.

Page 41: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

41

III-8. AIML : <topic> 태그

Page 42: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

42

8. AIML <topic> 태그

<topic>태그는 문맥을 저장하여 대화가 문맥을 기반으로 수행될 수 있도록 해주는 태그입니다.

일반적으로 <topic> 태그는 yes/no 타입 대화에 사용됩니다. AIML은 <topic>에 저장된 문맥에

따라 카테고리를 찾습니다.

Syntax

<set>태그를 사용해 토픽을 설정합니다.

<template> <set name="topic-name"> topic </set></template>

<topic>태그를 사용해 카테고리를 정의합니다.

<topic name="topic-name"> <category> ... </category> </topic>

아래 대화를 예시로 예제를 진행하도록 하겠습니다.

Human: 축구에 관심있니?

Bot: 응 축구 당연히 좋아하지.

Human: 축구에 대해서 어떻게 생각해?

Bot: 축구는 정말 최고의 스포츠야.

Human: 응원하는 팀 있어?

Bot: 응, 나는 레알마드리드 팬이야.

여기서 봇은 “축구”를 토픽으로 사용할 것입니다.

예제

<?xml version="1.0" encoding="UTF-8"?> <aiml> <category>

<pattern>축구에 관심 있니</pattern>

<template>응 <set name="topic">축구</set>당연히 좋아하지.</template>

</category>

<topic name="축구">

<category> <pattern> * </pattern>

<template>축구는 정말 최고의 스포츠야.</template>

</category> <category>

<pattern>응원하는 팀 있어</pattern>

<template>응, 나는 레알 마드리드 팬이야.</template>

</category> </topic>

</aiml>

Page 43: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

43

결과 확인

User: 축구에 관심 있니?

Bot: 응 축구 당연히 좋아하지.

User: 축구에 대해서 어떻게 생각해?

Bot: 축구는 정말 최고의 스포츠야.

User: 응원하는 팀 있어?

Bot: 응, 나는 레알 마드리드 팬이야.

Page 44: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

44

III-9. AIML : <think> 태그

Page 45: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

45

9. AIML <think>태그

<think>태그는 사용자에게 별도의 알림 없이 변수를 저장할 때 사용합니다. <think> 태그 안에

있는 내용들은 분명히 동작하나 외부 출력에서는 보이지 않습니다.

Syntax

<think> <set name="variable-name"> variable-value </set></think>

아래 대화를 예시로 예제를 진행하도록 하겠습니다.

Human: 내 이름은 지성 이야.

Bot: 반가워 지성

Human: 잘가

Bot: 그래 지성, 다음에 또 보자!

예제

<?xml version="1.0" encoding="UTF-8"?> <aiml>

<category>

<pattern>내 이름은 * 이야</pattern>

<template>

반가워 <think><set name="username"> <star/></set></think>

<get name="username"/> </template>

</category> <category>

<pattern>잘가</pattern>

<template>

그래 <get name="username"/>, 다음에 또 보자!

</template> </category>

</aiml>

결과 확인

User: 내 이름은 지성 이야.

Bot: 반가워 지성

User: 잘가

Bot: 그래 지성, 다음에 또 보자!

Page 46: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

46

III-10. AIML : <condition> 태그

Page 47: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

47

10. AIML <condition> 태그

<condition>태그는 프로그래밍 언어의 switch문과 유사합니다. 인비가 입력에 맞춰 반응하도록

하는 태그입니다.

Syntax

<condition name="variable-name" value="variable-value"/>

아래 대화를 예시로 예제를 진행하도록 하겠습니다.

Human: 좋아하는 축구선수가 누구야?

Bot: 나는 레알 마드리드의 크리스티아누 호날두를 좋아해.

여기서 인비가 “나는 레알 마드리드의 크리스티아누 호날두를 좋아해.” 라고 응답했기 때문에, 인

비의 현재 상태를 ‘호날두’로 저장하겠습니다.

예제

<?xml version="1.0" encoding="UTF-8"?> <aiml> <category>

<pattern>축구선수 *</pattern>

<template> <think> <random>

<li><set name='soccerplayer' >호날두</set></li>

<li><set name='soccerplayer' >메시</set></li>

<li><set name='soccerplayer' >즐라탄</set></li>

</random> </think>

<condition name='soccerplayer' value='호날두'>

나는 레알마드리드의 크리스티아누 <get name='soccerplayer' ></get>

를 좋아해요.호~우!

</condition>

<condition name='soccerplayer' value='메시' >

나는 FC바르셀로나의 리오넬 <get name='soccerplayer' ></get>를 좋아해요.

</condition>

<condition name='soccerplayer' value='즐라탄' >

나는 ManUtd의 <get name='soccerplayer' ></get> 이브라히모비치를 좋아해요.

나이를 먹어도 더 잘하는 것 같아요.

</condition> </template>

</category> </aiml>

결과 확인

User: 축구선수 누구좋아해?

Page 48: DIY CHATBOT BUILDER MANUAL...2.  (인비bot 지 기반의) 지 단위를 정의합니다. 3.  사용자 력과 매칭킬 패턴을 정의합니다. 4.

www.inbi.ai

48

Bot: 나는 나는 레알마드리드의 크리스티아누 호날두를 좋아해요.호~우!

User: 축구선수 누구좋아해?

Bot: 나는 FC바르셀로나의 리오넬 메시를 좋아해요.

User: 축구선수 누구좋아해?

Bot: 나는 ManUtd의 즐라탄 이브라히모비치를 좋아해요.나이를 먹어도 더 잘하는 것 같아요.