본문 바로가기

INU 통학버스 챗봇

  • 홍가인
  • 인천대학교
  • 작품구분일반형
  • 공개여부공개
  • 카테고리정보, 웹/앱, 생활, 기타
  • 등록일2020-06-23
  • 팀원(공동개발자)김나연, 김현정
  • 출품 경진대회인천대 산업경영공학과 2020년 1학기 졸업작품 발표회

상세설명

1. 수행배경

인천대학교에는 타 지역에서 통학을 하는 학생들이 많아서 여러 지역으로 운행하는 통학버스가 있습니다. 하지만 기존의 경우, 통학버스에 관한 승/하차 장소 및 시간에 대한 정보가 학기 초에 업로드되고 그 후로는 따로 공지가 올라오지 않아 해당 정보를 찾아보기가 다소 어렵습니다. 또한 우천에 따른 교통상황의 변동과 같이 긴급 변동사항을 곧바로 확인할 수 있는 시스템이 체계적으로 마련되어 있지 않아서 커뮤니티 등에 관련 질문을 올리는 학생들이 많습니다. 다음 표는 학교 게시판에 올라온 통학버스 관련 질문사항입니다. 다음을 보시면 많은 학생들이 통학버스에 관해 질문을 올릴 곳이 마땅치 않다는 사실을 알 수 있습니다.

이 뿐만 아니라 티켓 발권에 관한 불편함도 존재하였습니다. 통학버스를 이용하는 학생들 중 온라인 발권이 되지 않아 직접 교내 복지회관 1층까지 가야 한다는 불편함을 호소하는 학생들이 많이 있었습니다.

이러한 점들을 해소하기 위하여 저희는 통학버스에 관한 모든 정보를 제공해주는 매체를 개발할 필요성을 느꼈습니다. 그리고 그 매체를 선정하는 데 있어서 학생들에게 접근성이 가장 편리한 것을 우선 순위로 두고 고려해보니 챗봇을 개발할 필요성을 느꼈습니다. 챗봇 시스템은 카카오 I 오픈빌더를 이용하여 구축하고, 챗봇에는 통학버스 노선, 노선별 승/하차 시간 및 장소, 티켓 금액, 기사님 연락처 데이터를 등록하였습니다.

구체적인 목표 사항으로는 개인이 원하는 노선 또는 정류장을 검색하여서 원하는 경로만 쉽게 확인할 수 있고, 정류장을 검색하면 승차 장소와 해당 시간을 확인할 수 있습니다. 특히, 장소의 경우에는 헷갈리지 않도록 각 승하차 장소마다 로드맵 사진을 첨부하여 위치를 한 눈에 볼 수 있게 구성하였습니다. 또한 긴급변동사항의 경우 통학버스 챗봇과 플러스 친구가 되어있으면 모두가 알림을 받을 수 있도록 하였습니다.

 

 

2. 수행기간

4월 초:: 챗봇 플랫폼을 설계하기 위해 카카오톡 플러스 친구를 개설
6월 15일~6월 19일:: 마지막으로 마무리 작업을 하는 차원에서 챗봇 구동 테스트를 완료
4월 10일:: 신청 수락 완료
4월 13일:: 카카오 I 오픈빌더 참여 신청
4월 17일:: 카카오 I 오픈빌더 참여 수락
4월 20일~5월 1일:: 챗봇과 플러스 친구를 연동시켜서 작업을 할 setting 환경이 완료되어, 본격적으로 챗봇 제작에 관한 도움말이나 주요 기능 사용법을 보고 공부하는 시간
5월 4일~5월 15일:: 카카오 I 오픈빌더에 대한 기본 시나리오를 구성
5월 18일~5월 20일:: 완료한 기본 시나리오에 대해 간단한 작동 테스트
5월 21일~5월 26일:: 더욱 상세한 시나리오 구성을 진행
5월 27일~5월 29일:: 전체적인 시나리오에 대한 작동 테스트를 거쳐 모든 챗봇 시나리오에 대한 테스트를 구동.
6월 1일~6월 3일:: 수집한 모든 작년의 통학버스 데이터를 챗봇 오픈빌더에 등록하는 작업 진행
6월 4일~6월 12일:: 통학버스의 상세 노선을 띄우는 지도에 대한 코딩과 GPS 수신 테스트 실험을 하는 작업 진행
6월 15일~6월 19일:: 마지막으로 마무리 작업을 하는 차원에서 챗봇 구동 테스트를 완료​       

 

 

3. 개발작품 설명

(1) 카카오톡 플러스친구 개설

(2) 카카오 I 오픈빌더 참여 신청
챗봇 제작을 위해 카카오 I 오픈빌더 신청을 하고 권한을 부여 받았습니다.

(3) 오픈빌더 시나리오 구성
기본적으로 셋팅 되어 있는 기본 시나리오 외에 저희가 만들 챗봇에 관한 내용을 담을 시나리오들을 구성하였습니다. 큰 시나리오로 승하차 장소, 티켓 금액, 기사님 연락처, 노선 및 시간, 기타 발화를 추가하였습니다. 각 시나리오 안에는 통학버스가 다니는 지역인 송내, 수원, 일산, 청라, 광명에 대한 세부 시나리오를 연결시켰습니다. 기타 발화 시나리오 안에는 첫 인사, 끝 인사, 사과 시나리오를 넣어서 챗봇을 처음에 작동시킬 때 첫 인사로 반갑게 맞이하고, 마지막에는 끝 인사로 사용을 유도하는 식의 시나리오를 연결시켰습니다.

(4) 시나리오 블록 내용 구성 및 데이터 등록
다양한 시나리오에 속한 각 블록의 세부 내용들을 채워주었습니다. 여러 가지의 패턴 발화를 넣어서 사용자가 원하는 응답을 얻는 과정을 이끌어 내었습니다. 챗봇 내에서 버튼을 눌러서 구동하는 것이 아닌, 발화를 입력하여도 원하는 응답과 정보를 얻을 수 있게끔 사용자 발화에 대한 머신러닝 학습을 반복해서 진행하였습니다. 엔티티를 등록하고 분류하여서 챗봇이 비슷한 맥락의 단어들을 알아듣고 묶어서 정리할 수 있게끔 학습시켰습니다. 예를 들어, bus.location 엔티티에서는 통학버스가 지나는 노선에 해당하는 지역들을 모두 포함시켰습니다. 승하차 장소를 응답해주는 블록의 경우에는 승하차 장소의 로드뷰 사진과 장소에 관한 상세한 설명을 넣어서 사용자가 한눈에 알아보기 쉽고 이해하기 용이하도록 응답을 작성하였습니다. 머신러닝 학습을 통해 챗봇의 성능을 강화시켰습니다. 수집한 작년 기준의 통학버스 관련 데이터들을 구성된 시나리오와 블록에 등록하는 작업을 하였습니다.

(5) 지도 노선 코드 작성
통학버스의 실제 노선을 지도 위에 나타내기 위해서 T map api를 이용하여서 javascript 기반으로 코드 작성을 진행하였습니다. 이번 학기는 코로나 19로 인해 통학버스를 운행하지 않는 관계로, 작년 2학기 기준으로 통학버스 실제 노선을 지도 위에 구현해 보았습니다. 출발지점과 도착지점을 설정하고, 경유지점을 찍어주면 실시간으로 교통 상황을 탐색하여서 최적 경로를 찾아주는 API 코드를 이용하여서 송내, 수원, 광명, 청라, 일산 노선을 각각 자세하게 구현하였습니다. 노선 별로 색깔을 달리하여 차별화를 두었습니다

(6) GPS 수신기 실험
통학버스의 실시간 위치를 버스 내부에서나, 버스를 기다리면서 확인할 수 있도록 GPS 수신기를 통해 실시간 위치를 받아오는 기능을 추가하였습니다. 통학버스 업체가 1년마다 변경되는 특성 상, 컴팩트하고 정확한 위치 수신이 가능한 기기를 찾아보았고, 그 결과 Gper 수신기를 이용하여 실험을 진행하였습니다. Gper 수신기로 위치를 수집하면, 그 위치 데이터는 Catchloc 서버로 연동되어 자동으로 저장이 됩니다. Catchloc 서버를 통해서 저장된 위치들을 시각적으로 쉽게 확인할 수 있고, 거리나 속도 등의 부수적 요소들을 포함해서 위치데이터를 엑셀 파일로도 다운로드가 가능합니다. 이번 학기는 코로나 19로 인해 통학버스를 운행하지 않는 관계로, 통학버스의 실시간 위치를 지도 위에 띄우는 것을 진행하지 못했습니다. 대신 Gper 수신기를 가지고 조원 한명이 집에서부터 학교까지 가는 길에 수신 실험을 해서 위치 데이터를 받아온 것을 시간 순서에 따라 주기적으로 상세 노선을 그린 지도 위에 띄우는 작업으로 대체하였습니다. Catchloc API중 위치조회 API를 이용하기 위해 php 환경 설정을 해주고, 날짜와 시, 분, 초를 timestamp로 구간 설정을 하여서 json 형식의 위치 데이터를 얻었습니다. 이 위치데이터를 excel파일로 저장하였고, kml파일을 생성하기 위해 Google Map에 위치데이터 excel파일을 넣어 프로젝트를 생성하였습니다. 이 프로젝트를 kml 파일로 생성하였습니다. 비동기통신 XMLHttpRequest를 이용하여 객체를 구하고, 로컬 파일로 요청을 전송 후에 화면에 주기적으로 반영하였습니다. 또한, 위치 관제 setInterval을 1초 주기로 설정하였습니다. 로컬 파일로 비동기통신 테스트를 하기 위해서 Chrome 프로그램 경로 뒤에 --disable-web-security --user-data-dir 를 붙여 써서 Chrome 개발용을 개설하였습니다. 정상적으로 작동하면 "지원되지 않는 명령 플래그 사용중" 이라는 문구가 뜹니다. Chrome 개발용에 로컬 경로를 쳐서 띄우면 위치관제가 실행됩니다.

 

 

 

 

 

4. 활용방안

1. 개인이 원하는 노선 또는 정류장을 검색하여서 원하는 경로만 쉽게 확인할 수 있음
2. 정류장을 검색하면 승차 장소와 해당 시간을 확인할 수 있음.
3. 장소의 경우 카카오 플러스 챗봇 안에서 승차장소 블록에 로드 뷰를 볼 수 있는 옵션을 추가하여 해당 정류장을 클릭한다면 정류장의 사진이 뜸
4. 학교의 일정에 따른 통학버스의 긴급 변동사항은 플러스친구가 되어 있으면 모두가 알림을 받을 수 있음
 
* 이번 2020년 1학기에는 코로나로 인해 실제 통학버스가 운행하지 않아서
임의로 조원 중 한 명이 대표하여 GPS장치를 가지고 시외 버스를 타며 위치 추적을 하는 실험으로 대체 하였지만,
2020년 2학기에 실제로 통학버스에 Gper 수신기를 부착하여 운행 한다면, 실제로 통학버스를 이용하는 학생들의 편리성이 매우 높아질 것입니다.

* 지도에 실시간으로 버스의 위치를 마커로 찍어 학생들에게 정보를 전달하는 매체가 아예 없었던 전에 비해,
학생들이 통학버스에 관한 편리성의 인식률이 높아져 이에 따른 이용률 자체가 증가할 것입니다.

* 실시간 위치정보 뿐만 아니라 통학버스의 관련 정보들을 알림으로 받을 수 있어
통학버스가 외부 시내버스에 비해 가격도 저렴한 것을 학생들이 인지 후 경제적으로 도움이 될 것입니다.

* 통학 버스만의 이벤트관련 사항을 알림으로 받으며 효율적으로 이용가능 할 것입니다.​

 

소개 영상

소개 슬라이드

기타자료

댓글