에세이/결석에세이

결석에세이_허서원

허서원 2023. 7. 14. 23:19

지난 해 ‘1인 가구를 위한 레시피 데이터 분석을 주제로 프로젝트를 진행했습니다.

이 프로젝트 내용을 회고하면서 더 나아가 어떤 활동이 필요할지 생각해보겠습니다.

먼저 왜 1인 가구를 위한 레시피가 필요한가에 대해 답을 함으로써 이 프로젝트의 주제의 가치를 확인한 후 왜 1인 가구를 위한 새로운 레시피가 필요하다는 결론에 도달했는지 알아보겠습니다.

 


아래 바차트를 보면 알 수 있듯이 1인 가구의 비율은 점점 증가하고 있습니다. 실제로 국가통계포털의 2021 1인가구 비율은 전년대비 5.4% 증가한 33.4%로 바차트의 2025년 예상 비율을 이미 초과했습니다. 이렇게 1인 가구가 빠르게 증가하고 있는 가운데 통계청에 따르면 1인가구가 줄이고 싶은 소비항목에서 외식 소비는 39.2% 1위를 차지했습니다.

그러나 1인 가구는 상하기 전에 다 먹기 위해 얼마나 사야 되는지, 어떤 식재료가 다양한 요리를하기 위해 가장 적합한지 등과 같은 식재료 구매 정보가 부족하고 이런 식재료를 통해 무슨 요리를 할지와 같은 조리 정보 또한 부족합니다. 외식이 무조건 나쁜 건 아니지만 비용과 건강적 측면에서 보면 결코 좋다고는 할 수 없습니다. 그리고 통계청이 발표한 '2021 통계로 보는 1 가구' 따르면 2020 1 가구의 42.4% 균형 잡힌 식사가 어렵다고 응답했다고 합니다.

 

그럼 1인 가구 레시피는 왜 필요하며 왜 굳이 데이터를 분석해서 해결해야 할까요.

1인가구는 어째서 밥을 해먹지 않을까요. 여기에는 개인의 성향적 특성 말고 다른 환경적 요인이 있습니다. 그것은 조리기구의 부재, 환풍 문제 다가구에 비해 조리환경이 제한적이라는 점과 음식의 소비와 보관 역시 부담스럽습니다. 그리고 포털 사이트 검색을 통해 찾을 있으나, 정답이 없는 무수한 레시피들 무엇을 따를 지도 관건입니다. 그래서 방대하고 정답도 없는 문제를 데이터로 분석해 1인가구를 위한 레시피 추천을 하고자 합니다.

 

기존해결책은 레시피 분석 방식 자체에 대한 것과 레시피 추천 서비스 개발에 대한 가지 흐름이 있습니다. 먼저 레시피 분석 방식에 대한 논문은 번째로 레시피 연결망에서 요리 난이도 및 유사성 분석 (김수도, 이윤정, 윤성민, 조환규. 2016)이 있었습니다 연구는 레시피 데이터에서 재료명과 굽다, 볶다 재료동사를 추출해 빈도수를 따져 엔트로피 개념과 결합시킨 것입니다. 여기서 요리 난이도를 분석하는 것은 1 가구에게 쉬운 레시피를 제공할 있고 유사도가 높은 레시피로 식단을 구성한다면 식재료의 낭비가 줄어들어 1 가구에게 도움이 됩니다. 하지만 요리동사의 빈도수만을 고려한 엔트로피는 자칫하면 아귀찜이 쉬운 요리가 되는 맹점이 있습니다.

두 번째는 데이터 기반 레시피 학습 방식 연구 (김다영, 최수람, 최지은. 2017), 5개의 테이블을 구성해 데이터를 레시피를 학습시켜 레시피를 변형하거나 창조하는 레시피 학습 모델에 대한 연구입니다. 레시피 학습 모델이 자체적으로 레시피 데이터를 생산하는 것이 매력적입니다. 그러나 조리법은 고려하지 않았습니다. 허니감자찜 레시피를 학습해서 어쩌면 허니오이찜 레시피가 나올 수도 있는 겁니다.

세 번째는 텍스트 분석 기법과 온톨로지를 활용한 레시피 추천 방법 (홍지헌, 이희정. 2019)입니다. 이 연구는 점별상호량과 역문서빈도 온톨로지 등을 활용해 레시피 데이터를 분석한 것으로 궁합이 좋은 식재료가 포함된 레시피, 희귀한 식재료가 포함된 레시피, 대체 식재료를 사용하는 레시피를 추천하는 방법에 대한 연구입니다. 재료별 빈도 동사별 빈도를 분석하고 재료간 분석 그리고 재료와 동사 간 분석을 하고 또 여러 기법과 개념을 활용해 분석했다는 점이 좋습니다, 그리고 추천 방식도 3가지나 제안되었습니다. 그 결과물이 마늘을 완두콩으로 대파를 오이로 대체하는 등 상식적이지 못합니다.

 

 다음으로 레시피 추천 서비스 개발에 대한 기존 해결책입니다. 이 해결책들은 특별한 개념을 도입하는 식이 아니라 단어를 벡터화해서 코사인 유사도를 활용하여 분석을 합니다.

 첫 번째는 식재료를 이용한 창작 레시피 생성 방법(구승엽, 2017)으로 레시피 데이터를 실시간으로 크롤링하여 레시피 데이터 개수의 한계를 극복합니다. 그리고 식재료와 조리동작간 관계를 분석한 것으로 식재료를 대체해 레시피를 변형합니다. 창작이라기엔 무리가 있습니다.

 두 번째는 1인 가구를 위한 식단추천 서비스 제공 방법(박혜주, 2019)으로, 가격, 영양, 칼로리, 식재료의 양까지 고려해 알고리즘으로 식단을 짜줍니다. 이 연구는 서비스 구조가 매력적이지만 가격에 대한 알고리즘을 위한 데이터에 대해서만 나와있고 영양, 분량, 그리고 레시피 데이터 등 어떻게 수집하고 처리하고 분석하는지 나와있지 않습니다.

세 번째는 챗봇 형태로 구현한 사용자 맞춤형 레시피 추천 시스템 (안예진, 조하영, 강신재. 2020)으로, 구체적 시스템 설계 방법이 다 나와있어 추후 전처리와 개발에서 도움이 될 것 같습니다. 그리고 1인분으로 레시피를 정리하고 요리명과 재료간 관계를 따져 주재료와 부재료를 구분하는 내용도 있습니다.

네 번째는 레시피 데이터 기반의 식재료 궁합 분석을 이용한 레시피 추천 시스템 구현 (민성희, 오유수. 2021)입니다. 이 연구는 대체 식재료 리스트를 만들었지만 마늘 리스트에 다진마늘, 간마늘 이런 식으로 같은 단어를 분류하는 수준이었고 주재료와 부재료, 양념 등으로 재료를 나누어 가중치를 다르게 하겠다는 추후 연구계획이 참고할 만하다고 생각했습니다.

다섯 번째는 사용자의 식재료를 기반으로 한 요리법 추천 어플리케이션 디자인 (여건주, 이민구. 2021)으로, 데이터 분석 다루지 않았으나 사용자 테스트한 유저 인터페이스 디자인이 제시되어 있었습니다.

 

8개의 기존 해결책을 요약해보자면 우선 레시피 데이터는 요리명, 재료, 조리법으로 구성되어 있고 이를 분석하기 위해 엔트로피, 학습테이블, 엔톨로지 등 여러 개념들을 사용하기도 하지만 보통은 코사인 유사도를 활용해 분석함을 알 수 있었습니다. 레시피 추천은 재료를 입력하면 입맛이나 궁합, 비용 등 여러 요소를 고려해 레시피 DB에서 추천하는 방식입니다.

 

기존 해결책을 통해 저희는 레시피 데이터 텍스트 분석을 통해 레시피를 간소화하고 사용자 맞춤화하는 과정이 필요하다고 생각했습니다 따라서 좀 더 구체화된 저희의 분석 목표는 기존 레시피 데이터를 텍스트 마이닝을 해 꼭 필요한 재료와 대체 가능 재료로 나누고 창작 알고리즘 개발을 통해 사용자인 1인 가구 맞춤 레시피로 변형하는 것입니다.

 

먼저 레시피 데이터 구성요소간 관계를 설명해보겠습니다. 요리명은 밥이나 김치 같이 고유이름을 가지거나 순두부찌개 감자조림 같이 재료와 조리동작에서 파생됩니다. 이름에 출현하는 재료와 조리동작은 주로 주재료와 주조리법이 됩니다.

이 세 가지 간 관계에서 대체가능성, 조리난이도를 분석해내고 또 재료 간 관계에서도 대체가능성을 분석할 수 있는 것입니다. 따라서 1인가구를 위하여 보관, 조리가 용이한 재료로 대체할 수록 좋다.라고 생각했습니다.

 

그래서 목표했던 바를 말하자면 변형/창작 알고리즘을 활용해 레시피 추천서비스를 제공하는 것으로 맞춤형 레시피와 장보기 추천입니다. 상기에 입력된 식재료를 우선 고려하고 사용자 입맛, 궁합, 또 식재료의 활용도나 가격을 고려해 레시피를 변형/창작해 맞춤형 레시피를 제공하며 그 맞춤형 레시피와 앞서 말한 고려사항에 따른 장보기를 추천하는 것입니다.

 

이를 위해 식약처와 농림축산식품부, 만개의 레시피 데이터를 수집하고 백종원과 하루한끼, 자취요리신 박무땡 유튜브의 상세정보란 크롤링을 진행하여 데이터를 수집했습니다.

식약처 레시피 데이터는 식품의약안전처 공공데이터 활용 홈페이지에서 활용신청을 해서 CSV 파일을 제공받았습니다.

55개의 칼럼 중 20개가 조리법, 20개가 조리 이미지 파일 경로를 값으로 가지는 칼럼이었습니다. 이미지 파일은 보이지 않았고 쓸 일이 없어 열을 삭제했습니다. 그리고 조리법 칼럼 중 6개까지만 값이 있어 텅 빈 14개의 조리법 칼럼 역시 삭제했습니다. 그리고 이미지 경로 소와 대도 제거해 총 37건의 칼럼을 삭제했습니다. 그래서 총 18열이 남았고 이 밖에 중량, 단백질, 탄수화물 등 영양정보칼럼엔 널값이 들어있기도 해 추후 처리가 더 필요합니다. 또 여기 보시면 ? 번을 섞어 넣으라고 되어있습니다. 이런 식으로 잘못된 값을 가진 테이터 행은 삭제하여 총 917건의 데이터가 되었습니다.

 

두 번째로 농림축산식품부 레시피 데이터입니다. 이 홈페이지에서 신청글을 작성하면 이메일로 받을 수 있습니다.

기본정보, 재료정보, 과정정보로 총 3개로 쪼개져 있습니다. 세 테이블 모두 레시피 코드를 공통적으로 가지고 있어 레시피 코드를 키로 조인할 수 있을 것입니다. 레시피 기본정보가 요리명이 들어있는 테이블인데 칼럼을 뜻하는 첫 행을 제외하고 537행이니 이 레시피 데이터는 537건입니다. 그리고 재료별 분류와 가격별 분류에 널값이 존재해 이 데이터는 추후 조인과 널값처리 등이 필요합니다.

 

마지막으로 유튜브 상세정보란 크롤링을 해서 txt 데이터를 얻었습니다. 총 세 군데를 크롤링했습니다. 백종원은 가장 대중적이라고 생각해서 크롤링했고 자취요리 박무땡과 하루한끼는 1인가구에게 적합한 레시피라 크롤링했습니다. 셀레니움을 활용해서 크롤링해 박무땡 429, 하루한끼 173, 백종원 314건으로 총 916건의 데이터를 수집했습니다. 가장 처음 크롤링 했을 땐 더 많았으나 광고와 일상영상 등 노이즈 데이터를 제거하고 아무 채소라는 식으로 재료가 모호한 경우와 라면을 더 맛있게 먹는 법, 티라미수 초콜릿 등 요리레시피에 부적합한 데이터를 삭제했습니다. 그리고 요리명이 안 적힌 경우와 재료가 분명히 아무거나는 아닌데 제대로 적혀있지 않은 경우엔 직접 영상을 보고 요리명과 재료를 태깅했습니다. 또 패턴이 불규칙해서 파싱에 용이하게 수작업을 했습니다. 백종원은 아직 처리하지 못했는데 역시 파싱에 용이하게 정리하고 백종원 데이터에선 100인분 레시피 등을 처리하는 게 관건입니다. 그래도 하루한끼와 박무땡 레시피에 대해서는 현재 konlpy를 활용해 재료명사 리스트를 뽑아내는 코드까지 작성해냈습니다.

이렇게 수집한 레시피 데이터들은 konlpy 형태소 분석기와 word2vec, 코사인 유사도를 활용해 추후 분석에 활용될 예정입니다. 현재 캡스톤에선 재료명사추출을 하여 빈도수를 분석해 유용한 식재료를 알아보고 특히 박무땡과 하루한끼는 자취생 레시피이기 때문에 따로 요리명, 재료 등을 추출해 분석해볼 예정입니다.

 

그리고 농식품 빅데이터 거래소에서 무료 레시피 데이터를 얻었습니다.

 

이 데이터는 2007년부터 2021년까지 만개의 레시피서비스를 통해 수집된 데이터로 파일 형식은 CSV입니다. 이 데이터는 레시피 일련번호, 게시물 제목, 요리명 등 총 18개의 칼럼과 128400건의 요리 데이터로 구성되어 있습니다.

전처리 과정으로는 우선 일련번호, 게시물 제목, 게시자 아이디, 게시자 별명, 조회수, 추천수, 댓글수, 조리방법, 요리소개, 게시일자를 삭제했습니다. 그리고 재료목록에서 결측값을 갖고 있는 데이터를 삭제했고, 요리명이 누락된 데이터는 게시물 제목과 요리 소개를 참고하여 값을 채웠습니다. , 이번 주제의 초점은 1인 가구의 식사이기 때문에 식사 관련 데이터라고 볼 수 없는 빵과 디저트, /음료/술을 요리 종류 칼럼에서 찾아 삭제했습니다. 그러나 데이터 전처리 전과 후를 비교해보니 샌드위치, 전과 같이 간편식 또는 반찬으로 활용할 수 있는 요리도 전처리 대상에 포함되어 있어서 직접 삭제할 수밖에 없었습니다. 베이킹 레시피에서는 대체적으로 바닐라 익스트렉이 들어가기 때문에 재료 칼럼에서 바닐라 키워드를 검색해서 삭제했고 같은 이유로 이스트 삭제했습니다. 그 외에 요리 제목에서 마들렌, 스무디, , 브라우니, 크레페와 같이 디저트류 제목이 보이면 같은 요리명 데이터를 모두 삭제했습니다. 그리고 사먹는 게 더 나을 것 같은 막창, 번데기와 같은 식재료 데이터도 삭제했습니다. 그리고 컬리플라워 같은 식재료는 재료 칼럼에서 찾으면 스테이크 같은 요리가 떠서 부가재료로 추정했습니다. 그래서 요리명 카테고리에서 검색하여 컬리플라워가 제목에 있으면 주재료라고 추정하여 눈으로 확인 후 삭제했습니다이렇게 전처리를 진행하여 현재 8개의 칼럼과 79777개의 데이터로 구성된 파일이 되었습니다.

 

 

마지막으로 분석과 시각화 결과를 정리하겠습니다.

만개의 레시피와 식약처, 농림축산식품부 병합 데이터는 1인분부터 3인분까지 다양하고 유튜브 크롤링을 통해 수집한 데이터는 대부분 1인분 대상이라 비교 분석을 위해 따로 시각화했습니다.

 

먼저 만개의 레시피와 식약처 농림축산식품부 데이터에서 식재료 칼럼을 통해 자주 등장하는 식제료를 워드클라우드로 시각화했습니다. Konlpy를 통해 명사만 추출하여 식재료 리스트를 만든 후 collection 모듈에서 counter 클래스를 임포트하여 각 식재료별 빈도수를 셌습니다. 그리고 빈도수 상위 80개까지 딕셔너리 형태로 변환한 후 워드 클라우드로 시각화했습니다.

 

시각화 결과 마늘, 간장, 양파, 소금 등이 뚜렷하게 보이는 것을 확인할 수 있었습니다.

그리고 유튜브 크롤링을 통해 수집한 데이터를 워드 클라우드와 바차트로 시각화했습니다.

워드클라우드 시각화 결과 마늘, 양파, , 계란 등이 뚜렷하게 보이는 것을 확인했습니다.

바차트로 시각화한 결과는 911건의 데이터 중 231번 등장한 양파가 가장 많이 쓰인 걸 알 수 있었고, 그 뒤로 210건의 파, 148건의 계란이 뒤를 이엇습니다.

따로 분석을 진행했지만 빈출 재료에 마늘, 양파, , 계란 등이 비슷하게 등장했습니다.

앞으로의 계획은 식재료 딕셔너리를 만들어서 식재료 간 계열 분석을 진행하고 싶습니다. 그리고 식료품 물가 데이터를 수집하고 분석하여 추후 추천 알고리즘 개발에 반영하고 싶습니다. 또 블로그의 레시피 데이터를 크롤링함으로써 수집처를 다양화할 예정입니다. , 코사인 유사도와 워드투백 등을 활용한 기존 선행연구처럼 재료와 조리 동작간 관계를 통합 분석하고 싶습니다. 그리고 레시피 연결망에서 요리 난이도 및 유사성 분석을 진행하여 앞서 계획했던 재료와 조리 동작간 관계를 분석한 데이터와 결합하여 레시피 추천 시스템을 개발하고, 이를 챗봇 형태로 구현해 장보기 목록과 예산을 입력하면 레시피 데이터 기반 식재료 궁합 분석을 이용한 사용자 맞춤형 레시피 추천을 하고 싶습니다.

 

 

참고 문헌

- 지현호. 2022.”['혼밥 식탁' 1] 1인 가구, '집밥' 원하지만 현실은 '외식'". 1코노미 뉴스. 2022.09.28 김다영 (Da-Young Kim), 최수람 (Suram Choi), & 최지은 (Jjeun Choi). (2017). 데이터 기반 레시피 학습 방식 연구. 한국정보과학회 학 술발표논문집, 2017(12), 389-390.
- 김수도 (Su-Do Kim), 이윤정 (Yun-Jung Lee), 윤성민 (Seong-Min Yoon), & 조환규 (Hwan-Gue Cho). (2016). 레시피 연결망에서 요 리 난이도 및 유사성 분석. 한국콘텐츠학회논문지, 16(8), 160-167.
- 민성희 (Seonghee Min), & 오유수 (Yoosoo Oh). (2021). 레시피 데이터 기반의 식재료 궁합 분석을 이용한 레시피 추천 시스템 구현. 멀티 미디어학회논문지, 24(8), 1114-1120.
- 안예진 (Ye- Jin Ahn), 조하영 (Ha-Young Cho), & 강신재 (Shin-Jae Kang). (2020). 챗봇 형태로 구현한 사용자 맞춤형 레시피 추천 시스 템. 한국산학기술학회 논문지, 21(5), 543-549.
- 여건주 (Geonju YEO), & 이민구 (Mingu LEE). (2021). 사용자의 식재료를 기반으로 한 요리법 추천 어플리케이션 디자인. 한국hci학회 학 술대회, 2021(1), 784-790.
- 홍지현. (2018). 텍스트 분석 기법과 온톨로지를 활용한 레시피 추천 방법에 관한 연구 / A study on recipe recommendation method using text analytics and ontology.
- 박혜주. (2017). "1인 가구를 위한 식단 추천 서비스 제공 방법". 특허 출원번호 10-1978066, 출원일 2017년11월13일, 등록일 2019년05월 07일
- 구승엽. (2017) . "식재료를 이용한 창작 레시피 생성 방법". 국제 출원번호 PCT/KR2017/001205, 국제 출원일 2017년2월 3일, 등록일 2017년8월10일

'에세이 > 결석에세이' 카테고리의 다른 글

결석에세이_강구슬  (2) 2024.09.19
결석에세이_김규의  (0) 2024.07.15
결석에세이_김윤아  (0) 2024.04.12
결석 에세이_이유진  (1) 2023.05.21
결석에세이_김가림  (0) 2023.05.11