프로젝트명 | 호식이 맛집추천 | 본인역할 | 서버 개발 | 개발인원 | 2명 |
관련전공 | 모바일 프로그래밍 | 수강학기 | 3-1 | 개발기간 | 5주 |
진행사유 | 모바일 프로그래밍 과목 텀 프로젝트 |
프로젝트 소개 | 사용자로부터 식당들에 대한 평점을 입력 받고, 이를 기반으로 사용자와 같은 식당들에 유사한 평점을 준 다른 사용자가 높게 평가한 식당을 사용자에게 추천해주는 시스템이다. 사용자들의 축적된 식당 평가 데이터에 User based recommend 알고리즘을 접목시켰다. 이에 따라 클라이언트의 추천 식당 요청이 들어오면 피어슨 상관계수 방식의 연산에 의거하여 다른 유사한 입맛의 사용자가 높게 평가한 맛집을 제공해준다. 식당 정보에 대한 데이터는 Google place API를 사용하였으며 서버가 사용자의 GPS좌표를 수신 받아 자동적으로 수집한다. |
개발내용 (본인 구현부분) | HTTP통신에 필요한 서버(APM, Tomcat)를 구축하였다. 또한 요구되는 DB 스키마를 작성하고 이를 구축하였다. 사용자가 평가한 내용은 서버의 CSV(comma-separated values)파일에 파일입출력을 통해 저장된다. 파일의 텍스트 한 줄은 한 레코드로서의 역할을 하며 사용자ID, 식당ID, 평가값이 저장된다. 협업 필터링을 위해 머하웃을 활용하였으며 이를 JSP로 구현하여 사용자의 요청에 즉시 실행되어 협업 필터링이 동작하고 그 결과를 사용자에게 반환한다. 사용자에게 평가 및 추천을 위한 식당 정보 수집을 위해 사용자가 어플리케이션을 처음 실행 한 순간 GPS좌표를 서버에 전송하여 해당 좌표를 기반으로 서버 측이 자동적으로 Google place API로 데이터를 요청하고 반환된 XML 문서를 Parsing을 통해 기존 서버에 없는 식당에 대한 정보를 판별하여 DB에 저장하도록 하였으며 안드로이드 부분에서는 XML Parsing, 식당 평가탭, 사용자의 GPS정보 전송 등을 HTTP통신을 활용하여 구현하였다. |
프로젝트 어려움/해결방안 | 첫 번째 문제는 어떤 방식으로 유사한 사용자를 판별하는가에 대한 문제이다. 이에 대해서 우리는 사용자가 평가한 데이터를 선형적으로 표현하고 이에 대한 정보를 다른 사용자와 대조 할 시 선형적인 구조의 차이 정도를 분석하고자 하였다. 이에 따라 피어슨 상관계수 방식을 사용하고자 하였으며 머하웃을 활용하고자 한 계기가 되었다. 둘째는, 머하웃 자체가 자바로 구성되어 있으므로 이를 웹으로 서비스하기 위한 방안이 필요하였는데 이는 머하웃 라이브러리를 JSP상에 구현함으로써 요청에 따라 자바 프로그램이 동작하고 해당 결과가 클라이언트에 즉각적으로 반환 할 수 있도록 함으로써 해결하였다. |
시연 영상 |
http://wpclab.smuc.ac.kr/~taeho/pf/hosigi.avi |
주로 서버 개발과 협업필터링 처리를 개발하였고 안드로이드에서는 서버 통신 모듈 및 XML파싱 부분을 도맡아서 진행했다.
기억에 남는 부분은 머하웃 라이브러리를 활용하고자 했기에 협업필터링은 자바로 구현이 되어있다.
단지 이것을 웹서비스로 만들기위해서 JSP를 제대로 공부하고 개발환경을 꾸렸다.
거기에다가 일반적인 웹호스팅으로는 톰캣을 지원하지 않기 때문에 KT 유클라우드 비즈 쿠폰을 활용해서 처음으로
클라우드 서비스를 사용해보았다는 점..
작은 것을 하기위해서 큰 것을 많이 공부했기에 애착이 가는 프로젝트인듯