티스토리 뷰
사용자가 챗봇에게 “좋아하는 노래 있어요?”라고 묻는 상황을 가정해 보자. 이때 사용자는 아래와 같이 물어볼 수 있다.
A. 좋아하는 노래 있어요?
B. 노래 좋아하는 거 있어요?
어순이 중요한 영어에서도 구어의 경우 어순을 무시하는 경우가 많다고 하는데, 한국어와 같이 어순이 중요하지 않은 언어의 경우는 어순이 더더욱 무시될 수 있다. 이런 경우에는 순서에 상관없이 패턴과 사용자 입력문을 비교하는 것이 필요하다. 이때 사용하는 명령어가 << >>이다.
C. u: (<< 좋아* 노래 >>) 예. I love you를 좋아해요.
패턴에 << >> 명령어가 있으면 CS엔진은 단어의 나열된 순서에 상관없이 그 단어들이 사용자 입력문에 나타나는가를 조사하여 매칭여부를 판단한다. 이제 룰C가 어떻게 사용자 입력문 B와 매칭되는지 확인해 보기로 하자.(A와 매칭되는 것은 추가 설명이 필요 없을 것이다.)
사용자가 B문장을 입력하면 CS는 패턴의 첫번째 단어인 “좋아*”를 선택해 사용자 입력문 B와 비교한다. “좋아*”는 좋아하는, 좋아했던, 좋아한 등 “좋아”로 시작하는 어떤 단어와도 매칭이 된다. 입력문 B에서 발견하였다. 이제 패턴의 두 번째 단어인 “노래”라는 단어를 사용자 입력문에서 찾는다. 이때는 단어의 확장없이 정확하게 “노래”라는 단어를 찾는다.
그런데 << >> 명령어가 있기 때문에 CS는 순서에 상관없이 찾기 위해 “노래”라는 단어를 사용자 입력문의 맨 앞으로 가서 처음부터 찾기 시작한다. 만약 << >>가 없었다면 “노래”라는 단어는 “좋아하는”을 발견한 다음 위치부터 찾았을 것이다.
결과적으로 사용자 입력문에서 “노래”라는 단어가 먼저 나타나도 되고(입력문 B) “좋아하는”이라는 단어가 먼저 나타나도 된다.(입력문 A) 이 두 단어가 순서에 상관없이 사용자 입력문에 나타나기만 하면 이 룰은 참으로 평가되고 결국 뒤에 있는 출력문 “예, I love you를 좋아해요”가 출력된다.
이 순서없는 매칭은 지정된 두 단어의 순서에 상관없기 때문에 두 단어 사이에 다른 단어가 와도 상관이 없다. 예를 들어
A. u: ( <<티아라* 노래*>> )
룰D는 “노래하는 티아라”, “티아라가 노래한다” 뿐만 아니라 “티아라가 부르는 노래”, “티아라가 작곡하고 녹음한 노래” 등 “티아라*”와 “노래*”사이에 어떤 단어가 있더라도 매칭이 된다. 순서에 상관없이 이 두 단어가 나타나기만 하면 되기 때문이다. 달리 말해 << >> 사이에는 와일드카드를 삽입하는 것이 의미 없다는 뜻이며 만약 추가하였다면 컴파일 할 때 에러를 보여 준다.
이 순서없는 매칭은 한국어, 특히 한국어 구어에서 무척 유용한 규칙이므로 잘 기억해 두기로 하자.
'3장. 기초 대화 가르치기' 카테고리의 다른 글
6. 동의어와 집합 (2) | 2016.05.12 |
---|---|
5. 정반대로 알아 듣지 않기 (0) | 2016.05.12 |
4. 사용자 응답 예상하기 (예상 응답) (0) | 2016.05.11 |
2. 듣고 말하기 (0) | 2016.05.11 |
1. 말걸기 (화제 제시하기) (0) | 2016.05.10 |
- Total
- Today
- Yesterday
- chatscript chatbot 챗봇 한국어챗봇 ai 인공지능
- 한국어챗봇
- Chatscript AI 인공지능 챗봇 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 |