티스토리 뷰
사용자의 질문에 대한 답을 스크립트 내에서 예상답변으로 준비할 수도 있지만 지식베이스에 지식으로 구축해 놓고 필요할 때 검색해서 답할 수도 있다. 어떤 방법을 선택할 것인가는 작성자의 판단이지만 보통 음악, 영화, 책, 스포츠, 가수, 배우, 작가, 운동선수 등 그 수가 방대할 때는 스크립트 내에 준비하기 보다 지식베이스로 구축하는 것이 반복 작업도 줄이고 코드를 읽기에도 더 효율적이다.
이제 지식베이스를 이용하는 대표적인 상황을 알아 보기로 하자. 먼저 사용자가 챗봇에게 개인 신상을 묻는 경우이다.
A. #! 너 학교에 다니니?
?: ( << ~너 _*1 다니니? >> ) if(^query(direct_svo 나 다니다 _0)) {예.} else {아니오.}
사람은 누군가를 알게 되면 점점 더 개인 신상에 대해 궁금해지게 마련이다. 챗봇에게도 신상에 대해 여러 가지 질문을 할 수 있는데, 이때 지식베이스에서 확인해서 답할 수 있다. “무엇을 좋아하다”, “어딘가 다닌다”, “무슨 운동을 해 보았다”, “무슨 영화를 보았다” 등과 같이 취향이나 경험을 묻는 질문에 대비하여 미리 지식베이스에 지식을 구축해 놓았다고 가정하고, 위의 예문을 보면, 먼저 “너”라는 말로 시작을 하는 경우 신상에 관한 질문이라 가정을 하고 사용자의 발언을 받아 지식베이스에서 확인하고 있다. “학교에 다니니?”, “유치원에 다니니?”, “회사에 다니니?”, “수영장에 다니니?” 등 다양한 질문이 가능한데 사용자 질문과 정확히 일치하는 사실이 있을 경우에만 “예” 라고 답하고 그 외의 경우에는 모두 “아니오” 라고 답하고 있다. “예”와 “아니오”라는 답변이 { }로 싸여 있는 점에 주목하자. 조건이 참일 수도 있고 거짓일 수도 있기 때문에 해당될 때만 출력되도록 { }로 묶었다. 질의문도 사용자 질문과 정확히 일치하는 사실을 찾도록 direct_svo로 지정하였다.
개인의 신상에 관한 내용, 예를 들면 신체적인 특징부터 가족, 친구, 기호, 취미, 경험 등을 적어보면 무척 많은 항목이 나온다. 좀 더 쉽게 시작할 수 있도록 7장 (1)절에 주요 항목들을 정리하였으니 이를 토대로 챗봇의 신상을 지식베이스로 만들도록 하자.
진도를 나가기 전에 복습을 겸해 한 가지 정리를 해 보려 한다. 예를 들어 “좋아하는 가수가 누구에요?”라는 질문과 같이 답변의 폭이 넓은 경우를 생각해 보자. 좋아하는 배우, 좋아하는 음악, 좋아하는 요리, 좋아하는 운동선수 등 이런 부류의 질문은 무척 많다. 이런 질문에 대해서는 예상응답(rejoinder), 응답전용 토픽(reactor topic), 지식베이스(facts)의 세 가지 형식으로 준비할 수 있는데 먼저 예상응답(rejoinder)으로 작성해 보면
B. t: 좋아하는 가수가 누구요?
a: (투애니원)
a: (티아라)
a: (마마무)
……
이 방식의 단점은 너무 길어져서 (대한가수협회에 등록된 가수만 3천 여명이고 이중 유명 가수만 선별한다고 하고 외국 유명가수까지 합하면 최소 수 백 줄이 될 것임) 스크립트를 읽어 나가는데 방해가 된다는 점이다. 두 번째 방법은 2장 3절에서 소개한 응답전용 토픽(reactor topic)을 만든 후 아래와 같이 호출하는 것이다.
C. t: 좋아하는 가수가 누구에요?
u: ( ~가수) ^respond(~FaveSinger)
위에서 ~FaveSinger라는 토픽은 말걸기나 조건식, 변수 등 없이 오직 수 많은 가수들의 이름과 그 각각에 대한 챗봇의 응답 만을 정리해 놓은 토픽이다. 그래서 응답전용 토픽이라 이름 부르는데 위와 같이 ^respond함수로 호출하여 사용할 수 있다.[1] 위의 장점은 본문 스크립트가 무척 간결해져서 대화의 흐름을 확인하는데 방해가 되지 않는다는 점이다. 세번째 방법은 앞 절에서 설명한 지식베이스로 만들어 답변하는 방식이다. 이 3가지 방식 중에 어떤 것을 선택할 것인가는 작성자의 개인적인 선호에 달려있다. 다만, RawData/WorldData 폴더를 보면 영화, 책, 색상, 음악, 동물 등 다종다양한 내용들이 createfacts로 만들어져 있는 것에서 알 수 있듯이 “사실의 저장과 확인”에는 지식베이스가 가장 효율적이라 점을 고려하는 것이 좋겠다.
이제 지식베이스를 이용하는 두번째 상황에 대해 알아보자. 두번째 상황은 지식을 묻는 경우이다. 역사나 지리 뿐만 아니라 동물, 식물, 우주, 자동차, 교향곡 등 매우 광범위한 분야가 해당된다.[2] 여기서는 여행지에 관한 예를 살펴 보기로 하자.
D. Topic: ~여행지 [ ~도시 ~팔도 ~교통 ~숙박]
#! 담양이 전라북도에 있어요?
?: (<< _~도시 ~팔도>> ^query(direct_sv _0 part ?)) _0은 @0object에 속합니다.
위의 룰이 시행되기 위해서는 다음과 같은 내용이 미리 준비되어 있어야 한다.
① concept : ~도시사전 NOUN [ 담양 담양이 담양에 담양은 칠곡 칠곡이 ]
② concept : ~팔도사전 NOUN [ 전라북도 전라북도에 전북 전북에 ]
③ canon : 담양이 담양 담양에 담양 담양에서 담양
④ canon : 전라북도에 전라북도 전북에 전북
⑤ concept : ~도시 [ 담양 칠곡 구례 하동 산청 ]
⑥ concept : ~팔도 [ 경기도 충청남도 충남 전라북도 전북 전라남도 전남 ]
⑦ ^createfact ( 담양 part 전라남도 )
먼저 대화에 사용할 단어를 모두 사전에 등록한다. (1번과 2번) ~도시사전, ~팔도사전이라는 이름은 임의로 정한 것이다. 이때 조사가 붙은 형태까지 모두 등록하여야 하며 사용할 법한 조사는 모두 붙여서 등록한다. 두번째로 입력형과 기본형을 등록한다.(3번과 4번) canon 명령어 뒤에 위와 같이 입력형과 기본형을 순차적으로 나열하면 앞에서부터 차례로 두 개씩 쌍으로 읽어 들여 기본형으로 등록하게 된다. 세번째는 기본형을 이용해서 컨셉을 만드는 단계이다. (5번과 6번) 여기에서도 ~도시라는 이름과 ~팔도라는 이름은 임의로 작성한 것이다. 조사가 붙은 형태를 기본형으로 등록해 놓았기 때문에 이곳에서는 기본형과 열거해도 된다. 이렇게 만든 컨셉을 토픽의 키워드에 등록하고 사용자 입력문을 매칭시키는 패턴으로 사용하였다. (룰D 참조) 마지막으로 기본형을 이용해서 지식을 만든다. (7번) 위의 예시에서 각 컨셉의 구성요소들 중 일부는 생략하였다. 이곳에서는 형식을 보여주는데 초점을 맞췄다.
룰D를 읽어 보면, 우선 사용자가 컨셉 ~도시와 컨셉 ~팔도에 포함된 단어를 이야기하면 매칭이 된다. 그러면 사용자가 입력한 ~도시에 해당하는 단어가 어디 소속인지 지식베이스에 질문을 던지는데, 해당되는 지식은 7번의 형식으로 만들어져 있으므로 목적어를 찾으면 된다. 주어 자리에는 사용자가 입력한 도시명(_0)을 놓고 동사자리에는 part를 놓고 목적어 자리에는 ?(물음표)를 놓는다. 주어와 동사를 지정하였으므로 쿼리문의 유형은 direct_sv이다. 결과값을 어디에 저장할 것인지 별도로 지정하지 않았으므로 결과값은 자동으로 @0에 보관된다. 출력문에는 @0object를 포함시켜 출력하고 있다.
지식에 관한 질문은 위에서 예를 든 여행지 외에도 영화 배우가 출연한 영화 목록, 주요 감독들의 작품, 한국 현대 소설가의 소설 작품, 가수의 히트곡, 운동선수의 기록 등 헤아릴 수 없을 만큼 많다. 이 중에서 관심있고 자신있는 분야를 정하여 그 분야에 전문화된 챗봇을 만드는 것이 좋은 서비스가 될 것이다.
[1] 이 함수의 좀 더 자세한 사용법은 9장 3절에서 설명하기로 한다.
[2] 이 모든 분야의 지식을 개인 혼자의 능력으로 구축할 수는 없고 자신이 관심있는 분야를 정해서 특정 영역의 지식을 구축하면 될 것이다.
'대화형 챗봇 > 4장. 응용 대화 가르치기' 카테고리의 다른 글
14. 마약, 폭력 등 금지어를 입력하였을 때 (1) | 2016.05.26 |
---|---|
13. 사랑, 연애, 결혼 등을 제안해 올 때 (0) | 2016.05.26 |
11. 지식베이스 구축하기 (1) | 2016.05.24 |
10. 어물쩍 대답하기 (얼버무리기) (0) | 2016.05.23 |
9. "예/아니오"와 한 데 묶어 답변하는 경우 (0) | 2016.05.21 |
- Total
- Today
- Yesterday
- 목적기반쇼핑
- 전자상거래 #쇼핑에이전트 #감정인식 에이전트 #실시간 반응형ui #멀티모달 니즈인식 #동적 ux최적화 #구매여정 최적화 #감성중심 상거래
- 챗봇개발 채팅로봇 한국챗봇
- 전자상거래 #쇼핑에이전트 #쇼핑에이전트유형 #ai구매지원 #개인용 쇼핑에이전트 #기업용 쇼핑에이전트 #독립형 쇼핑에이전트 #통합형 쇼핑에이전트 #보조형 쇼핑에이전트 #니치형 에이전트 #하이브리드 추천 #b2b구매 최적화
- 전자상거래 #쇼핑에이전트 #시뮬레이션 #디지털 소비자 트윈 #인플루언서 #what-if #에이전트 기반 모델링 #소셜 영향력 #소비자트윈
- 쇼핑에이전트 #전자상거래 #예측기반상거래 #소비자트윈 #b2a전략 #차세대커머스 #사업모델
- 헬스케어ai #b2b조달자동화 #예측기반의사결정 #지능형큐레이션 #하이브리드추천시스템 #산업별디지털전환 #산업혁신동력
- 쇼핑에이전트 #유통혁신 #전자상거래의 미래 #소비자행동변화 #상거래생태계 #플랫폼비즈니스 #알고리즘 경제 #미래시나리오
- 전자상거래 #쇼핑에이전트 #가치상승 #협업형 투자 #참여자매칭 #쇼핑투자 플랫폼 #가치기반 상거래 #멀티에이전트 의사결정 #예측형 상품 가치평가 #자산연계쇼핑 #리테일 핀테크 융합
- 전자상거래 #쇼핑에이전트 신뢰 #설명가능한ai #개인정보보호 #설명가능한 추천 #추천알고리즘 투명성 #추천시스템 설명성 #데이터 경제
- 전자상거래 #쇼핑에이전트 #니즈진열 #솔루션제안 #솔버 #솔루션블록 #니즈기반 상거래 #니즈그래프 #의도기반 상거래 #니즈 상품 매칭 #솔루션중심 추천
- 쇼핑에이전트 #전자상거래 #상거래혁신 #설득 #ai플랫폼 #미래시나리오 #유통업 재편 #물류혁신 #ai사업모델
- Chatscript AI 인공지능 챗봇 chatbot
- 전자상거래 #쇼핑에이전트 #상호작용 #집단구매력 #공동구매 플랫폼 #협업형 소비 #소셜 쇼핑역학 #멀티에이전트 구매 #군중기반 상거래 #ai기반 집단구매
- 전자상거래 #쇼핑에이전트 #판촉 #sns기반 #관계기반 #예측기반 #소비자트윈 시뮬레이션 #소셜네트워크 효과 #멀티에이전트 시뮬레이션
- 전자상거래 #쇼핑에이전트 #쇼핑여정 최적화 #실시간 맥락 적응 #이탈방지 전략 #예측형 쇼핑 #전환율 최적화 #맞춤형 쇼핑경로 #구매의사결정 지원
- 전자상거래 #쇼핑에이전트 #사업모델 #예측기반 상거래 #ai 구매의사결정 #미래형 유통모델 #니즈기반 쇼핑 #유통업 미래전망
- 전자상거래 #쇼핑에이전트 #판촉 #관계기반판촉 #sns판촉 #구전 #바이럴 #위기관리 #위기대응 #ai기반 인플루언서 타켓팅 #ai기반 소비자모델링 #소셜영향력 시뮬레이션 #인플루언서 영향력 분석
- 쇼핑에이전트 #예측기반상거래 #소비자트윈 #차세대이커머스 #b2a전략 #사업모델
- 전자상거래 #쇼핑에이전트 #상품정보 #메타데이터 최적화 #상품정보 표준화 #멀티모달 상품정보 #맥락기반 상품정보 #의미기반 상품군집화 #에이전트 맞춤 추천
- 전자상거래 #쇼핑에이전트 #
- 전자상거래 #쇼핑에이전트 #시뮬레이션 #멀티에이전트 #멀티플랫폼 #판촉 #에이전트 상호작용 모델링 #옴니채널 마케팅 #멀티채널 판촉 #채널간 소비자 행동
- 미래 전자상거래 #쇼핑에이전트 #새벽배송 #역산형물류 #니즈예측 #예측형 물류 #사전 배송 #수요예측 #적응형 공급망 #미래형 배송서비스 #풀필먼트
- 전자상거래 #쇼핑에이전트 #추천 #품질보증 #접근권 관리 #동적 가격전략 #에이전트기반 상거래 #알고리즘 통행료 #에이전트 시장경쟁
- chatscript chatbot 챗봇 한국어챗봇 ai 인공지능
- 전자상거래 #쇼핑에이전트 #결제방식 #위임결제 #비동기결제 #패키지결제 #에이전트 결제 #목적기반 결제 #동적결제 #맥락기반 전자상거래 #데이터 기반 결제
- 한글챗봇 우리말챗봇 인공지능챗봇 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 | 31 |