I. Introduction
최근 관광에 대한 사용자들의 관심이 증폭되면서, 여행 목적지 근처의 인기 관광지나 맛집, 숙소를 찾기 위해 모바일 기기를 검색하는 것이 보편화되었다. 컨텐츠 검색에 있어 SNS(61%), 블로그(34%) 등의 채널이 주로 이용되고 있으며[1], 검색된 플레이스 정보를 바탕으로 여행 스케줄 작성이 이루어진다. 그러나 사용자가 여행 스케줄을 직접 작성하는 것은 번거로울 뿐 아니라, 부정확한 검색 결과가 스케줄에 포함될 수 있어 만족스럽지 못한 결과로 이어질 가능성이 매우 높다.
이러한 문제를 해결하기 위해, 여행 스케줄 생성에 있어 사용자의 만족도를 높이기 위한 다양한 연구가 진행되었다. 이들 중 대다수는 사용자 맞춤형 스케줄을 자동 생성하기 위한 방법에 초점을 두었으며, 사용자의 관심 분야나 선호도 파악을 위해 사용자의 이동 경로 이력이나 사용자가 작성한 SNS 리뷰들을 필요로 한다는 공통점이 있다. 그러나 이들 자료가 존재하지 않을 경우 알고리즘의 정확도가 현저히 저하되는 문제점이 있다. 이는 사전 설문 조사를 통해 어느 정도 해결 가능하나, 이 역시 다수의 문항을 사용자가 직접 입력해야 한다는 점에서 한계가 있다.
이와 관련하여, 이전 연구[2]에서는 소셜 빅데이터 분석을 통해 관광지, 맛집, 숙소 등을 포함한 플레이스들의 대중적인 인기 정도를 정량화하고, 분석 결과를 기반으로 여행 스케줄을 생성하기 위한 방법을 소개하였다. 해당 방법은 사용자의 초기 데이터 없이도 빅데이터 분석을 통해 대중적인 인기를 지닌 플레이스들을 추출하여 여행 경로 생성에 이용함으로써, 만족도 높은 스케줄을 제공하고자 하였다. 그러나 이전 연구에서는 생성된 스케줄에 관광지 정보만 포함되었으며, 식사 장소나 숙소 정보가 포함된 구체적인 일정 정보는 제공되지 않는 문제점이 있었다.
본 논문에서는 소셜 빅데이터를 기반으로 날짜별 세부 여행 일정 정보를 추천하기 위한 시스템과 구현 방법에 대해 소개한다. 제안 시스템에서는 관광지 별 체류 시간을 2시간으로 가정한 여행 시나리오 템플릿을 기반으로 구체적인 여행 일정을 수립한다. 이를 구현하기 위해, 제안 시스템은 플레이스 정보 생성 및 리뷰 수집, 플레이스별 인기점수 산정, 최단경로 여행 일정 생성, 일자별 상세 스케줄 생성, UI 시각화 등의 모듈로 구성된다. [그림 1]은 제안 방법을 구현한 시스템에서 여행 목적지를 경상남도 거제시로 설정했을 경우 추천된 여행 스케줄과 1일차 상세 일정을 캡처한 화면을 보여준다.
Fig. 1. (a) complete tour itinerary (left) and (b) 1st day tour schedule (right) suggested by the proposed system when the travel destination is set to Geoje
본 논문의 구성은 다음과 같다. 2장에서는 여행 경로 추천과 관련한 기존 연구들을 소개한다. 3장에서는 이전 연구에 대한 설명과 함께, 여행 시나리오 템플릿을 바탕으로 날짜별 세부 여행 일정 정보를 생성하기 위한 알고리즘에 대해 소개한다. 4장에서는 제안 알고리즘을 구현한 프로토 타입 시스템에 대해 설명하고, 온라인상의 실제 소셜 데이터를 활용한 시스템 검증 결과를 제시한다. 5장에서는 결론 및 추후 연구 방향 제시로 마무리한다.
II. Related Work
여행 일정 추천과 관련하여, 사용자의 관심 분야나 선호도 파악을 통해 개인화된 스케줄을 제공하기 위한 다양한 연구가 진행되었다. [3,4]는 관심도가 유사한 사용자들을 찾아 여행 스케줄을 공유하는 방식을 제안했으며, 관심도 추출을 위해 [3]은 사용자의 GPS 이동 패턴을, [4]는 상품 페이지 방문 패턴 분석을 활용하였다. [5,6]은 여행 경로 추천을 위한 파라미터로 장소별 체류 시간 및 이동 시간 등을 고려하였으며, 유전 알고리즘을 통해 여행 경로를 생성하였다. [7]은 한국관광공사의 Tour API[8]를 이용하여 여행지별로 키워드를 추출한 후, 추출된 키워드와 사용자 설문 결과 간의 유사도가 높은 관광지를 추천하였다.
한편, [9-15]를 포함한 다수의 연구에서는 여행 경로 추천에 있어 소셜 빅데이터를 활용하고자 하였다. 이들은 공통적으로 SNS 데이터로부터 주요 관광지에 대한 사용자들의 체크인 정보를 추출하였으며, 사용자 방문 횟수를 바탕으로 스케줄링 대상이 되는 POI(Point-Of-Interest) 정보를 선별하였다. 이 때 POI는 미리 알려진 관광지로 한정지을 수도 있고, 사용자 방문 횟수를 기반으로 임의의 식당이나 호텔 등으로 확대시켜 산정될 수도 있다. 단, 선별된 POI 중 어떤 POI를 스케줄에 추가할지는 알고리즘별로 다를 수 있으며, 아래의 세 가지 속성이 스케줄링에 고려되었다.
⦁ 위치 요소(Spatial factor): 사용자의 현재 위치와 가까운 POI를 우선적으로 스케줄링에 반영
⦁ 시간 요소(Temporal factor): 사용자들의 체크인 정보를 바탕으로 POI별 체류 시간 및 POI간의 이동 시간을 산정하여 스케줄링에 반영
⦁ 사회관계 요소(Social factor): SNS 친구들의 여행 동선을 고려하여, 친구들이 자주 방문한 POI 및 여행 일정을 스케줄링에 반영
Table 1은 사용자 체크인과 POI 추출에 필요한 데이터를 얻는데 이용된 SNS 서비스, POI 추출 방법, 스케줄링에 이용된 속성 등의 관점에서 [9-15]를 비교하였다. 대다수의 연구에서는 스케줄링에 있어 위치 요소를 기본으로 고려하고 있으며, 여기에 시간 요소나 사회관계 요소를 추가시켜 개인화된 여행 스케줄을 제공하고자 하였다. 그러나 시간 요소나 사회관계 요소는 데이터가 부족할 경우 스케줄링 정확도가 저하되는 문제점이 있다. 예를 들어, 시간 요소의 경우 사용자의 체크인 정보가 부족할 경우 POI별 체류 시간이나 이동 시간의 산정 정확도가 떨어질 수 있으며, 사회관계 요소 역시 사용자의 친구 수가 부족할 경우 추천 정확도가 저하되는 문제점이 있다. 이러한 문제를 해결하기 위해 [16]에서는 서비스 가입 시 설문 조사를 통해 개인의 선호도 정보를 얻은 후, 데이터 부족 문제를 해결하고자 하였다. 그러나 해당 방법 역시 사용자의 수동적인 입력을 필요로 한다는 점에서 한계가 있다.
Table 1. Comparison of the existing travel scheduling algorithms
III. Scheduling Algorithm
제안 방법은 한국관광공사 및 소상공인진흥공단[17]에서 제공하는 공공 데이터를 통해 POI 정보를 추출하며, 스케줄링의 대상이 되는 POI를 선정하는데 있어 사용자 방문 횟수가 아닌, 사용자가 작성한 리뷰 수를 이용한다는 점에서 기존 연구들과 차이가 있다. 사용자 리뷰를 활용할 경우 아래 측면에서 기존 방법에 비해 더욱 높은 추천 정확도를 기대할 수 있다.
⦁ POI 별로 사용자 방문 횟수에 비해 일반적으로 사용자 리뷰 수가 월등히 많다. 따라서 POI 산정에 있어 더욱 풍부한 데이터를 활용할 수 있다.
⦁ 리뷰를 통해 사용자의 부정적인 경험을 추천에 반영할 수 있다. 예를 들어, 부정 리뷰가 존재할 경우 추천 점수를 차감할 수 있다.
⦁ 사용자들의 리뷰 수를 기반으로 대중적으로 인기 있는 POI만을 포함시켜 여행 스케줄을 생성할 수 있다. 이는 다수 사용자들의 만족도를 고려한 일반화된 스케줄로 볼 수 있으며, [9-15]등을 포함한 기존 방법에서 시간 요소 및 사회관계 요소 산정에 필요한 데이터가 부족하여 개인화된 스케줄 생성이 어려울 경우 이를 보완하는 용도로 활용될 수 있다.
제안 방법은 이전 연구[2]에서 소개한 소셜 리뷰 수 기반의 POI 산정 방법을 활용한다. POI 정보 추출이 완료되면 여행 시나리오 템플릿을 기반으로 날짜별 상세 여행 일정을 수립한다.
1. Previous Work
이전 연구에서는 소셜 빅데이터를 활용하여 플레이스별로 인기 점수를 정량화하고, 이를 통해 얻어진 인기 플레이스(POI)들을 기반으로 여행 스케줄을 생성하였다. 스케줄링의 대상이 되는 관광지와 맛집 등의 플레이스 정보 수집을 위해, 한국관광공사에서 제공하는 Tour API[8]와 소상공인 진흥공단[17]에서 제공하는 공공데이터 등이 이용되었다.
먼저 지역별로 관광지, 맛집, 숙소 등의 플레이스 정보가 준비되면, 각각의 플레이스에 대해 [18,19]에서 소개된 소셜 빅데이터 분석 방법을 이용하여 플레이스 별로 리뷰를 수집하고, 긍정 및 부정 리뷰를 판별한다. 그리고 수집된 리뷰 수를 바탕으로, 플레이스에 대한 인기 점수를 정량적으로 산정한다. 예를 들어, 인기 점수는 긍정 리뷰의 수에 비례하고 부정 리뷰의 수에 반비례하므로, 인기 점수 f는 아래와 같이 산정될 수 있다.
\(\begin{aligned}f=\sum_{i=1}^{N}\left\{n_{i} w_{i}-m_{i} u_{i}\right\}\end{aligned}\) (1)
위 식에서 ni와 mi는 각각 i번째 달의 긍정 리뷰 수와 부정 리뷰 수를 나타내며, wi와 ui는 가중치 값에 해당한다. wi와 ui 값 조정을 통해, 최근 리뷰나 부정 리뷰에 더욱 큰 가중치를 부여할 수 있다.
플레이스 별로 점수 산정이 완료되면, 인기 플레이스들을 바탕으로 여행 스케줄을 구성할 수 있다. 이전 연구에서는 여행 스케줄 생성에 있어 인기 관광지만을 고려하였다. 예를 들어, 경상남도 거제시의 경우 관광지와 인기 점수는 아래와 같이 추출되었으며, 해당 데이터를 바탕으로 여행 경로 생성 알고리즘이 수행된다.
이전 연구에서는 TSP(Travelling Salesman Problem)[20] 알고리즘을 이용하여 여행 경로를 생성하였다. 해당 알고리즘에서는 주어진 모든 관광지를 방문하는 최단 거리 여행 경로를 찾는 것이 목적이며, 위 예의 경우 13개의 관광지를 순회하는 모든 순열을 찾기 위해 13!의 경우의 수를 계산한다. 단, 모든 가능한 조합을 체크해야 할 경우 계산 시간이 기하급수적으로 늘어날 수 있으므로, 이전 연구에서는 인근 관광지들을 그룹으로 묶어 계산 시간을 줄이고자 하였다. 예를 들어, 씨월드, 거제조선해양문화관, 와현해수욕장은 모두 반경 1 km 내에 있으므로, 이들을 하나의 그룹으로 묶어 알고리즘을 적용할 수 있다. 관광지를 묶을 경우, 해당 관광지 그룹의 인기 점수는 각 관광지 점수를 합산한 값이 된다. 아래는 Table 2의 관광지를 대상으로 얻어진 관광지 그룹과 인기 점수를 보여준다.
Table 2. Tour spots and their popularity scores in Geoje city
2. Daily Scheduling Algorithm
관광지 외에 식당과 숙소 등의 플레이스에 대해서도 앞에서 소개한 바와 같이 리뷰를 수집하고 인기 점수를 산정할 수 있다. 아래는 Table 3의 관광지 그룹 별로 반경 2km 이내에 위치한 인기 식당과 숙소를 보여준다. 인기 식당과 숙소의 선정 기준은 관광지 선정과 동일한 방식으로 식 (1)로 부터 산정된 f값을 기준으로 한다. (f값이 가장 높은 식당이나 숙소부터 순차적으로 스케줄링 대상에 포함시킨다.)
Table 3. Tour spot groups and their popularity scores in Geoje city
관광지 그룹 별로 체류 시간 정보가 있을 경우, 위 내용으로부터 날짜별 세부 일정을 구성할 수 있다. 예를 들어 그룹 별 체류 시간을 2시간이라고 가정하면, 일자별 여행 스케줄 작성에 필요한 시나리오를 Table 5와 같이 구성할 수 있다. Table 5는 제안 방법에서 시나리오 템플릿에 해당하며, 날짜별 세부 일정을 구성하기 위한 기준을 제시한다. 아래 템플릿에서 아침, 점심, 저녁 식사 장소는 Table 4의 맛집을 대상으로 선정하며, 오전 및 오후관광은 관광지 그룹을 대상으로 한다. 커피휴식 장소는 카페나 디저트 공간(Table 4에서는 지면 관계상 제시되지 않음)을 대상으로 하며, 숙박은 숙소를 대상으로 선정된다.
Table 4. Tour spot groups and their popularity scores in Geoje city
Table 5. Activity scenario for a day tour according to the time line
일반적으로 여행 첫째 날은 여행 목적지까지 이동 시간을 고려해야 하므로, 점심 식사 이후부터 숙박까지의 일정만 추천한다. 따라서 1일차 거제 여행 스케줄은 아래 표와 같이 작성될 수 있다. 스케줄의 시작점은 여행 목적지에서 가장 인기 있는 관광지인 외도보타니아가 되며, 오후관광1 값으로 설정된다.
Table 6. 1st day tour schedule recommended from popular places of Table 4
제안 방법에서는 오후관광1 방문 전에 점심식사 장소를 추천한다. 이는 오후관광1 인근 반경 2km 내의 맛집들을 찾아 인기 순으로 정렬한 후, 최대 3개의 인기 맛집을 포함시키는 것으로 구성될 수 있다. 위 예제에서는 외도보타니아 인근의 맛집으로 유경식당이 추천되었다.
오후관광2에는 오후관광1에서 거리상 가장 가까운 관광지 그룹이 선택되며, 방문 이전에 휴식 시간을 가질 수 있도록 두 관광지 인근의 인기 카페를 함께 추천해줄 수 있다. 위 예제에서는 오후관광2 값으로 공곶이가 선택되었으며, 커피휴식 장소에는 해당 관광지 인근의 외도널서리 카페가 추천되었다. 저녁식사 및 숙박 장소 역시 오후관광2 인근의 인기 맛집과 숙소들이 추천된다.
2일차 이후 여행 스케줄은 1일차 스케줄 형식에서 아침 식사와 오전관광이 추가되는 것을 제외하고는 동일한 방식으로 생성될 수 있다. 아래는 Table 4의 내용을 기반으로 작성된 2일차 거제 여행 스케줄을 보여준다.
Table 7. 2nd day tour schedule recommended from popular places of Table 4
현재 제안 방법의 시나리오 템플릿(Table 5)에서는 관광지 그룹별 체류 시간을 2시간으로 가정하였다. 이는 스케줄에 더욱 풍부한 내용을 담기 위함이다. 예를 들어, 체류 시간이 2시간일 경우 오후 여행을 둘로 나눌 수 있으며 여행지 사이에 휴식을 위한 카페 정보도 포함시킬 수 있어 사용자에게 보다 다채로운 여행 일정을 제공할 수 있다. 반면 체류 시간을 3시간 이상으로 설정할 경우 여행 일정이 단조로워지는 문제점이 있으며, 이는 사용자의 만족도가 저하로 이어질 수 있다.
위에서 설명한 내용을 토대로, 일자별 상세 여행 일정을 추천하기 위한 알고리즘은 아래와 같이 기술될 수 있다. getDailySchedule()은 여행 목적지 내 인기 관광지, 맛집, 카페, 숙소 리스트인 tours, diners, cafes, hotels를 파라미터로 입력받아 일자별 상세 여행 스케줄을 생성하는 함수로, 아래에서는 JavaScript로 알고리즘을 기술하였다. 아래 알고리즘에서 관광지 그룹별 체류 시간은 2시간으로 가정하였다.
Fig. 2. Algorithm for finding a daily tour schedule from place lists
3행의 getTourPath()는 관광지 리스트로부터 인근 관광지들을 묶어 그룹으로 만든 후, 관광지 그룹들을 연결하는 최단거리 경로를 찾아 리턴하는 함수이며, 이전 연구[2]에서 제안한 알고리즘을 구현한 함수에 해당한다. 4행의 getBreakfast() 함수는 맛집과 카페 리스트를 입력받아 “브런치” 등 조식과 관련한 키워드를 가진 플레이스들을 찾아 리스트 형태로 반환한다. 5행의 type 변수는 값이 0일 경우 오전관광, 1일 때는 오후관광1, 2일 때는 오후관광2를 나타내며, 첫날은 오후관광1부터 시작하므로 1로 초기화된다. day는 여행 일자를 나타내며 1로 초기화된다. 6행의 변수들은 스케줄 생성 과정에서 임시로 이용될 리스트를 나타내며, 7행의 max 값은 8행의 반복문이 몇 번 수행될지를 가리키며, 관광지 그룹 수로 초기화된다.
8행부터 47행까지의 반복문은 getTourPath()로부터 반환된 trgrps 정보를 바탕으로 구체적인 여행 일정을 생성한다. trgrps의 초기 값은 Table 3의 관광지 그룹 정보를 포함하며, Table 5의 시나리오 템플릿을 바탕으로 trgrps에 아침식사, 점심식사, 커피휴식, 저녁식사, 숙소 등의 정보가 추가된다. 따라서 반복문이 종료되었을 때 trgrps에 상세여행 일정 정보가 모두 포함되며, 해당 값이 결과 값으로 반환된다.
먼저 9행에서 type이 0일 경우 trgrps[idx]는 오전관광지를 의미한다. 이 경우, 오전관광지 근처에서 아침식사와 점심식사를 위한 맛집을 찾아 추가하기 위한 작업이 수행된다. 10행의 getNearPlaces()는 아침식사 후보군을 저장한 bfasts 리스트로부터 오전관광지 반경 2km 이내의 인기 플레이스들을 추출하여 list에 저장한다. list에 1개 이상의 장소가 포함될 경우, 11~14행에서는 insertBefore() 함수를 이용하여 trgrps[idx] 앞에 아침식사 장소로 list를 추가한다. 그리고 trgrps 리스트에 새로운 요소가 추가되었으므로, 13행에서 idx와 max 값을 1씩 증가시킨다. 15행에서는 getNearPlaces()를 이용하여 diners 리스트로 부터 오전관광지 근처의 맛집을 추출하여 list에 저장하며, 16행에서는 addList() 함수를 이용하여 list를 점심식사 추천 리스트인 lunches에 추가한다. 이는 오후관광1 인근에 추천할만한 식사 장소가 없을 때를 대비하기 위함이다.
18~27행에서는 type이 1일 경우, 오후관광1 인근의 점심식사 및 커피휴식 장소를 스케줄에 추가하기 위한 작업을 수행한다. 19행은 getNearPlaces()를 이용하여 diners 리스트로부터 첫 번째 오후관광지를 나타내는 trgrps[idx] 인근의 맛집들을 추출한 후, addList()를 통해 lunches 리스트에 추가한다. lunches에 1개 이상의 플레이스가 포함될 경우, 21~24행에서 insertBefore()를 이용해 trgrps[idx] 앞에 점심식사 장소로 lunches를 추가한 후, idx와 max 값을 1씩 증가시킨다. 25~26행에서는 cafes 리스트로부터 관광지 인근의 카페들을 추출하여 coffbrks 리스트에 추가한다. 이 역시 오후관광2 인근에 추천할만한 카페가 없을 때를 대비하기 위함이다.
28~46행에서는 type이 2일 경우, 오후관광2 인근의 카페 및 저녁식사, 숙박 장소를 추가하기 위한 작업을 수행한다. 이 역시 getNearPlaces 함수를 이용하여 인근 맛집이나 카페, 숙소를 추출하여 스케줄에 추가한다는 점에서 유사하며, 차이점으로는 insertAfter() 함수를 이용해 오후 관광 정보가 모두 추가되고 난 후, 추출된 식사나 숙소 정보를 추가한다는 점에서 차이가 있다. 스케줄 정보 추가 완료 후, 45행에서는 type을 0으로 초기화하고 day 값을 1 증가시킴으로써, 다음날 스케줄이 시작될 수 있도록 관련 값을 설정한다.
IV. Prototype System
이 장에서는 위에서 소개한 스케줄링 알고리즘을 구현한 프로토타입 시스템에 대해 소개한다. 프로토타입 시스템은 클라이언트와 서버 형태로 구성되었다. 클라이언트는 HTML5 기반의 모바일 앱(App) 형태로 구현되었으며, 서버는 CentOS 7 운영체제와 Tomcat 8.5 웹서버를 기반으로 구현되었다. 서버는 안정적인 서비스 제공을 위해 KT Cloud 환경에서 동작되었다.
1. System Structure
아래 그림은 프로토타입 시스템의 구조를 도식화하고 있다. 프로토타입 시스템은 플레이스 정보 생성 및 리뷰 수집, 플레이스별 인기점수 산정, 최단경로 여행 일정 생성, 일자별 상세 스케줄 생성, UI 시각화 등의 모듈로 구성되어 있다.
Fig. 3. System structure of the proposed system
시스템의 동작 과정은 다음과 같다. 먼저 플레이스 정보 생성 모듈에서는 여행 스케줄 생성에 필요한 플레이스 정보를 수집한다. 플레이스 정보 수집에 있어, 관광지 정보는 한국관광공사에서 제공하는 Tour API를 이용하며, 맛집이나 숙소 정보는 소상공인진흥공단에서 제공하는 공공 데이터를 이용한다. 플레이스 정보 수집이 완료되면, 플레이스 별로 소셜 리뷰를 수집하고 연관성이 떨어지는 노이즈 리뷰를 필터링하는 작업을 수행한다.
플레이스별로 수집된 리뷰를 바탕으로 인기 점수를 정량적으로 산정하기 위한 과정이 수행되며, III.1절의 식 (1)이 이용된다. 플레이스별로 인기점수 산정이 완료되면, 여행 목적지 내 인기 관광지들을 연결한 최단거리 여행 스케줄을 생성하며, 이는 이전연구에서 제안한 TSP 알고리즘을 이용한다. 그리고 III.2절의 알고리즘을 통해 여행 시나리오 템플릿을 기반으로 맛집, 카페, 숙소 정보를 추가하여 일자별 상세 여행 가이드를 제시한다. 생성된 스케줄 정보는 UI 시각화 모듈을 통해 반응형 웹의 형태로 모바일이나 PC 화면에 맞게 출력된다.
2. User Interface
아래 그림은 현재 구현된 프로토타입 시스템에서 경상남도 거제를 대상으로 생성된 여행 스케줄을 캡처한 화면이다. Fig. 4의 왼쪽 화면은 전체 여행 일정을 이동 경로와 함께 지도에 표시하였으며, 해당 화면을 아래로 스크롤하면 오른편과 같이 일정별 주요 여행지를 요약하여 리스트 형태로 보여준다. 리스트 내 각각의 관광지 정보에는 리뷰를 통해 정량화된 인기 점수와 대표 키워드 등이 출력되며, 관광지 정보 간에는 이동 거리가 km 단위로 표시된다.
Fig. 4. (a) complete tour itinerary in a map (left) and (b) its place information (right) suggested by the proposed system when the travel destination is set to Geoje
Fig. 4의 오른쪽 리스트에서 관광지를 클릭하면, 해당 관광지가 포함된 일자의 상세 여행 스케줄이 Fig. 5와 같이 출력된다. 전체 여행 스케줄과 동일한 방식으로, 상세 여행 스케줄 화면의 상단에는 지도상에서 이동 경로를 요약하여 보여주며, 아래로 스크롤할 경우 맛집, 카페, 숙소를 포함한 상세 이동 정보가 표시된다.
Fig. 5. (a) 1st day tour itinerary in a map (left) and (b) its place information (right) suggested by the proposed system when the travel destination is set to Geoje
상세 여행 스케줄에서 추천할 맛집이나 카페, 숙소가 하나 이상인 경우, Fig. 6의 왼쪽 화면과 같이 출력된다. 해당 화면에서는 1일차 여행 일정의 저녁식사 장소로 바릇, 쌤김밥, 어방가 세 군데가 추천되었으며, 가장 인기 점수가 높은 바릇이 우선 추천되고 나머지 두 곳은 “그외 근처에 추천할만한 곳”이라는 문구와 함께 후보지로 추천된다.
Fig. 6. (a) recommendation of multiple places for dinner in the 1st day tour itinerary (left) and (b) place information near Gongoji in a map (right)
상세 스케줄 리스트에 표시된 플레이스의 우측 지도 모양 아이콘을 클릭하면, 해당 플레이스 인근에 위치한 맛집이나, 카페, 숙소 정보를 함께 볼 수 있다. 이를 통해 추천된 이외의 플레이스도 검색하고 찾아갈 수 있도록 지원하고자 하였다.
3. Verification with Real Data
현재까지 구현된 프로토타입 시스템의 검증을 위해 경상남도 지역의 플레이스 정보를 수집하고 여행 스케줄이 적절히 생성되는지 확인하였다. 앞서 언급한 바와 같이, 플레이스 정보 수집에 있어 관광지의 경우 한국관광공사의 Tour API를 이용하였으며, 맛집, 카페, 숙소 정보는 소상공인진흥공단에서 제공하는 공공데이터를 이용하였다. 이를 통해, 경상남도 전체를 대상으로 수집된 플레이스 수는 63,819개였다. 수집된 플레이스에 대해, 다시 플레이스 별로 네이버 검색 API[21]를 이용해 블로그 글들을 수집하고 필터링하여 연관성이 높은 리뷰만을 추출하였다.
아래 표는 경상남도 내 18개 지역(시군구)을 대상으로 수집된 플레이스의 수와 리뷰 수를 보여준다. 리뷰 수는 최근 3년 이내에 작성된 블로그 글을 대상으로 집계하였으며, 리뷰의 총합은 475,871개로 조사되었다.
Table 8. Numbers of places and true reviews of 18 cities in the Gyeongnam province
위 데이터로부터 제안 알고리즘을 통해 인기 플레이스를 대상으로 생성된 여행 일정과 일정에 포함된 플레이스 수 및 인기 점수 합산 결과는 아래와 같다.
Table 9. Numbers of places, schedule length, and popularity score of the places included in the recommended tour schedules of the 18 cities in the Gyeongnam province
위 표에서 Schd. 항목은 여행 일정의 길이를 의미하며, 값으로 주어진 3n4d의 n과 d는 각각 night과 day의 약자로, 3박 4일을 의미한다. # of places 항목은 일정에 포함된 플레이스의 수를 의미하며, 해당 값에는 맛집, 카페, 숙소 및 후보군까지 모두 포함되어 집계되었다. 일정에 포함된 플레이스 수가 많다는 것은 추천 후보군이 풍부하다는 의미이며, 여행 일정의 길이와 비례하지는 않는다. (일정의 길이는 관광지 그룹 수에 비례한다.) Pop. score 항목은 플레이스들의 인기 점수를 합산한 값이며, 맛집, 카페, 숙소 추천에 있어 후보군이 포함된 경우, 후보군까지 포함한 평균값을 산출하여 적용하였다.
Table. 9의 결과를 보면, 거제, 남해, 통영 순으로 Pop. score가 높은 것을 알 수 있다. Pop. score, 즉 여행 스케줄에 포함된 플레이스들의 합산 인기 점수가 높다는 것은 해당 스케줄의 대중적인 만족도가 높을 가능성이 크다는 것을 의미한다.
아래 표는 지역별 스케줄의 Pop. score에서 관광지, 맛집, 카페, 숙소들의 합산 점수를 분리하여 보여준다. 이를 통해 지역별로 차이점을 파악하고, 사용자에게 다른 스케줄을 추천할 수 있다. 예를 들어, 관광지 자체의 매력도(인기 점수)는 거제보다 남해가 높음을 알 수 있다. 그럼에도 불구하고, 거제의 전체 점수가 더 높은 이유는 카페와 숙소의 인기 점수가 더 높기 때문이다. 이러한 사실로부터 사용자가 여행에 있어 카페 휴식이나 숙소의 퀄리티를 더 선호하는 경우, 거제 여행을 추천할 수 있으며, 관광지 자체의 매력도를 더 중요시하는 경우 남해 여행이 더 적합함을 알 수 있다.
Table 10. Popularity scores of tour spots, diners, cafes, hotels included in the recommended tour schedules of 18 cities in the Gyeongnam province
V. Conclusion and Future Work
본 논문에서는 이전 연구의 실행 결과로 주어진 최단 거리 여행 경로를 바탕으로 시나리오 템플릿을 이용하여 맛집, 카페, 숙소 정보를 포함한 일자별 상세 여행 스케줄을 제공하기 위한 알고리즘을 제안하고, 이를 구현한 프로토 타입 시스템에 대해 소개하였다. 프로토타입 시스템은 플레이스 정보 생성 및 리뷰 수집, 플레이스별 인기점수 산정, 최단경로 여행 일정 생성, 일자별 상세 스케줄 생성, UI 시각화 등의 모듈로 구성되어 있으며, 지도상에 여행 이동 경로와 상세 일정을 보여준다. 시스템 검증을 위해, 경상남도에 위치한 63,000여 개의 플레이스 정보와 각각에 대한 소셜 리뷰를 수집한 후, 이를 기반으로 도내 18개 시군구 별로 상세 여행 일정을 생성하고 제시함으로써 시스템의 효용성을 입증하였다. 그리고 추천된 일정으로부터 지역별로 특성들이 도출될 수 있으며, 이를 통해 사용자의 선호도에 따라 다른 스케줄을 추천할 수 있음을 함께 제시하였다.
이에 반해, 제안 시스템에서는 사용자의 선호도에 따른 맞춤형 여행 스케줄은 지원되지 않는다. 향후 연구에서는 여행지별 체류 시간이나 개인의 선호도 파악 등을 통해 제안 시스템에서 개인 맞춤형 여행 스케줄을 제공하기 위한 연구를 지속할 예정이다.
참고문헌
- B. H. Joeng and K. H. Kim, "Analysis of Differences of Importance and Satisfaction of Smart Tourism IT Services Among Steps of Tourism Life Cycle," The Journal of Internet Electronic Commerce Research, Vol. 19, No. 1, pp. 289-306, 2019. https://doi.org/10.37272/JIECR.2019.02.19.1.289
- Y. W. Yu, S. H. Kim, and H. G. Kim, "Travel Route Recommendation Utilizing Social Big Data," Journal of the Korea Society of Computer and Information, Vol. 27, No. 5, pp. 117-125, 2022. https://doi.org/10.9708/JKSCI.2022.27.05.117
- H. Yoon, Y. Zheng, X. Xie, and W. Woo, "Smart Itinerary Recommendation Based on User-Generated GPS Trajectories." Ubiquitous Intelligence and Computing, Springer Berlin eidelberg, Vol. 6406, pp. 19-34, Jan. 2010. https://doi.org/10.1007/978-3-642-16355-5_5
- J. Park, H. Jeong, and H. Ru, "Personalized Travel Schedule Creation System Based on Recommendation System," Proceedings of the KSCIC, Vol. 25, No. 1, pp. 105-108, Jan. 2017.
- B. S. Wibowo and M. Handayani, "A Genetic Algorithm for Generating Travel Itinerary Recommendation with Restaurant Selection," Proceedings of 2018 IEEE International Conference on Industrial Engineering and Engineering Management, pp. 427-431, 2018.
- S. H. Kwon and S. M. Park, "User Evaluation-based Travel Planning Modeling using Genetic Algorithm," Journal of Korean Institute of Intelligent Systems, Vol. 31, No. 4, pp. 311-317, Aug. 2021. https://doi.org/10.5391/JKIIS.2021.31.4.311
- H. Park et al., "Travel Route Recommendation System Using Collaborative Filtering and Content-Based Recommendation," Proceedings of the KIIT Conference, pp. 452-454, Oct. 2020.
- Tour API 3.0, Korea Tourism Organization, https://kto.visitkorea.or.kr/kor/gov30/tourapi.kto
- A. Sohail, M.A. Cheema, D. Taniar, "Geo-Social Temporal Top-k Queries in Location-Based Social Networks", In Australasian Database Conference, pp.147-160, Jan. 2020.
- J. Bao, Y. Zheng, D. Wilkie, and M. Mokbel, "Location-based and Preference-Aware Recommendation using Sparse Geo-Social Networking Data," Proceedings of the 20th International Conference on Advances in Geographic Information Systems, pp. 199-208, 2012.
- J. Park, S. Yoo, and O Jeong, "Social Context-Aware based Travel Recommendation System," Proceedings of KIISE Conference, pp.1926-1928, June 2016.
- T. Kurashima, T. Iwata, G. Irie, and K. Fujimura, "Travel route recommendation using geotagged photos", Knowledge and information systems, vol.37, no.1, pp. 37-60, 2012. https://doi.org/10.1007/s10115-012-0580-z
- I. Brilhante, J.A. Macedo, F.M. Nardi, R. Pergo, and C. Renso, "Where Shall We Go Today?: Planning Touristic Tours with Tripbuilder," Proc. of the 22nd ACM international conference on Conference on information & knowledge management, pp. 757-762, 2013.
- S. H. Park and S. Park, "Personalized Itinerary Recommend -ation System based on Stay Time," KIISE Transactions on Computing Practices, Vol. 22, No. 1, pp. 38-43, Jan. 2016. DOI: 10.5626/KTCP.2016.22.1.38
- Y. T. Wen, J. Yeo, W. C. Peng and S. W. Hwang, "Efficient keyword-aware representative travel route recommendation." IEEE Transactions on Knowledge and Data Engineering, Vol.29, No.8, pp.1639-1652, 2017. https://doi.org/10.1109/TKDE.2017.2690421
- J. Park, H. Jeong, and H. Ru, "Personalized Travel Schedule Creation System Based on Recommendation System," Proceedings of the KSCIC, Vol. 25, No. 1, pp. 105-108, Jan.2017.
- Small Business Promotion Agency, https://www.semas.or.kr
- H. G. Kim, "Efficient Keyword Extraction from Social Big Data Based on Cohesion Scoring," Journal of the Korea Society of Computer and Information, Vol. 25, No. 10, pp. 87-94, 2020. DOI: 10.9708/JKSCI.2020.25.10.087
- Y. W. Yu and H. G. Kim, "Interactive Morphological Analysis to Improve Accuracy of Keyword Extraction Based on Cohesion Scoring," Journal of the Korea Society of Computer and Information, Vol. 25, No. 12, pp. 146-154, 2020.
- Traveling Salesman Problem, Wikipedia, https://en.wikipedia.org/wiki/Travelling_salesman_problem
- Naver Search API, https://developers.naver.com/docs/search/blog/