퀴즈를 내고, 채점해주는 챗봇
깃허브 수정요청

묻고 답하는 과정. 이 또한 대화

퀴즈를 내고, 답하는 과정을 챗봇으로 만들 수 있다. 쪽지시험 같은 상황도 연출 할 수 있지만. 묻고 답하는 대화에 적극적인 참여하면, 더 이해도 잘되고 오랫동안 기억될 수 있다. 또한 학습이나 평가를 목적으로 하지 않고 호기심을 자극하는 용도로도 사용할 수 있다. 퀴즈봇, 당근씨는 퀴즈를 내고 답하는 과정을 담은 챗봇이다. 퀴즈를 통해 자극한 호기심을 도서 구매로 유도하는 샘플이다.

지금 퀴즈봇, 당근씨를 만나보자.

퀴즈봇, 당근씨의 퀴즈 진행

웹에서 당근씨 만나보기

당근씨의 대화흐름은 간단하다. 13가지 세상에 대한 퀴즈를 내고, 정답 또는 오답여부를 알려준다. 문제를 다 풀고 나면 본인이 어느 수준에 속하는지 안내해주고 마지막에 퀴즈와 관련된 도서를 추천한다.

당근씨를 내맘데로 고쳐보기

개인적으로 잘아는 분야가 있다면, 다른 사람들이 흥미롭게 풀어볼 수 있는 퀴즈를 만들 수도 있다.

  1. 챗봇목록에서 “퀴즈봇, 당근씨”를 [가져오기] 한다.
  2. 대화흐름에서 [시작]이라는 대화흐름을 선택한다.
  3. Function노드, “문제 배열로 세팅”에 적용되어 있는 스크립트에 Array안의 데이터를 바꾸어주면 퀴즈 내용이 바뀌게 된다.
Function노드에 담겨있는 퀴즈 데이터 SET

[문제 배열로 세팅] Function노드에 담겨 있는 javascript

// javascript를 작성해주세요 
var current_quiz = 0;
var score = 0;

var quiz = {"r":[[1,"현재 전 세계 저소득층 국가에서 초등학교를 나온 여성은 몇 %나 얼마나 될까요?","","20%","40%","60%","C"],
[2,"세계 인구의 대다수는 어디에 살까?","","저소득 국가","중간 소득 국가","고소득 국가","B"],
[3,"지난 20년간 세계인구에서 극빈층 비율은 어떻게 바뀌었을까?","","거의 2배로 늘었다.","거의 같다.","거의 절반으로 줄었다.","C"],
[4,"오늘날 세계 기대 수명은 몇세일까?","","50세","60세","70세","C"],
[5,"오늘날 세계 인구 중 0~15세 아동은 20억이다. 유엔이 예상하는 2100년의 이 수치는 몇일까?","","40억","30억","20억","C"],
[6,"유엔은 2100년까지 세계 인구가 40억 늘어날 것으로 예상한다. 주로 어떤 인구층이 늘어날까?","","아동 인구(15세 미만)","성인 인구(15~74세)","노인 인구(75세 이상)","B"],
[7,"지난 100년간 연간 자연재해 사망자 수는 어떻게 변했을까?","","2배이상 늘었다.","거의 같다.","절반 이하로 줄었다.","C"],
[8,"오늘날 세계 인구는 약 70억이다. 그림에서 보이는 지도 중 이 70억의 거주 분포를 가장 잘 나타낸 것은? (출처 : https://www.gapminder.org/)","https://github.com/Moonkil/danbeedemo2/blob/master/factfullness_population.png?raw=true","아시아40억, 나머지 각각 10억","아시아30억, 아프리카20억, 나머지 10억씩","아시아30억, 아메리카20억, 나머지 각각 10억","A"],
[9,"오늘날 전 세계 1세 아동 중 어떤 질병이든 예방접종을 받은 비율은 몇 퍼센트일까?","","20%","50%","80%","C"],
[10,"전 세계 30세 남성은 평균 10년간 학교를 다닌다. 같은 나이의 여성은 평균 몇 년간 학교를 다닐까?","","9년","6년","3년","A"],
[11,"1996년 호랑이, 대왕판다, 검은코뿔소가 모두 멸종위기종에 등록되었다. 이 셋중 몇 종이 오늘날 더 위급한 단계의 멸종위기종이 되었을까?","","2종","1종","없다","C"],
[12,"세계 인구 중 어떤식으로든 전기를 공급받는 비율은 몇 퍼센트일까?","","20%","50%","80%","C"],
[13,"세계 기후 전문가들은 앞으로 100년 동안 평균기온 변화를 어떻게 예상할까?","","더 더워질 거라고 예상한다.","그대로일 거라고 예상한다.","더 추워질 거라고 예상한다.","A"]]};
 
var perfect_score = quiz.r.length;       
quiz = JSON.stringify(quiz); /* 다른 노드에서 사용하려면 String으로 변환해주는 것이 필요해요.  */

/*
a = '{"key4":["가","나","다"], "key5":{"sub1":"subvalue1"}, "key6":[{"sub1":"subvalue1"},{"sub1":"subvalue2"}]}';
*/
/* 이렇게 생성해 놓으면 스피크 노드 등에서 파라미터를 사용할 경우 아래와 같이 사용이 가능합니다.
   #{a.key4} , #{a.key5} , #{a.key5.sub1}, #{a.key6} , #{a.key6[0].sub1}  */

개발자가 아니라면, 생소하고 어렵게 느껴질 수 있다. quiz라는 JSON 변수에 r이라는 배열(Array) 정보가 담겨있다. JSON과 배열(Array)는 많은 개발자들이 즐겨 활용하는 데이터 구조다. 데이터 구조에 더 관심이 있다면, 따로 공부를 하기로 하고 여기서는 퀴즈를 바꾸는 데에만 집중하자!

quiz 부분을 유심히 살펴보자. 중괄호가 있고, 대괄호가 있고, 콤마가 있고, 따옴표도 있다. 1번만 떼서 살펴보자.

[1,"현재 전 세계 저소득층 국가에서 초등학교를 나온 여성은 몇 %나 얼마나 될까요?","","20%","40%","60%","C"]

콤마로 구분된 데이터 하나 하나가 의미가 있다. 문제하나가 가져갈 수 있는 정보를 하나의 정보그룹이 되고, 13개의 정보가 준비되어 있는 것이다.

의미 데이터
1 문제번호 1
2 문제 “현재 전 세계 저소득층 국가에서 초등학교를 나온 여성은 몇 %나 얼마나 될까요?”
3 이미지 URL주소
(없으면 표시안함)
””
4 보기A “20%”
5 보기B “40%”
6 보기C “60%”
7 정답 “C”

이와 같이 정리된 정보는 대화흐름이 진행됨에 따라 차례대로 추출되어 문제와 보기가 사용자에게 보이게 되고, 사용자의 응답내용과 정답을 비교하여 정답이면 +1, 틀리면 점수가 없는 상태로 다음 문제로 넘어간다. 이러한 논리적인 흐름은 대화흐름에 적용이 되어 있다. 문제의 개수는 13개로 되어 있지만 더 줄여서 3문제로 구성할 수도 있고, 더 많이 준비하여 20문제를 준비할 수도 있다. 점수는 백분율로 환산되어 멘트가 나가도록 [점수에 대한 평가]라는 Speak노드에 설정 되어 있다. var quiz부분을 아래와 같이 바꾸어 보자.

var quiz = {"r":[[1,"맥주가 죽기전에 남긴 말은?","","유언비어","캬~","없음","A"],
[2,"비가1시간 동안 오면?","","단비","보슬비","추적60분","C"],
[3,"머리가 아플땐 약을 얼마나 먹어야 할까?","","1알","두통","먹지말고 참아야함","B"],
[4,"서울이 추워하면?","","서울시립대","호빵","추운 서울","A"],
[5,"딸기가 도망쳤다를 다른 말로?","","딸기 누가 먹었어?","딸기가 없네?","딸기쨈","C"]]};

아재개그 5가지를 물어보고 답하는 식으로 바꾸었다. 이렇게 해놓고 테스트를 해보면? 오프닝 부분과 점수에 대한 평가와 뒷부분이 어색하다는 것을 알 수 있다. [오프닝 멘트] 부분과 [마무리 멘트]라는 스피크 노드를 수정하여 퀴즈와 어울리는 내용으로 바꾸어 보자.

아재개그 퀴즈 봇으로 바뀐 당근씨

당근씨보다 더 좋은 이름, 더 좋은 퀴즈.

내가 구성한 퀴즈 콘텐츠를 내고 채점해서 흥미를 유발하는 챗봇으로 변했다. 아재개그가 예시였지만, 자신이 잘 아는 콘텐츠가 있다면 무엇이든 퀴즈가 될 수 있다. 좋아하는 영화나 애니메이션에 대한 퀴즈, 좋아하는 아이돌이나 가수에 대한 퀴즈, 영어 단어나 문법 퀴즈도 만들 수 있다. 대화흐름상에 표현되어 있는 멘트를 수정해주면 전혀 다른 챗봇이 되는 것이다. 이름도 당근 대신 배추, 토마토, 상추라고 마음 내키는데로 바꿔보자.

생각보다 재미있는 챗봇 만들기

대화흐름을 이용해서 챗봇을 만들면, 코딩능력이 없더라도 쉽게 가족이나 친구에게 자신이 만든 프로그램을 보여줄 수 있다. 물리적인 형태가 있는 것은 아니지만, 마치 살아있는 것처럼 반응하는 챗봇. 그리고 말투를 조금만 바꾸어도 전혀 다른 캐릭터가 되는 챗봇. 지금 당근씨를 내려받아서 흥미로운 퀴즈를 잔득 만들어보면 어떨까?


함께해요! 챗봇시대:)

모든 사물, 디지털 매체와 말이 통하는 시대! 단비Ai와 함께 반드시 오게될 챗봇시대를 열어갔으면 좋겠습니다.
지금 여러분만의 챗봇을 🌱싹틔우세요!

사람은 단비를 만들고, 단비는 챗봇을 싹틔운다.

함께할 멋진 개발자기획자를 찾습니다. 어쩌면 💧단비가 여러분이 찾던 직장일 지도 모르죠?