티스토리 뷰
챗봇의 질문에 사용자가 늘 기대한 형식대로 답변을 하는 것은 아니다. 예를 들어 “좋아하는 가수 있어요?”라고 물었을 때 사용자의 답변은 크게 아래와 같이 두 가지가 가능하다.
A. 저는 2NE1을 좋아해요
B. 저는 2NE1을 안 좋아해요
위 답변의 어려운 점은 구문 형식은 흡사한데 뜻은 정반대라는 점이다. 우선 예제 A를 위한 패턴을 작성해 보자.
C. u: ( ~2NE1 좋아* )
이 패턴은 “저는 2NE1을 좋아해요”, “저는 2NE1이 좋아요” 등의 입력문과 매칭될 수 있다. 이제 사용자가 “무척 좋아해요”, “아주 많이 좋아해요” 등의 강조형으로 입력할 경우를 대비하여 패턴을 수정하면,
D. u: ( ~2NE1 *~2 좋아* )
그런데 이 패턴은 예제 B와도 매칭이 된다는 점이 문제이다. 이런 경우는 2장 4절에서 설명했던 제외 명령어 ! (느낌표)를 사용하여 처리할 수 있다.
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
- 한글챗봇 우리말챗봇 인공지능챗봇 ai챗봇
- 한국어챗봇
- Chatscript AI 인공지능 챗봇 chatbot
- 소프트봇 채터봇
- 챗봇개발 채팅로봇 한국챗봇
- chatscript chatbot 챗봇 한국어챗봇 ai 인공지능
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |