티스토리 뷰

예제 대화문


챗봇이 K-POP을 좋아하냐고 물은 후, 사용자의 대답을 듣고 그에 적합한 응대를 함으로써 대화를 이어 나가는 예제이다. 이와 같은 대화가 가능하기 위해서는 첫째 사용자의 말을 들어야 하며 둘째 들은말에 대응하는 규칙이 준비되어 있어야 한다

사용자의 말을 잘 듣는다는 것은, 사용자가 이렇게 말할 것이다라고 예상하여 그 말과 매칭이 가능하도록 패턴을 준비해 놓는 것을 뜻한다. 위의 대화를 위한 스크립트를 보면,


패턴의 예


로 작성되어 있는데 먼저 룰의 형식을 다시 한 번 복습해 보자.



룰의 형식


이 룰은 사용자 입력문(u:)이 패턴(괄호 안의 내용)과 일치하면 오른쪽의 출력문을 출력하라는 룰이다. 이런 형식의 룰을 응답하기(responder) 룰이라고 부른다. 즉 사용자의 말에, 그것이 의문문이든 평서문이든 관계없이, 챗봇이 응답하는 방법을 정의한 룰을 응답하기 룰이라고 부른다. 참고로 위의 룰은 라벨을 사용하지 않았다.  

그런데 위의 예에서 “K-POP 좋아하세요?”라는 질문에 대한 사용자의 답변은 훨씬 더 다양할 수 있다. 예를 들면,

 

Bot > K-POP 좋아하세요?

User> .

, 좋아해요.

, 아주 좋아합니다..

그럼요, 무척 좋아해요.

아주 좋아해요.

. 아주 많이 좋아하거든요.

당연하죠.

당근이죠.

 

간단히 라고 답할 수도 있고 , 좋아해요라고 의지 감탄사 뒤에 좋아합니다라고 덧붙여 확인을 해 줄 수도 있으며, “아주라는 부사를 덧붙여 강조를 할 수도 있다. 또한 라는 말 없이 바로 아주 좋아해요라고 답할 수도 있으며 아주라는 부사 대신에 무척이라는 부사를 사용할 수도 있다. 심지어 당근이죠라는 유행어를 사용할 수도 있다. 이와 같이 사용자는 동일한 뜻을 다양하게 변형하여 표현할 수 있기 때문에 패턴은 가능한 일반화시켜 작성하여야 한다. 이를 위해 아래의 세 가지 명령어를 사용할 수 있다.

 

    선택 매칭 : [ ] (꺽은 괄호)

    컨셉 : ~ (물결 또는 틸드라고 읽음. 숫자 키보드 1의 왼쪽에 있는 자판 위에 있음)

    와일드카드 : * (스타 또는 애스터리스크라 읽음. 숫자 키보드 8위에 있음)

 

선택 매칭이라는 것은 꺽은 괄호 안에 나열된 단어 중 어느 하나와 일치하면 된다는 뜻이다. 예를 들어 예상되는 사용자 답변이 , , 그럼요, 당근이지4가지 라고 할 때 이들 단어를 꺽은 괄호 안에 써 주면 사용자가 이 넷 중 무엇으로 대답해도 매칭이 된다.

 

A.     u: ( [예 응 그럼요 당근이지] 좋아해요)

 

그런데, 이런 답변은 여러 곳에서 반복해 사용될 수 있기 때문에 그때마다 나열하여 작성하는 것은 비효율적이다. 이런 경우는 아래와 같이 컨셉을 만들어서 간편하게 사용할 수 있다.

 

concept: ~ [ 예 응 그럼요 당연하지 당근이지 ]

u: ( ~예 좋아해요) 그럼, 좋아하는 가수가 있어요?

 

이제 사용자의 예상 답변 중 좋아해요, 아주 좋아합니다, 아주 많이 좋아하거든요에 매칭될 수 있도록 패턴의 뒷부분을 수정하면 되는데, 이는 2 3절에서 설명한 바와 같이 와일드카드를 사용하면 수용할 수 있다.

 

B.     u: (~ *~2 좋아*)

 

위의 패턴에는 두 종류의 와일드 카드를 사용하였는데 첫째는 단어 개수 한정 와일드 카드인 *~2와 부분 와일드카드 좋아*”가 그것이다. 단어 개수 한정 와일드카드 *~2좋아해요앞에 아무 단어도 안 오거나, 또는 한 단어가 오거나, 또는 두 단어가 오거나를 허용한다는 뜻으로 보통 수식어 자리의 단어와 매칭시킬 때 유용하다. 보통 명사나 동사 앞에 수식어가  1~2개 오므로 *~2를 사용하는 것이 경험상 타당하다 할 수 있다. 두 번째 사용한 부분 와일드카드 좋아*”좋아로 시작하는 단어와 무엇이든 매칭이 될 수 있다는 뜻이다. 좋아해요, 좋아합니다. 좋아했어요, 좋아하거든요 등.

이제 이상의 논의를 종합하면 앞의 룰은 아래와 같이 일반화시켜 작성할 수 있다.

 

Topic: ~KPOP [ ~투애니원 ~티아라 ~마마무]

t: 혹시 K-POP 좋아하세요?

u: (~ *~2 좋아*)[1] 그럼, 좋아하는 가수가 있어요?

 


예제 대화문을 위한 스크립트




[1] 논의의 초점을 흐리지 않기 위해 좋아해요를 동일한 패턴 내에 썼지만 의지감탄사 는 명사, 형용사, 동사 등과는 달리 취급되기 때문에 패턴을 다르게 작성해야 한다. 자세한 내용은 제 4 9절에서 설명하기로 하겠다.


댓글
댓글쓰기 폼