top of page

[데이터 분석] 오늘 저녁은 뭘 먹을까? : 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) 검색 기능은 주요 재료 입력값을 바탕으로 한 레시피 검색만 가능합니다. 모든 재료를 입력하여 그 재료를 바탕으로 요리할 수 있는 요리의 레시피를 검색은 불가능합니다. 그리고 지금의 검색 기능은 너무 많은 레시피를 보여주기 때문에 오히려 요리할 메뉴의 결정이 쉽지 않습니다. 위의 프로토타입 레시피 검색 방법을 이용한다면 입력한 모든 재료를 바탕으로 저녁 메뉴에 대한 결정이 쉽도록 적당한 개수의 레시피를 검색 결과로 보여주어 사용자의 편의성을 높여 줄 수 있습니다. 이 방법으로 사용자의 편의성이 증대되어 결과적으로 새로운 사용자의 유입을 높일 수 있을 것을 확신합니다. 오늘 저녁은 뭘 먹을까요? : )





Comments


bottom of page