배달의 분석 그리고 사용자 예측

정보기술을 활용하여 배달산업을 발전시킬 Next Step

지난 달 한국에 다녀온 배기홍 대표님에게 배달의 민족 요기요의 배달앱 시장 쟁탈전이 매우 뜨겁다고 전해 들었다. 월드컵 중계 때문에 한국 방송 봤는데 역시나 마케팅에 돈을 쓰고 있더라. 관심이 생겨 살펴 봤는데 이 서비스 모토가 **“정보기술을 활용하여 배달산업을 발전시키자!”**다. 비지니스 오리엔티드 개발자로서 방향이 바람직하다는 느낌을 받았다.

한국 시골, 서울, 뉴욕, 로스엔젤레스에서 살아 본 경험으로 봤을 때 한국 음식 배달 시장의 규모와 경쟁력은 가히 최고라 말할 수 있다. 그나마 뉴욕에서는 delivery.com 등 배달 서비스를 이용할 수 있었지만 기본적으로 외식 가격이 높게 형성되어 있는데다 음식 종류도 적고 팁도 꽤 줘야해서 여러 고민 끝에 시켜 먹는 경우가 많았다.

배달의 민족을 서비스하는 우아한 형제들이 대규모 투자도 유치했다고 해서 앱과 서비스가 한국의 멋진 IT + 배달 인프라와 어떻게 잘 접목되었나 기대를 하고 써봤는데 약간 실망했다. 아직까지는 리뷰와 음식 주문을 위한 기본적인 기능만 제공하고 있기 때문이었다. 하지만 배달의 민족이 쌓고 있는 데이터에서 큰 가능성 또한 발견할 수 있었다. 나라면 어떻게 그 데이터를 이용해 서비스의 경쟁력을 높이고 수익화에 기여할 수 있을지 고민해 봤다.

리뷰 자연어 처리를 통한 의견 분석

Yelp에서 볼 수 있듯이 로컬 비지니스에서 정제된 리뷰 만큼 사용자의 목소리를 효과적으로 반영하는 도구는 찾기 힘들다. 사용자 리뷰를 잘 다루기로 유명한 Yelp, Amazon, Consumr Reviews, TripAdvisor 등 외국 서비스들은 사용자가 리뷰를 작성할 때 부터 적절한 가이드라인을 제공해 자신들이 분석하기 좋은 형태로 데이터를 입력하도록 유도하기도 한다.

하지만, 사용자에게 리뷰 정보를 입**력 받는 대다수의 한국 서비스들은 아직 자연어 처리를 통한 사용자 의견 분**석을 무관심하여 소중한 분석 자원을 놓치고 있다.

또, 한글은 영어와 달리 띄어쓰기를 하지 않아도 그 의미를 파악하는데 어려움이 없어 많은 사용자들이 맞춤법에 그다지 신경을 쓰지 않는다. 은어와 줄임말이 많다는 장벽도 있다. 따라서 이를 정제하지 않으면 기계를 이용한 분석은 정확도를 잃게 되며, 사용자들도 업소의 리뷰를 하나씩 모두 읽어보는 것 외에는 별 다른 능동적 검색을 할 수 없다.

이런 문제점들을 해결하며 리뷰 자언어 처리를 통한 의견 분석을 구현하는 과정과 이를 통해 얻을 수 있는 이점들을 순서대로 정리했다.

1. 데이터 스크래핑

데이터 분석을 위해 먼저 배달의 민족 웹사이트에 공개되어 있는 식당 정보 및 리뷰들을 모두 긁었다. 이런 작업을 많이 하다보니 Crawl-Baby 라는 웹페이지 스크래핑을 위한 node.js 모듈을 만들어 필요할 때 마다 사용하는데 이번에도 이를 활용했다.

배달의 민족의 웹사이트 구조는 간단해서 다음의 두 가지 URL 패턴으로 충분한 데이터를 얻을 수 있었다.

업소 번호도 고유 아이디가 아니고 순차 번호로 되어 있어 순서대로 접근했다. 배달의 민족 발표자료에는 130,000+ 업소가 등록되었다고 하는데 웹사이트에서 접근할 수 있는 업소는 50,000개가 되지 않았으며 업소 번호의 최대값도 100,000이 넘지 않는 것이 의아했다. 리뷰의 총 개수는 3,700,000개 정도 였으며 이를 단순 계산 해보면 한 업소 당 평균 70개가 넘는 리뷰를 보유하고 있다는 말이 된다. 결코 작지 않은 숫자였다.

배달의 경우 그 업의 특성 상 업소와 사용자의 지역적 밀접도가 매우 중요하기 때문에 이를 고려하기 위해서 업소의 위도, 경도 값을 함께 저장할 필요가 있었다. 이는 업소의 주소를 다음 로컬 주소-좌표 변환 API를 이용했는데 훌륭했다.

2. 띄어쓰기 보정

원래 직접 HMM을 이용해 띄어쓰기를 구현해 보려 했으나 의미 있는 결과를 얻기 위해 사용되는 코퍼스의 양이 많아질수록 학습이 너무 오래 걸려 일단 포기하고 네이버랩 자동 띄어쓰기 서비스를 이용했다.
추후 음식 리뷰 분석 만을 위한 코퍼스를 추려 학습시키면 좋은 결과가 있겠다는 생각은 들었다.

3. 맞춤법 보정

맞춤법 보정을 직접 구현하는 것은 엄두가 나지 않아 인터넷에서 맞춤법 검사기를 검색해 활용했다. 이걸 내가 만든다면 어떻게 접근해 볼까 이런 저런 고민을 해봤는데 영어 작문을 도와주는 Ginger 같은 서비스 구현 시도는 해볼 수 있겠다 싶었다. 물론 supervised learning이 되어야 하기 때문에, 맞춤법이 옳다는 가정을 할 수 있고 쉽게 얻을 수 있는 신문기사로 시작하면 보정 후 신문기사스러운 글을 얻게 될 확률이 높긴 하겠다.

4. 형태소 분석 — 은전한닢 프로젝트

작년부터 형태소 분석엔 예외 없이 은전한닢 프로젝트를 사용하고 있다. 빠른 속도와 적당한 성능이 마음에 들어 node.js에서 활용하려고 mecab-ffi 모듈도 하나 만들어 공개했는데 mecab의 본고장인 일본에서 다운로드 되고 있다.

5. 음식 배달 관련 긍정, 부정어 사전 제작

몇 달 전, 유아용품 리뷰 분석 앱 BabyShopR 를 만들며 알게 된 사실 중 하나는 새로운 분야에 대해 의견 분석을 시작하기 가장 좋은 방법은 Rule-Based 방식이라는 것이었다.

어떤 명사를 꾸미는 형용사 또는 동사가 긍정인지 부정인지 구별하여 이를 사전으로 만들어 놓고 활용하는 방법이다. 특히 한글의 경우 자연어 처리 관련 연구가 활발한 영어와는 달리 얻을 수 있는 자료가 적기 때문에 맨 땅에 헤딩하듯 시작할 수 밖에 없는데 이 때 유용하다.

다음은 최초 긍정, 부정어 사전을 만들기 위해 거친 과정이다.

  1. 별 1개 짜리 리뷰들을 모아 따로 형태소를 뽑아낸다.
  2. 별 1개 짜리 리뷰들에서 나온 형태소들을 품사 별로 그루핑 한 후 출현 빈도 순으로 정렬한다.
  3. 그루핑 된 품사 중에서 조사, 어미, 부호 등 필요 없는 품사들은 제외하고 일반 명사, 고유 명사 등의 체언과 동사, 형용사 등의 용언, 부사 만 남긴다.
  4. 여기까지 진행되면 아래과 같은 리스트를 얻을 수 있다.
  5. 별 5개 짜리 리뷰들도 따로 모아 위 1~5의 과정을 거친다.
  6. 별 1개와 별 5개에서 동시에 100개 이상 집계된 형태소들은 제외한다.
  7. 남겨진 형태소들을 눈으로 훑어보며 현저히 오류로 보이는 것들을 제외하고, 후순위로 밀려있으나 중요하다고 판단되는 것들은 끌어올린다.
  8. 각각의 결과를 사전으로 저장한다.

1 맛 NNG,*,T,맛,*,*,*,*,*
2 양 NNG,*,T,양,*,*,*,*,*
3 배달 NNG,*,T,배달,*,*,*,*,*
4 맛없 VA,*,T,맛없,*,*,*,*,*
5 전화 NNG,*,F,전화,*,*,*,*,*
6 비싸 VA,*,F,비싸,*,*,*,*,*
7 늦 VA,*,T,늦,*,*,*,*,*
8 불친절 NNG,*,T,불친절,Compound,*,*,불+친절,불/NNG/*/1/1+불친절/Compound/*/0/2+친절/NNG/*/1/1
9 별로 MAG,성분부사/정도부사,F,별로,*,*,*,*,*
10 느려 VA+EC,*,F,느려,Inflect,VA,EC,느리/VA+어/EC,*
...

리뷰 분석을 통한 Value Proposition

1. 업소별 특징 도출

한 업소의 리뷰들을 긍정, 부정어 사전을 이용한 Rule-Based로 비교해 해당 업소의 특징점을 도출해 낸다.

현재 사용자가 배달의 민족 앱을 이용할 때 리뷰를 다 읽지 않고 한 눈에 해당 업소가 좋은지 나쁜지 판단할 수 있는 지표는 평균 별점, 리뷰 개수, 즐겨찾기 수 밖에 없다. 하지만 이 업소별로 도출된 특징 중 ‘푸짐’, ‘친절’, ‘빠름’ 등의 키워드로 장점을 업소 리스트 페이지에서 간략히 보여준다면 사용자 만족도를 올릴 수 있게 된다.

특히 사용자들의 리뷰를 읽다보면 별 1개를 주고 좋은 평을 하는 경우는 없지만 별 4~5개를 주고 악평을 하는 경우는 쉽게 발견됐다. 이는 평균 별점의 false positive가 높이게 되는데 이에 대한 보정을 가능케 한다.

2. 지역별, 음식 카테고리별 사용자 성향 도출

배달의 민족의 사용자는 배달을 시키는 고객 뿐만 아니라 업소의 사장님들도 포함된다. 이 사장님들을 만족시키기 위해서는 배달의 민족이 주는 가치가 뚜렷하고 의미 있다는 것을 주지시키는 것이 중요하다.

사장님들은 고객을 알고 싶어하고 어떻게 접근해야 옳은 것인지 궁금할 때가 많은데 업소의 지역별, 카테고리별로 고객들이 무엇을 중요시 하고 무엇에 실망하더라는 수치화 된 보고서를 일정 기간 마다 제공할 수 있다. 이는 영업부서의 중요 Selling point로 활용될 수 있다.

미국내 한인 민박 예약 서비스인 한인텔의 예를 들면, 게스트하우스 사장님이 한인텔에 기꺼이 수수료를 내면서 고객을 유치하는 이유 중 하나는 제대로 된 피드백을 얻을 수 있는 거의 유일한 수단이었기 때문이었다. 사장님들에게 고객이 한 번 이용 후 소리 소문 없이 사라지는 것 만큼 두려운 일은 없었다.

3. 사용자별 성향 도출

사용자가 남긴 리뷰들을 분석해해당 사용자가 배달음식에서 주안점을 두는 항목이 무엇인지 유추한다.

배달이 늦었을 때 불만을 토하는지, 양이 적었을 때 화를 내는지, 친절하지 않았을 때 악플을 다는지 등을 그 동안의 리뷰 패턴으로 감지하고 주문 시 업소에게 가이드 하여 업소의 사용자별 맞춤형 배달을 가능케 하고 사용자 만족도를 올린다.

분석을 넘어 예측으로

처음 배달의 민족을 봤을 때 이 서비스가 과연 단순 배달 연계를 넘어 정보기술을 활용해 배달산업을 발전시킬 수 있을 것인가에 대한 대답이 너무나 선명하게 보였다. 답은 “그렇다”이다. 현재 나와있는 추천 기술들을 활용할 때 배달주문앱 만큼 만족도와 활용도 높은 사용자 예측이 가능한 서비스가 없기 때문이다.

사용자 패턴 분석

이미 서비스를 운영하는 측에서 사용자 로그를 쌓고 이를 분석하는 여러 툴들을 잘 활용해 아래와 같은 것들을 뽑아 보고 있을 것이다.

  • 사용자별 애용 업소
  • 사용자별 선호 음식 카테고리
  • 사용자별 선호 음식 메뉴
  • 사용자별 선호 주문 시간대
  • 사용자의 성별, 나이대, 주문 지역

사용자 취향 예측

사용자 취향 예측이란 기존 사용자들의 행동들이 먼저 학습되고 이를 기반으로 어떤 사용자의 기호나 다음 행동을 유추해내는 것을 말한다.

기존 사용자들의 행동을 학습시키기 위해 Machine Learning이 활용되는데 그 중에서도 유사도 측정 알고리듬과 Collaborative Filtering을 이용해 사용자가 좋아하는 메뉴와 업소를 찾아냄으로써 사용자 취향을 예측하고 맞춤형 푸시 및 쿠폰 등 마케팅을 가능케 한다.

사용자 취향 예측 구현

사용자 취향 예측을 하기 위해서는 각 사용자들의 주문 내역 등 배달의 민족 웹사이트에 공개되어 있지 않은 데이터가 필요하다. 때문에 리뷰 분석 처럼 실제 구현해 볼 수는 없고 어떻게 사용자 취향 예측을 할 수 있는지 Recomio 추천 API 구현 경험을 바탕으로 그 과정을 간략히 설명한다.

1. 사용자의 업소별 만족도 측정

먼저 사용자가 어떤 업소에 대해서 얼마나 만족했는지에 대한 측정이 필요하다. 만족도의 가장 명확한 지표는 사용자가 남긴 업소에 대한 별점과 리뷰를 반영하는 것이다. 만약 별점과 리뷰가 없을 경우에는 한 업소에 두 번 이상 주문할 경우 해당 업소에 대한 만족도가 높을 것으로 가정할 수 있다.

2. 사용자의 음식 카테고리별, 메뉴별 선호도 측정

사용자의 음식 선호도는 업소에 대한 별점, 리뷰와는 상관 없이 어떤 음식을 많이 주문하는가에 따라 판단할 수 있다.

3. 사용자의 우선순위, 업소의 장단점 파악

리뷰 분석을 통해 사용자가 배달 음식에서 중요시 생각하는 것이 무엇인지, 나아가 각 업소의 장단점을 파악한다.

만약 내가 배달의 민족 대표라면 주문 후 리뷰를 달지 않은 사용자에게 매번 직접 전화를 걸어서라도 사용자 피드백을 시스템에 반영하고 싶다. 이를 통해 사용자와 업소의 궁합을 미리 점쳐볼 수 있는 발판을 마련하고 타겟형 마케팅, 광고의 시발점으로 삼아야 한다.

4. 사용자 간 유사도 측정

위 1, 2, 3항에서 다룬 각 수치화 된 지표들을 기반으로 모든 사용자 간 유사도를 구할 수 있다. 여기에 지역, 주문 시간 및 사용자 성별, 나이 등을 추가 반영하면서 유사도 값을 조절한다.

5. 사용자 취향 예측

  1. 사용자A가 치킨을 좋아하고 족발을 싫어하는데 해장국을 좋아할지 알고 싶다면 사용자A와 유사한 사용자들의 해장국 선호도를 살피면 된다.
  2. 사용자A가 업소1을 좋아할지 아닐지 알고 싶다면 사용자A와 유사한 사용자들의 업소1 만족도를 살피면 된다.

6. 업소별 선호 사용자 예측

위 사용자 취향 예측의 역을 취하면 업소별로 해당 업소를 좋아하거나 싫어할 사용자들을 미리 추려낼 수 있다.

사용자 분석, 예측을 통한 Value Proposition

1. 이미지 쇄신

현재 배달의 민족은 단순 배달 연계 서비스에 가까운 모습으로 바로 결제 시에도 CS부서가 대신 전화 주문을 한다는데 사용자들이 실망을 감추지 못하고 있다. 배달의 민족이 정보기술을 활용하여 다양한 시도를 하는 모습은 이미지 쇄신에 도움이 될 수 있다.

2. 판 바꾸기

배달의 민족과 요기요가 대규모 투자 유치를 기반으로 마케팅에 힘을 쓰는 이유는 배달앱이 검증된 비지니스 모델이기 때문이다.
이음에서도 본건데 한국에서는 마케팅 하는 만큼 사용자가 유입되고 유입된 사용자 중 일정 비율 만큼만 액티브 유저가 되고 액티브 유저 중 일정 비율 만큼만 결제를 하고 결제 회원 중 일정 비율 만큼만 지속적으로 결제를 한다.

배달의 민족, 요기요, 배달통 등 모든 배달앱들이 지금의 모습을 유지한다면 결국 돈싸움으로 끝날 것이다. 하지만 추천 및 분석 기술을 갖고 다른 접근을 한다면 이건 다른 싸움이 될 수 있다. 플랫폼 장악력에서 기술로 앞서 나갈 수 있다.

3. 맞춤형 푸시 메시지

모바일 서비스에서 사용자의 반응을 일으키는건 Push이고, 가치 있는 정보를 Push 할 수 있느냐 못하느냐에 사용자 리텐션이 달려있다. 이음 같은 소셜데이팅, 쿠팡 같은 소셜커머스 모두 기확보한 사용자 Pool을 바탕으로 Push 또는 이메일을 날려 사용자를 움직이는데 혈안이 되어있는 이유도 바로 그것이다. 푸시를 보내지 않으면 사용자 움직임이 없고 그렇다고 가치 없는 푸시를 날리면 사용자는 떠난다.

사용자가 좋아하는 음식을 만족도 높은 업소에서 먹을 수 있는 시간에 권해 주는 것이 사용자 결제률을 높이는 최고의 방법이다. 이런 시도를 가장 잘 하고 있는 곳이 모바일 게임 업계다. 엄청난 분석과 노력이 선행되었고 Know-how와 검증된 모델이 있다. 그들은 사용자가 그냥 떠나가도록 놔두지 않는다. 접속이 없으면 유료 아이템을 공짜로 주면서까지 유혹한다.

같은 시도를 배달앱도 할 수 있다. 예를 들어, 스포츠 경기도 없고 날씨도 그래서 배달 수요가 적은 날 사용자 취향을 반영한 치킨+맥주세트 할인 쿠폰을 Push 해준다면 거부하기 힘든 유혹이 될 것이다. 또, 제 때 밥을 하기 어려운 아기 엄마들에게는 낮 시간대에 한식이나 분식 메뉴를 Push 한다면 더 많은 반응을 얻을 수 있다.

이상 배달의 민족의 현 상황과 나아갈 방향을 리뷰 분석과 사용자 예측이라는 기술적 관점에서 살펴봤다.

지금 모든 배달앱 서비스가 갖고 있는 구매 기록 등 기본적인 1차 데이터 위에 분석과 예측으로 여러 실험을 통해 성공적인 2차 데이터셋을 구축한다면 다른 업체들이 보유하지 못한 경쟁력을 갖게 될 것이라 확신한다.

이 글이 도움이 되셨다면 밑의 Recommend 버튼을 꾹 눌러주시면 감사하겠습니다.