티스토리 뷰


예제 대화문


챗봇의 질문에 사용자가 늘 기대한 형식대로 답변을 하는 것은 아니다. 예를 들어 좋아하는 가수 있어요?”라고 물었을 때 사용자의 답변은 크게 아래와 같이 두 가지가 가능하다.

 

A.     저는 2NE1을 좋아해요

B.     저는 2NE1을 안 좋아해요

 

위 답변의 어려운 점은 구문 형식은 흡사한데 뜻은 정반대라는 점이다. 우선 예제 A를 위한 패턴을 작성해 보자.

 

C.     u: ( ~2NE1 좋아* )

 

이 패턴은 저는 2NE1을 좋아해요”, “저는 2NE1이 좋아요등의 입력문과 매칭될 수 있다. 이제 사용자가 무척 좋아해요”, “아주 많이 좋아해요등의 강조형으로 입력할 경우를 대비하여 패턴을 수정하면,

 

D.     u: ( ~2NE1 *~2 좋아* )

 

 그런데 이 패턴은 예제 B와도 매칭이 된다는 점이 문제이다. 이런 경우는 24절에서 설명했던 제외 명령어 ! (느낌표)를 사용하여 처리할 수 있다.

 

A.     u: ( !~2NE1 *~2 좋아* )

 

언뜻 보면 다소 복잡해 보이지만 하나씩 차근히 살펴보면 매우 단순한 규칙이다.

    !: 사용자 입력문에 이라는 단어가 나타나면 매칭을 중단하고 다른 룰을 검토한다. 따라서 “2NE1을 좋아해“2NE1을 안 좋아해를 구별할 수 있게 된다.

    ~2NE1 : 컨셉 ~2NE1에 포함된 어떤 단어라도 사용자 입력문에 나타나면 매칭된다. 사용자가 2NE1을 영어로 표기하든 한글로 표기하든 다 알아들을 수 있다. 컨셉 ~2NE1에 한글표기, 영어표기, 오탈자 표기 등을 모두 포함시키면 된다.

    *~2 : “2NE1”좋아사이에 아무런 단어가 없어도 되고, 한 개의 단어가 있어도 되고 두 개의 단어가 있어도 된다는 뜻이다. 2개까지 허용한다는 명령어이다. 이로써 “2NE1을 좋아해요”, “2NE1을 무척 좋아해요”, “2NE1을 아주 많이 좋아해요등과 매칭될 수 있다. 단어를 제한하지 않을 경우, 다소 극단적인 예이기는 하지만, “2NE1을 예전에 좋아했었는데 지금은 악동 뮤지션을 더 좋아해요와도 매칭이 될 수 있기 때문이다.

    좋아* : “좋아의 여러 활용형을 매칭할 수 있도록 부분 와일드 카드를 썼다. 좋아, 좋아해, 좋아해요, 좋습니다 등과 매칭된다.

 

제외 명령어는 한 패턴에서 여러 번 나올 수도 있고 아래와 같이 선택 연산자([ ] 꺽은 괄호)와 함께 쓰일 수도 있다.

 

B.     u: ( !!파랑

C.     u: ( ![안 파랑]

 

F는 사용자 입력문에 파랑이라는 단어가 동시에 나와서는 안된다는 뜻이며 룰H는 사용자 입력문에 또는 파랑둘 중의 어느 하나라도 나와서는 안된다는 뜻이다.

 

예제 대화를 위한 스크립트


'3장. 기초 대화 가르치기' 카테고리의 다른 글

7. 기본형과 활용형  (0) 2016.05.12
6. 동의어와 집합  (2) 2016.05.12
4. 사용자 응답 예상하기 (예상 응답)  (0) 2016.05.11
3. 어순에 관계없이 알아듣기  (0) 2016.05.11
2. 듣고 말하기  (0) 2016.05.11
댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
글 보관함