App

카카오톡 학식봇 만들기(AWS Dynamo DB) - 9

kjy0349 2021. 7. 16. 17:29

마지막으로 구현 할 기능은 menu_save, menu_show, menu_recommend 이다.

 

menu_save : 입력한 메뉴가 csv 메뉴 목록에 있다면, History에 추가합니다.

ex ) 나 오늘 불낙덮밥 먹었어. # date = 오늘 , 메뉴 = 불낙덮밥

이렇게 들어온 데이터들을 DB에 카카오 봇으로부터 넘어온 id를 파티션키로하여 저장해줌.

 

mesnu_show : History에 저장된 메뉴 목록들을 출력합니다.

ex ) 먹었던 메뉴 보여줘. 

DB에서 id를 키로해서 검색한 후, 저장된 History를 출력해줌.

 

menu_recommend : 저장된 History가 10개 이상일 경우, 실행 가능한 서비스.

10개의 메뉴들을 형태소 단위로 쪼갬 ex) 불낙 덮밥 -> 불낙, 덮밥 // 불닭볶음밥 -> 불닭, 볶음밥

그 후 인공신경망 모듈에 input으로 집어넣은 후, 오늘 메뉴 중 가장 높은 일치율을 보이는 메뉴를 추천해줌.

 

menu_save와 menu_show는 기능 작동에 별 문제가 없어 보이지만, menu_recommend는 History가 적어도 50개 정도는있어야 일치율이 50%정도 나올것 같다... 그렇다고 50개 이상일 경우 실행 가능한 서비스로 만들게 된다면, 사용자가 추천 받자고 50번씩이나 입력을 할것 같지도 않다.

 

정확도를 주시하면서 필수 History 개수를 최소화하여 지정해주는게 가장 주요한 포인트일듯.

 

오늘은 DynamoDB 테이블 생성, 파티션키 지정, 어제부터 사용하기 시작한 awslogs 패키지 테스트를 진행했다.

 

DynamoDB 테이블을 생성한 화면

 

테이블의 이름은 FHistory로, 파티션키를 Userid로 갖고 정렬키를 Write_Date로 가지는 테이블이다.

카카오 봇으로부터 넘어온 데이터를 바탕으로, Userid(카카오 봇에서 넘겨주는 데이터로, 각각의 사용자마다 고유한 값.)를 파티션키로 지정했다.

Write_Date를 정렬키로 지정한 이유는, 각각의 사용자가 며칠, 몇주에 걸쳐서 계속해서 데이터를 입력하게 되므로 

Date - Menu Name과 같은 형태로 정렬하는게 History 출력과 DB 관리에 효율적이라고 생각이 들었기 때문이다.

 

 

오늘 menu_save 함수를 만들면서 awslogs 패키지를 사용하였는데, 예상대로 매우 만족스러웠다.

awslogs 사용 화면

request를 보내자마자 바로 로그가 출력되는것은 아니였지만, 몇 초 이내로 출력되어서 개발에 충분히 도움이 됐다.

 

곧 menu_save와 menu_show를 구현 할 수 있을것 같다.