사용한 도구: 파이썬, 모두 거짓말을 한다(세스 스티븐스 다비도위츠 저)
순서
문제를 어떻게 하면 해결할 수 있을까?
학생들은 무엇을 원하고 있을까? (이번 글)
챗봇, 컨셉은 있는 거야?
가장 빠르게 원하는 결과를 얻는 인터페이스
학생들의 기억에 남으려면
제가 가장 좋아하는 말이 있습니다.
"지피지기면 백전불태" (상대를 알고 나를 알면 백번 싸워도 위태롭지 않다)
손자병법에 나오는 말로 '아군이 가장 다치지 않고 적군을 굴복시키는 것'이라는 뜻입니다.
상대방와 나를 잘 알고 내가 어떻게 행동해야 할지 분명하게 해야 리스크를 줄일 수 있다는 뜻으로도 풀이가 됩니다.
최종결과 (참고로 저희 학교 학생들만 쓸 수 있는 기능들입니다) 그럼 프로젝트에 적용시켜봅시다.
우리는 이 프로젝트에서 누구를 이해하면 좋을까요?
대상은 저희 대학교에 다니는 학생들입니다.
학생들 중에서도 2 분류로 나누면
신입생, [2,3,4] 학년 학생으로 나눌 수 있을 것 같습니다.
2 분류가 고민하는 종류 차이가 다르다고 느껴졌거든요.
그걸 어떻게 알았냐고요?
이 글을 끝까지 읽으면 아시게 될 것입니다 ㅎㅎ
설문조사는 제대로 된 데이터를 얻을 수 있을까?
사용한 도구:모두 거짓말을 한다(세스 스티븐스 다비도위츠 저)
이 책은 사람들은 설문조사보다 검색 결과에서 더 솔직히 말한다를 데이터로 풀어서 주장하는 책입니다.
크롤링을 하게 된 계기도 이 책에 상당 부분 설득을 당했기 때문인데요.
아래의 글을 읽어봅시다.
"저희 ㅇㅇ학교 다니는 학생인데 과제 설문조사 부탁드려도 될까요..?"
"아.. 네.. (귀찮으니까 대충하고 가야지)"
"아 바빠서요"
길 지나가다 보면 많이 보는 모습인가요?
상대를 이해하기 위해서 사람들이 쉽게 접근하는 것이 있습니다.
바로 설문조사입니다.
요즘에는 구글 폼, 네이버 폼 등 온라인으로도 쉽게 설문조사를 할 수 있습니다.
그만큼 대중화가 되어있으면 좋은 걸까요?
저는 설문조사에 대해 3가지 의문점을 가졌습니다.
과연 좋은 질문을 던질 수 있을까?
사람들이 솔직하게 대답을 해줄까?
설문하는 사람이 스스로를 잘 모르고 답한다면?
또한 수많은 사람들에게 설문을 해야 내가 얻으려는 정확한 정보를 얻을 수 있습니다.
하지만 방학기간에다가 주변 지인에게만 설문을 하고 얻는 정보가 과연 도움이 될까라는 의문도 가졌습니다.
그렇게 '어떻게 하면 좋을까?' 고민하다가 대학 커뮤니티 앱에서 힌트를 얻었습니다.
익명이면 용기가 생긴다
대학생들이라면 대부분이 알고 있을 앱이 있습니다. '에브리타임'이라는 앱인데
학생들의 시간표를 짜주는 서비스로 시작해서 커뮤니티까지 활발하게 이루어지는 앱입니다.
특징은 글을 올릴 때 익명으로 올릴 수 있다는 점입니다. 익명의 장단점이 있지만
장점을 말해보자면 누구든 솔직하게 말해도 안전하다는 것입니다.
"ㅇㅇㅇ교수님, 코에 코딱지 꼈다!"
이렇게 글 올려도 익명인데 누가 썼는지 어떻게 알겠어요?
물론 에브리타임에서 활동하는 학생이 몇 명인지 파악도 어렵고
게시글에 올라온 글의 데이터로 판단하는 것이 전부 맞는 것은 아니지만
저는 익명의 솔직함이 학생들이 원하는 것이 무엇인지 힌트를 얻을 수 있을 것 같다고 판단했습니다.
베스트 글을 크롤링하자
인스타그램의 '좋아요' 버튼을 한 번쯤은 눌러보셨을 겁니다. 공감하거나 좋다는 뜻으로 누릅니다.
에브리타임도 마찬가지로 그런 시스템이 있습니다.
베스트 게시판은 많은 사람들에게 일정 수의 '좋아요'를 받은 글만 모인 게시판입니다.
그만큼 좋은 것이든 나쁜 것이든 공감한다는 뜻입니다.
'그럼 이 글들을 모아서 분석하면 뭔가 힌트가 있지 않을까?' 생각하게 되었습니다.
파이썬을 이용해 크롤링을 하자
크롤링은 네이버, 다음 같은 홈페이지를 그대로 가져와서 거기서 데이터를 추출해 내는 것입니다.
홈페이지의 정보를 가져오고 데이터를 분석해 원하는 정보를 찾는 도구로
파이썬이 적합하다고 생각했습니다.
이 글은 기획에 관한 것이기에 코딩에 대해서는 다루지 않고 아래의 글에서 다뤘습니다.
(저도 코딩을 배운 지 얼마 되지 않아 초보 티가 확확 나지만
공통된 단어로 힌트 찾기
공통된 단어로 힌트를 얻는 방법은 위의 사진처럼 수많은 글 중에서 공통된 단어를 찾는 과정입니다.
공통된 단어 속에서 힌트가 될만한 것들을 찾을 수 있을 것이라 생각했습니다.
(출처:소셜메트릭스) '대구시' 검색 시
이 작업을 참고로 해서 파이썬을 이용해서 핫게시판의 내용을 가져와봤습니다.
우리 대학교 에브리타임 '핫 게시판'
이미지는 짧지만 한참 스크롤을 내릴정도로 많았다.. 핫 게시판의 내용을 가져왔습니다. 그다음 문장을 단어로 바꾸는 과정을 진행해보겠습니다.
코드를 돌렸더니 이렇게 나왔습니다! 이렇게 보기에는 너무 정신이 없습니다.. 그럼 단어의 빈도수에 따라서 나열을 해볼까요?
???중복 단어가 이렇게 없다고? 제가 예상했던 것과는 달리 학생들이 무엇을 원하고 필요한지에 대한 힌트를 얻지 못했습니다.
생각보다 너무 겹치는 단어가 없었어요.. 이거.. 너무 의외인데?
그렇게 고민을 하던 도중 '많은 공감수를 얻은 글들을 가져와서 도움이 될만한 글에 힌트를 얻으면 어떨까?'
라는 생각을 했습니다.
가장 공감이 많은 글부터 찾아보면서 힌트 찾기
이번에는 크롤링으로 베스트 글들을 가져와 공감 수가 높은 순으로 배열하고 엑셀로 데이터를 저장했습니다.
그다음 차례대로 글들을 읽으면서 힌트를 찾으려고 했습니다.
'핫 게시판'의 글을 공감수, 제목, 내용, 주소로 분류해서 저장 485개의 글..
생각 이외로 학교 생활에 도움이 되는 글들이 베스트 글에 올라올 것이라 생각했지만
"야 이거 화나지 않냐?" 위주의 글들이 주로 많은 공감수를 받은 것을 확인할 수 있었습니다.
그래도 추리고 추려서 최대한 단어로 통합했더니 두 분류가 다른 고민으로 불만스러워하는 것을 찾을 수 있었습니다.
저는 이것을 힌트라고 부르겠습니다.
신입생: 수강신청, 학교 건물, 시설 위치, 학교 꼰대 문화 불만( 에어팟 못쓰게 하기(?), 인사 강요 등)
[2,3,4] 학년 학생: 학생회 비리 문제(?) = 청렴성, 학교에 대한 자존감이 낮음(우리 학교 지방 xx인데 그렇지 뭐~), 학생회. 학교 업무 부서와의 소통 엇갈림, 학교 생활 중 소소한 꿀팁
크흠.. 정리만 한 건데 자극적인 주제가 되었네요..
이렇게 힌트를 뽑았을 때 내가 만들 수 있는 기능들은
수강신청, 학교 시설 위치, 학교 자존감 높여주기, 서로 간의 소통 해결 (학교와 학생의 우체국), 소소한 꿀팁 알려주기
이렇게 정리될 것 같습니다.
이번 글에서는 주어진 데이터로 학생들이 무엇을 원하는지 파악했습니다.
이제 본격적으로 어떻게 기능들을 구현할지 세부 작업에 들어가게 됩니다.
(추천)
참고로 제가 돈 쓰고 듣고 읽고 만족스러워서 추천해드리는 겁니다.
이렇게 써도 저한테 떨어지는 거 1도 없습니다!
데이터에 관심이 있지만 어떻게 접근해야 할 지 고민인 분들께 추천드립니다.
https://ridibooks.com/books/754023614?_s=instant&_q=%EB%AA%A8%EB%91%90+%EA%B1%B0%EC%A7%93
이 책은 도구에 포함되었던 책인데 위키백과처럼 딱딱하게 데이터를 설명하는 것이 아니라 여러 재밌는 사례로 데이터에 대해 풀어나가는 책입니다. 문과인 제가 읽어도 진짜 술술 읽혀요
(리디셀렉트에 포함되어 있어서 회원이신분들은 바로 읽을 수 있습니다)
데이터 분석을 하고 싶으신 분들은 다음 강의를 추천합니다.
https://www.inflearn.com/course/Python-crawling-basic/dashboard
흠.. 로그인 없이는 안 들어지는 거 같네요
인프런에서 강의하고 계시는 잔재미코딩님의
파이썬입문과 크롤링기초 부트캠프 (2020 업데이트) [쉽게! 견고한 자료까지!]
입니다.
저는 솔직히 유료강의에 대해서는 돈 엄청 아까워서 유튜브를 보고 배웠는데 한계가 있더라고요..
그렇게 여러 강의를 찾던 중 이 강의가 괜찮아서 33,000원.. 치킨 2마리 포기하고 들었습니다.
결과는 진짜 만족스럽습니다. 이렇게 말하니까 블로그 광고같네요 ㅎㅎㅎㅎ
정말로 내용이며 강의 자료까지 주셔서 배우는데 한 달이 걸렸습니다. javascript를 유튜브로 두 달 배웠는데 지금도 이해 못하는 것을 비교하면... 엄청 고마운 강의입니다.
결국엔 3강의나 수강중입니다..허허
파이썬과 크롤링에 대해 배우고 싶으신 분들에게 추천합니다!