Ce diaporama a bien été signalé.
Le téléchargement de votre SlideShare est en cours. ×

데이터야놀자발표_데이터로토이서비스만들기_조동민 (2).pdf

Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité
Publicité

Consultez-les par la suite

1 sur 57 Publicité
Publicité

Plus De Contenu Connexe

Plus récents (20)

Publicité

데이터야놀자발표_데이터로토이서비스만들기_조동민 (2).pdf

  1. 1. 데이터로 토이 서비스 만들기 :혼자서도 잘놀아요.. :데이터만 있다면 조동민 데이터야 놀자 2022
  2. 2. 심리학 데이터야놀자2022 스타팅멤버 데이터분석가 7기운영진 가끔..블로그 tjdrud1323@naver.com 링크드인 티스토리 블로그 혹시나.. 궁금하신게 있다면.. 👈👈👈 👉👉👉 발표자 소개
  3. 3. 데이터야놀자2022 발표 사용 코드 – https://bit.ly/3T5YStx 발표 자료에 들어간 코드는 이해를 돕는 수준에서만 사용하였습니다. 전체 사용 코드는 위 깃허브 링크에서 확인하실 수 있습니다.
  4. 4. 데이터야놀자2022 여러분의 관심을 하나라도 더 받아보고자 서비스라는 단어를 사용했는데요..
  5. 5. 데이터야놀자2022 일단 데이터로 서비스를 하려면..(feat. 누구나 다 아는 얘기) A : 수집할 데이터가 있어야 해! B : 수집한 데이터를 저장도 해야지 C : 적당한 형태로 가공도 해야지 D : 가공한 정보를 보여줄 수 있는 프론트도 필요해
  6. 6. 데이터야놀자2022 알긴 알겠는데.. 그래서 어떻게 하지? 데이터 엔지니어링을 공부해보자!
  7. 7. 데이터야놀자2022 가짜연구소 데이터 엔지니어링 스터디 운영 데이터 캠프 내 DE코스 수강 후, 각자 과제를 하는 방식
  8. 8. 데이터야놀자2022 목표는...! 데이터 파이프라인을 구축해보는 것 (블로그 링크) GoogleCloudPlatform 일배치실행 batch=일별로데이터를쌓는다는의미 ComputeEngine Read Write 데이터 수집 -> 저장 /가공 -> 시각화에 이르는 과정을 통칭하는 말
  9. 9. 데이터야놀자2022 여기까지 하고나니... 뭔가 더 만들어볼 수 있을 것 같은데...?
  10. 10. 내용 데이터야놀자2022 그런데 처음부터 너무 어려운 걸 하면..
  11. 11. 일단은 짧은 코스라도 완주(찍먹)를 해봐야 함.. 데이터 수집 데이터 저장 데이터 가공 클라이언트에게 전달 데이터야놀자2022
  12. 12. A : 수집할 데이터가 있어야 해! B : 수집한 데이터를 저장도 해야지 C : 적당한 형태로 가공도 해야지 D : 가공한 정보를 보여줄 수 있는 프론트도 필요해 GCPVM인스턴스로서버구축 음식점평점데이터수집 스프레드시트를 DB처럼활용 N개이상리뷰를가진음식점평점순위책정EX)상위N% 텔레그램챗봇활용 따라서, 아래 과정에 대해서 가능한 단순하게 완주할 수 있는 방법에 대해 공유 드리는 것이 본 발표의 목적입니다. 목표
  13. 13. 데이터야놀자2022 사진 속의 음식은..?
  14. 14. 데이터야놀자2022 우리가 이런 맛있는 음식을 찾을 때 검색 후 평점이나 리뷰를 참고한다.
  15. 15. 데이터야놀자2022 저는 특히 세 곳의 평점을 다 비교해봅니다. 직업병인가..?
  16. 16. 데이터야놀자2022 문득 든 생각, 그렇다면 내가 찾은 식당은.. 전체에서 몇 등 정도 될까? Mnet – 프로듀스 101 시즌2
  17. 17. 데이터야놀자2022 이렇게 한 눈에 비교할 수 있으면 뭔가 편하지 않을까..? 챗봇을 만들어보자! tvN– 응답하라 1988
  18. 18. 데이터야놀자2022 우선은 평점과 리뷰 수를 수집할 음식점 리스트가 필요 (링크)행정안전부_일반음식점_20220731 1. 영업 상태가 정상인 경우 2. 지번/도로명 주소 및 상호명을 확인할 수 있는 경우 3. 일부 지역만 선택(보정동/잠실동/석촌동/정자동/서현동/삼평동/화곡동/천호동)
  19. 19. 데이터야놀자2022 다음은 크롤링 서버 구축 크롤링 하나 하자고 집 컴퓨터를 밤 새 켜 놓을 수는 없다. 누가 내 컴퓨터를 끄더라도 수집은 계속 되어야 한다.. 웹에 있는 데이터를 수집하는 행위 MBC– 뉴스플러스
  20. 20. 데이터야놀자2022 이럴 때 필요한 것이..클라우드 서비스! 여러가지 종류가 있지만.. 처음 쓰시는 분이라면 GCP를 추천 왜냐하면, VM 인스턴스를 띄우기가 매우 쉽다. virtual machine instance – 클라우드에서 제공해주는 리눅스 계열 컴퓨터로 생각하면 쉬움 GCP가입 카드입력 VM생성 (GUI) SSH연결 클릭 ★Putty를 이용해 SSH키를 만들지 않아도 됨 VM 인스턴스 생성 가이드 링크
  21. 21. 데이터야놀자2022 터미널 세션을 종료해도 접근가능한 주피터 서버! 몇 줄 안되는 코드로 만들 수 있다! = 내 GCP 외부 IP 주소를 아는 사람이면 어디서든 접속해라! 포트는 8888이다. 터미널 종료 HUP signal 기존프로세스종료 신호 무시 기존프로세스유지 원래는.. nohup을 사용하면.. 참조 링크 주피터 서버 생성 가이드 링크
  22. 22. 데이터야놀자2022 터미널 세션을 종료해도 접근가능한 주피터 서버! 1. GCP외부주소:8888 입력 2. 설정한 패스워드 입력 3. 주피터가 우리를 반겨줍니다. 👋👋
  23. 23. 데이터야놀자2022 네이버/구글 지도 크롤링 시 주의 사항(코드 참조) 네이버 – 리뷰 수 수집 위해 별도 Rest API URI https://m.place.naver.com/restaurant/{가게고유ID}/review/visitor 구글 – 크롤링을 시도하는 순간 빛의 속도로 차단 / API 이용 추천(28,500건_맵단위 무료) 구글맵 API 이용 관련 링크 FOX– the Simpsons https://bit.ly/3T5YStx
  24. 24. 데이터야놀자2022 크롤링 시 주의 사항 여건이 되면 크롤링 채널 별로 수집 서버를 분리하자. 노트북1.카카오맵 크롤링 노트북2.네이버지도 크롤링 노트북3.구글맵 크롤링 기존 하나의 jupyterlab 서버에서 3개의 노트북 실행 서버에 문제가 생기면 모든 채널 크롤링 중단
  25. 25. 데이터야놀자2022 크롤링 시 주의 사항 여건이 되면 크롤링 채널 별로 수집 서버를 분리하자. 서버1.카카오맵 크롤링 서버2.네이버지도 크롤링 서버3.구글맵 크롤링 수정 세개의 jupyter notebook 서버에서 각각의 노트북 실행 문제 생긴 서버 외에는 정상 데이터 수집 인스턴스를 스냅샷으로 만들어 복사하면 편리하게 여러 서버를 만들 수 있음 To do – 장애가 발생한 서버에서 수집하지 못한 데이터를 다른 서버에서 수집
  26. 26. 데이터야놀자2022 크롤링 시 주의 사항 With 구문을 사용해보자 – 동작 완료와 동시에 driver종료 driver.quit()? driver.close()?
  27. 27. 데이터야놀자2022 여기까지 하시고 나면.. 컴퓨터 끄고 주무시면 됩니다 FOX– the Simpsons
  28. 28. A : 수집할 데이터가 있어야 해! B : 수집한 데이터를 저장도 해야지 C : 적당한 형태로 가공도 해야지 D : 가공한 정보를 보여줄 수 있는 프론트도 필요해 GCPVM인스턴스로서버구축 음식점평점데이터수집 스프레드시트를 DB처럼활용 N개이상리뷰를가진음식점평점순위책정EX)상위N% 텔레그램챗봇활용 데이터야놀자2022
  29. 29. 데이터야놀자2022 OK! 근데 데이터는 어디에 저장하지...? DB를 만들어야 하나?
  30. 30. 데이터야놀자2022 holy gspread! - 구글스프레드시트 구글 시트도 DB가 되나요? – DB는 아니지만, 데이터 관리만 할 수 있으면 됨!
  31. 31. 데이터야놀자2022 사용하기 매우 간편! Python에 gspread 라이브러리가 있어 API 인증키만 있다면 편리하게 관리 가능! GCP Spread sheet API 사용설정 서비스 계정 Json 키파일 다운 구글스프레드시트 에 서비스 계정 추가 자세한 내용은 이용법은 이 블로그 참조
  32. 32. 데이터야놀자2022 구글 시트로도 혼자 놀기는 충분합니다 – DB처럼 사용(업데이트/삭제 등 데이터 관리) 코드 참조 https://bit.ly/3T5YStx
  33. 33. A : 수집할 데이터가 있어야 해! B : 수집한 데이터를 저장도 해야지 C : 적당한 형태로 가공도 해야지 D : 가공한 정보를 보여줄 수 있는 프론트도 필요해 GCPVM인스턴스로서버구축 음식점평점데이터수집 스프레드시트를 DB처럼활용 N개이상리뷰를가진음식점평점순위책정EX)상위N% 텔레그램챗봇활용 데이터야놀자2022
  34. 34. 데이터야놀자2022 수집 기준 1. 일부 지역만 검색(보정동/잠실동/석촌동/정자동/서현동/삼평동/화곡동/천호동) 2. 검색 결과의 도로명 or 지번 주소 == 기존 식당 리스트 주소와 하나라도 일치하는 경우 정규표현식은 당근마켓 블로그 참조 코드 참조 https://bit.ly/3T5YStx
  35. 35. 데이터야놀자2022 그래서 수집 결과는...?(리뷰수 기준) 1. 카카오 – 10개 미만 리뷰가 다수 포진, 신뢰성 ↓ 2. 네이버 – 100개 이상 리뷰가 많음 3. 구글 – 그나마 분포가 고른편(하지만 실제 검색된 식당 수가 적은편)
  36. 36. 데이터야놀자2022 네이버(점수가 후한편), 카카오(점수가 짠편) 그래서 수집 결과는...?(평점 기준) 평점 분포 - 리뷰수 1개 이상 평점 분포 - 리뷰수 20개 이상
  37. 37. 데이터야놀자2022 순위 산정 시 최소 리뷰 수는 몇개로 해야할까? 리뷰수를 10개 이상으로만 해도 분포 왜곡이 많이 개선됨 -> 최소리뷰수 = 10개 평점 분포 - 리뷰수 10개 이상 평점 분포 - 리뷰수 30개 이상
  38. 38. 데이터야놀자2022 플랫폼별 평점/리뷰수 분위수 4점이 우리가 생각하는 4점이 아닐 수도 있다. (네이버/구글 모두 평균 평점 4점 이상) – 특히 네이버는 상향평준화
  39. 39. A : 수집할 데이터가 있어야 해! B : 수집한 데이터를 저장도 해야지 C : 적당한 형태로 가공도 해야지 D : 가공한 정보를 보여줄 수 있는 프론트도 필요해 GCPVM인스턴스로서버구축 음식점평점데이터수집 스프레드시트를 DB처럼활용 N개이상리뷰를가진음식점평점순위책정EX)상위N% 텔레그램챗봇활용 데이터야놀자2022
  40. 40. 데이터야놀자2022 가공한 정보를 보여줄 수 있는 프론트 – 텔레그램 챗봇 왜..? 만들기 진짜 쉬움 포트나이트 광고 中
  41. 41. 데이터야놀자2022 텔레그램 챗봇 텔레그램 앱 접속 -> BotFather 검색 -> /newbot -> 중복 되지 않는 이름 입력 챗봇 채팅방 링크 -> 더 아래로 내려가면 API 토큰 정보 있음 토큰 상호작용
  42. 42. 데이터야놀자2022 만들어봅시다! 일단은! 코딩해서 봇한테 뭘 시키려면 Updater를 써야겠구나
  43. 43. 데이터야놀자2022 Updater클래스는 어떻게 작동하는가? 토큰 주피터 서버 Updater생성 dispatcher한테 일 시킴 메시지 입력
  44. 44. 데이터야놀자2022 1. 토큰으로 Updater 생성 2. 행동 함수 정의(dinner_menu) 3. dispatcher에 행동함수할당 Updater클래스는 어떻게 작동하는가? 코드 참조 https://bit.ly/3T5YStx
  45. 45. 데이터야놀자2022 메시지는 어떻게 계속 주고 받을 수 있는거지? start_polling – 텔레그램으로부터 받은 메시지가 있는지 확인
  46. 46. 데이터야놀자2022 메시지는 어떻게 계속 주고 받을 수 있는거지? Polling 카톡 폭탄 _ 답장올때까지 계속.. (놀래? * 1000) LongPolling 메시지 올때까지 기다림 놀래? … 몇시간 후 -> 응 그래 -> 뭐하자 텔레그램은 Long Polling 방식 사용 이미지 출처(polliing 관련 설명)
  47. 47. 데이터야놀자2022 챗봇 결과물 코드 참조 https://bit.ly/3T5YStx
  48. 48. 데이터야놀자2022 챗봇 결과물 뭔가 이상한데.. 너무 안보여...
  49. 49. 데이터야놀자2022 챗봇 결과물 수정1 – DataFrame을 이미지로 받아보자. dataframe-image 라이브러리 이용 + pandas style로 데이터프레임 튜닝
  50. 50. 데이터야놀자2022 챗봇 결과물 수정1 – DataFrame을 이미지로 받아보자. 가게수 가게수 : 플랫폼별 리뷰 10개 이상 가게 수 주소 : 가게 주소 평점 : 가게 평점 평점-상위N% : 플랫폼 내에서 평점이 상위 몇%인지 리뷰수 : 리뷰수 리뷰수-상위N% : 플랫폼 내에서 리뷰수가 상위 몇%인지
  51. 51. 데이터야놀자2022 챗봇 결과물 수정1 – Pandas Style을 사용해보자. 데이터프레임 크기 픽셀 조절 바차트: 범위 (1 ~ 0) 상위 0%에 가까울수록 강조 (= 더 높은 순위) %소수점으로 표현 코드 참조 https://bit.ly/3T5YStx
  52. 52. 데이터야놀자2022 챗봇 결과물 수정2 – 검색 결과가 한 눈에 들어오게!(확대X) + 지도 링크 추가 Pandas style의 픽셀 값 튜닝
  53. 53. A : 수집할 데이터가 있어야 해! B : 수집한 데이터를 저장도 해야지 C : 적당한 형태로 가공도 해야지 D : 가공한 정보를 보여줄 수 있는 프론트도 필요해 GCPVM인스턴스로서버구축 데이터야놀자2022
  54. 54. 데이터야놀자2022 + 데이터 적재 파이프라인 만약, 아래와 같은 작업을 하고 싶다면? Buffer 테이블 생성 일별 검색 결과 저장 매일 자정 Buffer 테이블의 결과를 원본 테이블에 업데이트 이후, 리뷰수/리뷰평점 집계치 저장 가장 중요한 조건 – 매일 일정한 시간에 코드를 실행해야함.
  55. 55. 데이터야놀자2022 이럴 때 사용할 수 있는 것 – Airflow 정해진 시간에 코드 실행 (매일 오후 2시) 작업 간의 인과 관계를 설정할 수 있다. run_this_first 완료 후 branching 실행 편리한 UI 인터페이스 실행 내역 확인 / GUI로 재처리 에러 코드 확인 편리
  56. 56. 데이터야놀자2022 스케쥴러 추가 – 꼭 Airflow를 사용할 필요는 없음(설치하기 귀찮..) Python의 scheduler 라이브러리로 간단하게 수행 가능
  57. 57. 데이터야놀자2022 E.O.D 지금까지 발표를 들어주셔서 정말 감사드립니다.

×