• mksong8

[데이터 분석] 오늘 저녁은 뭘 먹을까? : SeriousEats.com 웹스크래핑과 서비스 개선방안




배달 음식보다 집에서 요리해 먹는 저녁이 건강하고 저렴하죠. 그러나 직장에서 긴 하루를 보내고 퇴근 후 저녁 준비를 하는 것은 쉬운 일이 아닙니다. 시리어스이츠닷컴(SeriousEats.com)은 집에서 쉽게 요리 할 수 있는 레시피와 여러 콘텐츠를 제공하는 블로그입니다. ​ 시리어스이츠닷컴(SeriousEats.com)은 James Beard 상을 수상한 후 2011년까지 최고의 인기를 얻었습니다. 그 이후 레시피는 여전히 높은 점수를 유지하였으나 인기는 서서히 떨어지는 위기를 맞았습니다. 그러나 새로운 콘텐츠와 다양한 레시피를 개발하여 젊은 층의 유입과 광고 수익을 증대시키고 있습니다. ​



​ 이번 프로젝트에서는 시리어스이츠닷컴(SeriousEats.com) 웹사이트의 레시피 데이터를 수집해 보았습니다. Scrapy python 패키지를 사용하여 총 12,620 개의 레시피에서 재료, 점수 등 13 가지 항목 데이터를 수집하였습니다. ​ 첫 번째 목표는 새로운 레시피를 추가할 카테고리를 발견해 해는 것이었습니다. 시리어스이츠닷컴(SeriousEats.com)에 프랑스, 멕시코, 이태리 요리 레시피는 50여건 이상 찾아볼 수 있지만 새로운 레시피 몇 개를 더 추가한 다고 해서 신규 사용자들을 많이 끌어들일 수 없다는 생각을 했습니다. 대신 아프리카, 카리브해 레시피를 추가하는 것이 더 효과적일 것입니다. 등록되어 있는 이 지역 레시피는 10건 미만이지만 레시피 점수가 매우 높았기 때문입니다. ​ '새로운 레시피'가 신규 사용자를 많이 유입시키기에 역부족일 수도 있습니다. 저녁 준비를 위해 더 쉽고 편리한 방법을 제시해 준다면 신규 사용자의 유입에 더 효과적일 수 있겠죠! 저녁 메뉴 결정을 쉽게 하기 위한 서비스의 프로토타입을 만들어 보았습니다. 기본 아이디어는 사용자가 냉장고에 있는 재료나 먹고 싶은 재료를 입력하면 이 재료로 만들 수 있는 요리의 레시피를 보여 주는 것입니다. ​



​ 이것을 만들기 위해, 코사인 유사도(cosine similarity)라고 하는 NLP 기술을 사용하였습니다. 모든 단어를 축으로 만들고, 문장(레시피)을 벡터로 만들 수 있습니다. 문장을 벡터 값으로 표현했기 때문에 두 벡터 사이의 거리를 계산해 낼 수 있습니다. 이 방법을 통해 두 문장의 유사도를 정량화할 수 있었습니다. ​ 그리고, 개별 레시피의 재료 유사성을 계산하기 위해 다음의 방법을 적용하였습니다. ​ 1. 각 레시피에서 재료 단어를 추출합니다. 2. 각 레시피에서 재료가 나오는 회수를 셉니다. 3. 각 레시피 재료의 유사도를 계산합니다. 4. 가장 높은 점수의 레시피 링크를 수집합니다. ​ ​ 이 프로토타입을 테스트해 보기 위해 첫 번째 단계에서 새우 카레에 들어가는 재료인 새우, 코코넛, 실란트, 카레를 입력했습니다. 그러나 프로토타입은 코코넛 & 초콜릿 디저트를 추천해 주었습니다. 무엇이 잘못되었을까요? : ( ​ 코드를 다시 살펴보니, 유사도 점수를 정규화 하지 않았다는 것을 알게 되었습니다. 디저트 레시피에서 코코넛을 12번이나 언급하여 이런 결과가 나오게 된 것입니다. 이 문제를 해결하기 위해 파이썬의 세트 데이터 타입을 이용하고 L2 정규화를 하여 레시피의 길이가 코사인 유사도 점수에 영향을 주지 않도록 하였습니다. ​ 수정을 한 뒤, 예상하는 결과가 반환되는 것을 확인할 수 있었습니다! ​ 집에 있는 재료를 입력하면 요리 가능한 레시피를 표시해 나타내 주는 기능은 많은 신규 사용자의 유입 효과가 있을 것이라 확신합니다. ​ 지금의 시리어스이츠닷컴(SeriousEats.com) 검색 기능은 주요 재료 입력값을 바탕으로 한 레시피 검색만 가능합니다. 모든 재료를 입력하여 그 재료를 바탕으로 요리할 수 있는 요리의 레시피를 검색은 불가능합니다. 그리고 지금의 검색 기능은 너무 많은 레시피를 보여주기 때문에 오히려 요리할 메뉴의 결정이 쉽지 않습니다. ​ 위의 프로토타입 레시피 검색 방법을 이용한다면 입력한 모든 재료를 바탕으로 저녁 메뉴에 대한 결정이 쉽도록 적당한 개수의 레시피를 검색 결과로 보여주어 사용자의 편의성을 높여 줄 수 있습니다. 이 방법으로 사용자의 편의성이 증대되어 결과적으로 새로운 사용자의 유입을 높일 수 있을 것을 확신합니다. ​ 오늘 저녁은 뭘 먹을까요? : )

조회 77회

​고객센터

Tel: 02-596-8900  Fax : 02-6930-5709

10시 - 오후 7시(토, 일요일 및 공휴일은 휴무)

개인정보관리책임자 : 황재준   상호 : 유펜솔루션   대표자 : 김재훈   사업자등록번호 : 426-86-00939
주소 : (본사)대전광역시 유성구 엑스포로446번길 38, 3층 302호 / (지사 및 연구소)서울시 성동구 연무장 15길 11, B동 2층
​ⓒ 2019 UpennSolution Co., Ltd. All rights reserved.