바빴던 2021년! 2021년의 절반의 시간을 들여 진행한 댓글분석 웹페이지 제작 프로젝트가 상위 8팀 안에 들어 은상을 수상하게 되었습니다! (짝짝짝) -> 300만원... 흐흐
저번주 주말에 저와 또 다른 팀원 둘이서, 팀을 대표하여 서울의 코엑스로 발표를 하러 갔었는데요.
발표 + 완성된 작품시연을 해야해서 혹시나 시연중에 오류가 뜨면 어떡하지 긴장이 되었었는데, 무사히 잘 넘어갔습니다. 질문도 어느정도 예상하던 질문이 나와 잘 대처할 수 있었어요.
사실 발표 아침까지도 웹페이지에 넣을 추가적인 코딩을 하느라 바빴었습니다. 뉴스 분석 페이지에 들어간 감성분석 모듈이, 기존에는 감성사전을 이용해 하는것으로 만들었다가 논의끝에 딥러닝 모델을 이용해 감성분석을 하는것으로 발표 1주전에 결정났거든요.. 쇼핑몰 페이지나 뉴스페이지의 감성분석 파트는 제가 전담했었기때문에, 후반부부터 딥러닝 모델로 변경하느라 혼자 마음이 급했던 기억이 납니다.
다행히 발표 전날까지는 완성을 했지만... 완성된 감성분석 모듈을 페이지에 넣고 보니, 사용자가 입력한 URL을 댓글을 긁어오고 댓글을 하나하나 분석해 Label을 붙이는데 생각보다 시간이 너무 오래걸려서 웹페이지에 못넣겠다는 판단이 되어서, 댓글 하나하나가 아니라 한꺼번에 예측할 수 있도록 하고, 더 모델 복잡도가 작으면서 정확도는 유지할 수 있도록 하는걸 발표날 아침까지 수정하고 또 수정했었습니다. 무사히 작동해서 다행이에요.
다음에는 12.3일에 일산 킨텍스로 시상 및 전시를 하러 갑니다. 전시를 대비하여 저희 웹사이트도 로딩페이지 추가, UI의 대대적인개편 등의 버전 업그레이드를 하였습니다. 다음에는 전시 및 시상식 후기를 남기도록 할게요.
노트북 배터리 충전기가 고장났다. 고장난 당시 내 노트북 배터리는 10퍼도 안됐다. 안돼애에앵엥에에에에에....... 너랑 해야할게 많단말이야... 근처에 바로 충전기를 구매할곳이나 빌릴만한 사람이 떠오르지않아서 pc방을 가야하나 고민하다가, 아 랩실에 내 자리가 있었지! 하고 오후6시쯤에 얼른 달려갔다. 요즘 코로나때문에 버스 막차가 빨라져서 12시가 되기전에 끊기는데, 그거 타고갈때까지 오늘 해야할걸 못끝낼거같아서 밤을 새우고 첫차를 타고가기로 마음먹었다. 팀원이 해오기로한 ppt를 취합해서 내일 오후1시까지 내야하는데 연락이 안되고 주기로한 시점이 지나서, 맘이 급해서 더 급하게 랩실에 왔는데. 다행히 랩실에오니 연락이 닿았다. 휴 어쨌거나 ppt 받고 최종 수정 및 추가, 검토해서 보냈다. (이거하는데만 3시간 걸렸다 =_=) 그거말고도 내일 데캡디 회의때 가져가야할 자료조사도 해야했고.. 학생회 메타버스 ox퀴즈 진행방식이랑 메뉴얼도 만들어야했고.. 해서 이래저래 할게 많았다. 급하게 하다보니 타자가 세게 쳐져서 조금 시끄러웠을것같아 걱정이다. 그래서 키스킨을 하나 샀다. 사는김에 동일 키보드 사용하는 다른 분들거도 같이 샀다. 시험기간동안 랩실에 안오다가 어느정도 시험이 끝나고 오랜만에 오니까 또 좋더라. 새벽의 랩실에는 나 혼자 있었다. 그런데 ... 갑자기 건들이지도 않은 프린트기가 혼자서 막 작동하더니 웹서버 관련 코드를 막 뽑아내더라. 뭐지????? 하고 가서 정지시켰는데 혼자 또 작동하더니 똑같은 코드를 뽑아내더라. 그래서 종료해버렸다. 뭘까... 뭐지? ... 얘기를 들어보니 새벽에 저 프린터기가 종종 저런다고한다. 가장 그럴듯한 가설은 다른 방에서 프린터를 하는데 연결이 우리 프린터기에 돼서 나오는가 싶기도 한데.. 하필 왜 새벽에 저럴까?.. 아무튼 나는 새벽5시-5시30분경 있는 첫차를 타고 집에 돌아왔다. 역시 집이 좋다. 근데 집청소는 언제하지... 청소할시간이없다. 일단 이번주가 진짜 바쁘고, 일요일만 지나면 조금은 덜 바빠질것같아서 그때까지는 해야할일에 매진해야겠다.
가장 걱정은 그동안 다른거하느라 개인연구 진전이 하나도 없다는점.. 근데 금요일에 3주만에 랩미팅 하면서 업데이트 발표 해야한다는점... 하하...하... 내일 일어나서부터 금요일 발표할때까지 개인연구 관련만 해야겠다. 가뜩이나 우리 랩실 교수님 수업 중간고사 망쳤는데.. 이거라도..해가야....내가......덜죄송하지....후...ㅠㅠ... 변명을하자면.. 그 수업 시험이랑 같은 날에 다른 수업도 시험이었고, 그 수업은 중간고사 오픈북에 계산문제 안나온다고해서 그동안 짠 코드 검색해가면서 하면 되겠네! 하고 완전 마음놓고 다른 수업 공부만 하고 그 수업은 상대적으로 매우 덜하게되었는데 ...... 시간대비 문제량이 많아서 망했다. 그리고 제출할때 인터넷오류인지뭔지 제출이 잘 안됐어서 또 망했다. 반면 그 수업대신 공부한 다른 수업은 매우 잘봤다. 만점이 100점인데 110점 맞았다.(보너스문제가있어서..) 차라리 랩실 교수님걸 공부할것을........ 너무 맘에 쓰인다. 문득문득 생각이 난다...... 기말에는 꼭 제대로 공부해서 볼게요 교수님..
오늘은 이만 자야겠다. 내일 일찍인나서 실강들어야한닷.!
+ 맞다 오늘 바빠서 드럼연습도 못갔다.. ㅠㅠ 이거도 오랜만에 다시 연습 시작하는 날이었는데 .. 담주부터는 꼭 가야지 !! 악보출력
최근 일주일 - 해야할 것 ----------------------------------------------------- 데캡디(11.4목, 4시회의) Feature 조사, 추가Feature 계산, 라벨에 따른 시각화
뇌파 기반 사용자 친화 음악 작곡 알고리즘 구현 (User-friendly music composition based on EEG)
1. 과제 개요
가. 과제 선정 배경 및 필요성 인간의 내면을 음악으로 듣기 위한 시도는 오래전부터 이루어져 왔다. 1930년대 초기에는 뇌파 알파파의 진폭이나 뇌파 신호의 단순하고 직접적인 특징을 통해 ‘소리’를 만들어 왔고, 1990년대에 이 르러서는 디지털 필터링 및 뇌파 데이터의 분석을 통해 다양하고 새로운 ‘음악’ 생성 규칙을 만들어 왔다. 본 연구에서는 기존의 ‘뇌파를 통해 음악을 생성한다’는 목적에서 더 나아가, 뇌파를 통해 사용자 친화적인 음악을 생성하는 것, 즉 ‘사용자의 감정을 잘 표현해주는 음악’을 만드는 것을 목표로 한다. 사용자는 이로써 나를 잘 표현해주는, 진정한 ‘나만의 음악’을 갖게 될 수 있다. 또, 긍정적인 감정을 보여주는 뇌파를 알고리즘에 넣어 만들어진 음악과, 부정적인 감정을 보여주는 뇌파를 이용해 만들어 진 음악의 비교를 통해 우리는 인간의 내면을 한층 더 알아볼 수 있을 것이다. 나. 과제 주요 내용 1) EEG Dataset( DEAP, AMIGOS, SEED 등 )을 수집한다. 2) EEG Data의 각 신호의 특징을 분석 및 추출한다. 3) 파악한 특징에 맞춰, 각 신호와 음의 높낮이, 단조, 템포 등을 매핑하여 음악을 작곡한다. 4) 작곡된 음악을 여러 장르로 변환하여 사용자에게 제공한다. (팝, 재즈, 클래식 등)
2. 과제의 목표
가. 최종결과물의 목표 1) EEG 데이터를 통해 감정에 맞는 음악을 작곡하는 알고리즘 모델 개발 2) 1)을 통해 작곡한 음악과, 실험자들의 감정이 가지는 상관관계 평가 3) 1)의 음악을 사용자가 원하는 장르(클래식, 재즈, 팝 등)로 변환하는 모델
나. 최종결과물의 세부 내용 및 구성 1) 뇌파 데이터를 통해 사용자의 감정이 잘 드러나는 음악을 작곡하는 알고리즘 2) 실험자(기존 EEG 데이터 사용)의 뇌파를 통해 작곡된 음악 3) 작곡된 음악과 실제 감정과의 상관관계 분석 4) 긍정적인 감정의 뇌파 데이터를 이용해 만든 음악과, 부정적인 감정에서 만든 음악의 비교 5) 원하는 장르로 변경한 2)의 음악
3. 기대효과 및 활용방안 뇌파 데이터를 통해 ‘나만의 음악’을 만드는 접근 방식은 마음의 세계를 음악으로 표현하려는 시도이다. 본 연구는 특히 사용자의 ‘감정 상태와 유사한’ 음악을 만드는 것이 목적이기에 기존의 연구보다도 내면을 음악으로 표현하는데 더 큰 의의를 가질 것으로 보인다. 사용자는 자신의 내면과 감정이 담긴 음악을 통해 자신의 상태를 피드백 할 수 있게 되며, 나아가 본인이 선호하는 음악의 장르를 선택하여 내면의 감정을 해당 장르의 음악으로 표현함으로써 사용자 내면의 익숙하지 않은 감정에 더 쉽게 다가갈 수 있다.
4. 수행 방법 가. 과제수행을 위한 도구적 방법 1) EEG Data Processing TEAP 등을 이용해 EEG Data를 전처리하고, 감정별 신호의 특징을 파악한다. 2) 인공지능 기반 음악 작곡 1) 의 결과를 바탕으로, 각 신호에 대해 음악의 구성 요소들을 매핑하는 알고리즘 모델을 구현한 다.(속도, 멜로디, 음량 등) EEG 데이터가 입력됨에 따라 각 신호 및 채널을 구분하고, 구현된 음악 매핑 알고리즘에 넣어 음악의 멜로디, 음량, 템포 등을 시시각각 결정하며 하나의 악보를 완성한 다. 이후, 악보를 음악으로 구현해주는 툴을 사용하여 음악으로 변환한다. 3) 작곡된 음악의 장르 변환 JukeBox나 CycleGAN-Music-Style-Transfer 등의 음악 장르 변환 알고리즘을 활용하여 작곡된 음악 을 클래식, 재즈, 팝 등의 장르로 변환한다.
나. 과제수행 계획 1) EEG Data Analysis 가) EEG Data Set(DEAP, AMIGOSM, SEED 등)을 수집 나) EEG Data 전처리를 통해서 감정에 따라 변화하는 유의미한 특징을 추출한다. 2) 뇌파를 통한 작곡 가) EEG 데이터의 각 채널이 음악의 어떤 요소를 결정지을 수 있을지 매핑하는 알고리즘을 구현 한다. 나) 해당 알고리즘에 EEG 데이터를 입력해 악보를 완성하고, 곡을 음악으로 변환시킨다. 3) 2)에서 작곡한 음악을 음악 장르 변환 알고리즘을 사용하여 다양한 장르의 음악을 작곡한다.
최근 인터넷이 발달하고 사용자가 급증함에 따라, 인터넷을 통한 정보 교환이 활발하게 이루어지고 있습니다. 네이버 뉴스의 댓글을 읽으며 여론을 파악하신 적이 있으신가요? 네이버 쇼핑에서 원하는 상품을 찾을때 리뷰를 확인해보신적이 있으신가요? 네이버 영화의 리뷰를 확인하며 어떤 영화를 볼지 의사결정을 한 적이 있으신가요? 이미 댓글을 읽고 정보를 파악하는 행위는 우리의 일상이 된 것 같습니다.
이처럼 댓글을 통한 정보 공유 및 파악은 일상적인 삶의 행위가 되었으나, 최근의 댓글 양상을 보면 댓글이 몇 백개, 몇 천개가 넘는 글이 다수룩하고, 댓글 중에는 중요한 정보가 아닌 스팸 혹은 여론조작성 정보 등이 포함되어 있기도 합니다. 많은 양의 댓글 중 사용자가 자체적으로 선별하여 필요한 정보를 파악하는 것이 쉽지 않은 것이지요.
저는 이러한 상황에 도움이 되고자 본 프로젝트를 진행하게되었습니다.
웹페이지소개
- 네이버 뉴스, 쇼핑몰, 영화의 url을 입력받아 해당 기사의 댓글, 쇼핑몰 후기, 영화 리뷰 정보를 다양한 기법을 토대로 분석하고 결과를 시각화하여 보여주는 웹페이지
- 뉴스 댓글, 영화와 쇼핑몰의 리뷰를 여러 시각으로 한 눈에 볼 수 있도록 함.
각 분석페이지의 일부분 캡쳐화면 첨부
기획 의도
- 인터넷상에서 많은 정보를 주고받는 현대사회에서 특히 ‘댓글’로 의견을 표출하거나 정보를 얻는 경우가 다분함. 하지만 그 양이 방대하여 모든 댓글을 읽고 적절한 정보를 취하기 쉽지 않음
- 본 프로젝트에서는 그러한 댓글 정보를 모아 분석 후, 시각화해 출력해줌으로써 편향되지 않은 적절한 정보 수용에 도움을 줄 수 있음
- 더불어 뉴스에 대한 여론, 상품에 대한 장단점 등을 한눈에 볼 수 있도록 함
작품 내용
- 인터넷 웹 서비스를 기본으로 함
- 입력받은 url의 기사, 영화, 쇼핑몰에 대하여 해당 댓글, 리뷰 정보를 수집하여 분석 결과를 웹 화면에 출력
- 악성 댓글 필터링 여부, 영화 스포일러 필터링 여부 설정
작품의 개발 배경 및 필요성
- 오늘날 대다수의 정보전달 및 소통이 인터넷을 통해 이루어지고 있고, 특히 커 뮤니티나 인터넷 기사 혹은 블로그의 댓글의 형태로 활발한 소통이 이루어진다. 이러한 댓글의 양이 급속도로 증가하면서 소통의 질도 높아졌지만, 악의적 댓글 이나 허위정보 유포, 스팸 댓글이 새로운 사회적 문제로 대두되기 시작하였다.
- 댓글 혹은 리뷰는 보통 인기 댓글(리뷰), 최신 댓글(리뷰)의 순대로 나열되기 때 문에 많은 수의 댓글 중 사용자가 선별적으로 자신에게 필요한 정보를 가지고 있는 댓글을 찾기 힘들다.
- 악의적 댓글, 스팸 댓글, 허위사실을 유포하는 댓글은 네티즌이 자체적으로 선별하여 정보를 수용하기 어렵다.
- 뉴스, 영화, 쇼핑몰의 댓글을 분석하고 분류함으로써 악의적 댓글을 예방하여 건강한 인터넷 문화를 만들 수 있으며 올바른 정보 수용에 도움을 주고자 한다.
웹페이지특장점
1) 다양한 분야에 대해 댓글, 리뷰 분석 기능 제공
- 본 프로젝트에서는 뉴스, 영화 그리고 쇼핑몰의 댓글 및 리뷰에 대해 분석을 진행한다. 뉴스 분야에서는 사회 현상이나 사건에 대한 여론을 파악할 수 있도록 분석을 진행·제공하며, 쇼핑몰 분야에서는 상품 구매에 있어 합리적인 소비를 할 수 있도록 분석하고, 영화 분야에서는 단순 별점 리뷰에서 벗어나 여러 리뷰들과 그에 따라 취향에 맞는 영화인지를 파악할 수 있도록 정보를 제공한다. 각기 다른 분야에 대해서는 사용자의 니즈(각 리뷰나 댓글에서 얻고 자 하는 정보) 를 파악하여 각기 다른 분석 기법과 시각화 기법을 사용하여 결 과를 출력한다.
2) 분석 결과 시각화
- 분석 결과를 텍스트로 단순히 보여주는 것이 아닌 다양한 차트와 그래프를 통해 한눈에 알아볼 수 있도록 시각화하여 결과를 제공한다.
3) 필터링 여부 설정을 통한 자유로운 정보 접근 기회
- 악플에 대한 필터링 여부 혹은 스포일러 포함에 대한 필터링 여부를 사용자의 설정으로 결정할 수 있도록 한다. 따라서 사용자가 수용할 정보의 범위를 자유 롭게 설정할 수 있다.
작품구성도
① 웹 초기 페이지가 실행되면 flask framework를 사용하는 backend에서 자동으 로 네이버 뉴스 전체 기사 중 댓글이 가장 많은 기사 상위 5개를 스크래이핑을 통해 기사 제목과 URL 링크를 가져오도록 request를 보내고, 그 request에 대한 response를 받아 frontend에 출력한다.
② 사용자가 분석을 원하는 URL을 입력했을 경우
②-1. 입력된 URL이 유효하지 않은 URL이거나 분석기능을 제공하지 않는 사이 트의 URL일 경우, alert 창을 띄워 오류 메시지를 출력해준다.
②-2. 입력된 URL이 유효한 url일 경우
입력된 URL을 mongodb의 url.db에 저장한다. 이때 과거에 저장되어있던 URL 정보는 drop 한다.
③ Rest API로 수집 모듈을 실행 시켜 데이터를 수집한다.
④ 수집된 데이터에 대한 분석 모듈(기술통계, 추론통계 모듈)을 실행시킨 후 실행 결과를 mongodb에 저장하며 워드클라우드의 경우 시각화 모듈을 실행시켜 데 이터를 임시 저장한다..
⑤ frontend에서 mongodb에 저장된 분석 결과 html, CSS, chart.js 등을 이용하여 시각화하며 이때 효율적인 자원관리와 편리하고 빠른 시각화를 위해 frontend는 jquery framework를 기반으로 한다.
전체 기능 목록
구분
기능
설명
현재진척도(%)
S/W
유효 URL 확인 기능
사용자가 입력한 URL이 유효한 URL인지 체크하는 기능
100%
데이터 수집 기능
유효한 URL인 경우 해당 URL을 분석하여 뉴스, 쇼핑몰, 영화인지 알아보고 각 분류에 따라 필요한 데이터 (댓글, 성별 분포, 나이 분포 등)를 수집하여 데이터베이스에 저장하는 기능
100%
주요 뉴스 랭킹 기능
실시간으로 댓글이 많은 기사 상위 5개를 출력하여 보여주는 기능
100%
데이터 분석 기능
수집된 데이터를 기준으로 논란이 많은 댓글 분석, 댓글 주요 토픽 분석, 댓글 리스트의 감성 분석 등 댓글을 분석하는 기능
100%
분석 결과 시각화 기능
분석된 정보를 서버에 보내고, 웹에서 각각 최적화된 그래프, 차트로 시각화하여 보여주는 기능
100%
악성 댓글 / 스포일러 필터링 기능
악성 댓글 / 스포일러 필터링을 설정 혹은 해제하는 기능
100%
H/W
S/W 주요 기능
기능
설명
유효 URL 확인 기능
사용자가 입력한 URL이 유효한 URL인지 혹은 분석 서비스를 지원하는 URL인지 체크한다.
데이터 수집 기능
유효한 URL인 경우 해당 URL을 분석하여 뉴스, 쇼핑몰, 영화인지 알아보고 각 분류에 따라 필요한 데이터 (댓글, 성별 분포, 나이 분포 등)를 수집하여 데이터베이스에 저장한다.
주요 뉴스 랭킹 기능
사이트를 새로 들어가거나, 새로 고침을 할 경우 실시간으로 댓글이 많은 기사 상위 5개를 가져와서 출력한다. 각 기사 제목을 클릭 시 해당 기사로 이동한다.
데이터 분석 기능
수집한 데이터를 분석한다. -뉴스 : 댓글 토픽 모델링을 통한 관련단어 분석, 댓글의 감성 분석을 통한 긍⦁부정 척도, 기술통계 (성별 분포, 나이 분포, 작성 시간분포) -영화 : 리뷰 토픽 모델링, 기술 통계 (작성 시간 분포, 리뷰 평점, 감상 포인트 등) -쇼핑몰 : 상품 주제별 리뷰 토픽 분석, 옵션 제품별 평점, 기술통계 (사용자 총 평점, 재구매율, 옵션별 구매 순위, 작성 시간 분포 등)
분석 결과 시각화 기능
분석 결과를 받아 프론트엔드에서 바차트, 파이 차트, 라인 그래프, 워드 클라우드 등의 형식으로 분석 결과를 시각화한다.
악성 댓글 필터링 기능
뉴스의 경우 악성댓글 필터링 여부를, 영화의 경우 스포일러 필터링 여부를 사용자가 설정한다.
- 분석한 전체 글, 분석한 전체 댓글을 표현해줌으로써 사용자에게 시각적 즐거움 그리고 결과 파악의 편의성을 제공해줄 수 있도록 한다.
- 실시간으로 화제인 기사들을 출력하고 해당 기사 댓글들을 모아 파악하여 실시 간 주요 토픽을 파악할 수 있도록 돕는다. 이는 사라진 실시간 검색어를 뉴스 댓글의 관점에서 일부 대체하는 기능이 될 수 있을 것으로 보인다.
주요 적용 기술
1) 웹 동작에 대한 주요 적용 기술
- Frontend
- html, CSS, javascript를 이용하여 기본 화면을 구성하였고, 깔끔한 디자인을 위해 bootstrap을 사용하였으며 시각화를 위해 html5의 오픈 소스인 chart.js와 jqbar.css를 사용하여 디자인하였다. 주요 프레임워크는 javascript와 jquery를 사 용한다
- Backend
- frontend와의 통신을 위해 googleapi인 ajax를 사용하였으며 backend framework는 flask를 이용하여 get과 post를 컴포넌트화하기 쉽게 하였다.
- Database
- 수집 데이터의 범위가 분야에 따라 상이하므로 다양한 형태의 데이터베이스 구축을 위해 nonsql 데이터베이스를 사용하였고 주요 툴로 mongodb를 이용하였 다. 또한 R코드와 파이썬 코드 간의 데이터 직접 통신이 어려운 경우 데이터베 이스를 이용하여 상호 데이터 전달이 가능하도록 한다.
- 댓글 내용, 작성 시간, 공감수, 비공감수에 대해서는 네이버에서 제공하는 뉴스 api를 사용하여 스크래이핑하였다.
- 악성댓글 필터링 해제를 설정할 경우 selenium을 사용하여 동적 크롤링을 진행하였으며, 이 경우 댓글 내용 및 다른 요소에 대한 데이터를 모두 selenium으로 수집하였다.
- 영화
- 스포일러 필터링을 해제할 경우 selenium을 사용하여 동적 크롤링을 진행하였으며, 필터링 여부와 관계없이 selenium과 beautifulsoup4를 이용하여 데이터를 수집하였다.
- 쇼핑몰
- selenium과 beautifulsoup4를 이용하여 데이터를 수집하였다.
3) 데이터 분석에 대한 주요 적용 기술
- 수집된 텍스트에 대해 텍스트 토큰화와 형태소 분석은 파이썬 모듈인 konlpy를 이용하였으며 이 데이터를 바탕으로 단어빈도 분석, 감성사전 기반 감성분석 등 의 분석 전반은 R을 사용하였다. 또한 python과 R언어를 연동하여 사용하기 위 해 rpy2 모듈을 이용하였다.
- 토픽모델링 알고리즘 중 하나인 LDA 모델을 이용하여 토픽 모델링을 하였으며 LDA 모델은 DTM (문서 단어 행렬)을 이용하여 만들었다. 사용 LDA 모델은 샘 플링 방식을 gibbs 방식을 차용하였으며 토픽은 5개로 나누었다. 토픽의 개수는 여러 뉴스에 대한 댓글 데이터를 반복 학습시켜 가장 토픽을 잘 나눌 수 있는 적정 개수를 채택하였다.
- 긍부정 여론을 분석하기 위해 감성 사전을 이용한 감정 분석을 진행하였으며 감정을 긍정, 부정, 중립으로 나눠 감정 점수를 부여하여 긍부정 여부를 판단하 였다. 이와 더불어 LSTM, Convolution을 이용하여 긍부정 단어를 학습시키고 분 석 텍스트를 predict 하여 나온 결과를 가중치로 더하여 결과를 도출하였다.
- 본 프로젝트에서는 실제 사용자가 웹서비스를 사용할 때, 어떻게 하면 보다 유 익한 정보를 서비스할 수 있을지에 대한 많이 고민하였다. 이에 초기에 계획하 였던 네이버 뉴스 URL에서 확장해, 네이버 쇼핑/네이버 뉴스/네이버 영화 후기 URL까지 포괄하는 프로그램을 개발하였으며, 각 분류 (뉴스, 쇼핑몰, 영화)에 따라 다른 분석결과를 제공하며 따라서 각각의 분석결과를 보기 쉽게 출력하기 위해 다른 디자인의 ui를 만들었다.
- 각 URL의 입력 시, 모두 동일한 분석이 진행되는 것이 아니라 각 주제에 적합 한 분석 기법이 적용되도록 하였고, 제공되는 기본 통계 정보 또한 각 페이지에 최적화된 통계를 제공할 수 있도록 세분화하였다. 사용자의 본 프로그램 사용 의도 에 따라 네이버 영화에서는 스포일러 차단 후 분석, 뉴스에서는 악성 댓글 차단 후 분석 기능을 제공함으로써 사용자로 하여금 선택의 폭을 넓혔다.
- 간단하고 깔끔한 UI와 인터페이스로 누구든 쉽게 사용할 수 있게 만들었으며, 추후 주기적으로 기존 분석 기능의 보완 및 분석 기능의 추가가 이루어질 예정 이다.
페이지소개-메인페이지
메인페이지에서는 사용자가 분석하고자하는 글의 url을 입력받습니다. 입력된 url의 플랫폼을 확인하여, 각 플랫폼 전용 분석 페이지로 이동합니다.
또한 메인페이지에서는 실시간화제토픽, 핫이슈기사, 제 웹페이지가 지금까지 분석한 전체 글, 전체 댓글의 정보를 제공합니다. 그 외에 오류 신고나 도움말을 볼 수 있으며, 설정창에서 클린봇을 활성화할지 스포일러를 포함할지 등의 여부를 on/off 할 수 있습니다.
페이지소개-뉴스페이지[분석]
뉴스 전용 페이지는 성별분포, 나이분포그래프, 평점 기반이 아닌 내용 기반의 모든 댓글의 감정 분석, 긍정과 부정의 각 감정을 나타낼때의 주요한 토픽 추출, 모든 댓글의 주요 토픽 분석,
논란이 일어나는 댓글, 댓글 작성시간분포 그래프, 워드 클라우드를 보여줍니다.
논란이 일어나는 댓글의 경우 댓글의 공감과 비공감수를 크롤링하여 그 비율을 보는것으로 판단하며, 논란 댓글이라 판단된 것 중 대댓글이 많은 순으로 화면에 출력됩니다.
페이지소개-쇼핑페이지[분석]
쇼핑몰 페이지의 경우 총 리뷰 갯수, 사용자 총 평점, 재구매율, 각 토픽별 평점, 각 제품/옵션별 평점 등을 제공합니다. 이때 재구매율은 네이버가 인증한 '재구매' 팻말이 붙은 댓글의 수를 기준으로 합니다.
각 토픽별 평점이란 상품 구매시 영향을 끼친 주요 '토픽'을 확인하고, 해당 토픽에 대한 평점을 재계산하는것이며, 토픽 분석시에는 각 토픽의 사용자 반응을 형용사형으로 추출해 주요 반응을 보여줍니다.
예를들어 화장품 제품의 댓글을 분석한 본 예시에서의 토픽은 트러블개선, 만족도, 가격, 분사력, 등이며 사용자의 반응은 좋다, 만족하다, 작다, 촉촉하다 등으로 분석이 되었습니다. 그 외에도 제품/옵션별 구매순위, 댓글작성시간 분포그래프, 워드클라우드 등을 제공합니다.
페이지소개-영화페이지[분석]
네티즌평점, 성별/나이별관람추이, 만족도 등을 제공합니다. 시간관계상 생략하도록 하겠습니다.
이하 분석 기법에 대한 설명은 영상에서 확인부탁드립니다.
활용방안
1) 사용자들이 필요한 정보만을 선별적으로 수용하여 정보 과다 사회에서 효율적인 정보 접근이 가능
2-1) 뉴스 댓글 분석 : 주요 이슈에 대한 여론을 다양한 측면에서 빠르게 확인 가능
2-2) 쇼핑 댓글 분석 : 구매자는 상품에 대한 다양한 토픽별 반응(착용감, 등) 등을 확인할 수 있으며,
판매자는 고객 반응을 확인해 마케팅에 활용
2-3) 영화 댓글 분석 : 해당 영화에 대한 여론을 파악하여 시청 결정에 도움을 줌
3) 특정 분야에 대한 소비자의 감성 변화에 따른 마케팅 등 다른 데이터와 연계하여 다양한 분석 수행 가능
나는 개인과제보다 팀과제를 더 열심히 하는 편이다. 뭔가 혼자할때보다 책임감도 더 생기고, 서로 토의하며 어떻게할지 방향을 정해가는 것도 즐겁다. (다만.. 단순 '개인 공부'는 상대적으로 덜 중요하게 느껴져서 다른걸하려다 신경을 덜 쓰게된다. 그러면안되는데..) 이런 성향을 가진 탓에, 나는 학생회에서 행사를 기획하거나, 수업 중 팀프로젝트를 하거나 대외활동-공모전에 나가거나 등의 협동을 할 때 최선을 다해 집중하고 열심히 하려 한다. 그런데 다른 사람들은 대개 그렇지 않나보다. 왜 열심히 안할까? 인생을 대충사는 사람이라서? 라기 보다는.. 역시 팀과제보단 개인과제에 집중해서 그렇겠지. 본인것 챙기기 바쁘고, 팀 과제는 본인이 대충해도 다른사람이 알아서 할것같으니까.. 그러면 그 다른사람도 대충하면 어쩌려고 그렇게 안해오는지 모르겠다. 애초에 뭔가를 열심히하는것으로부터 배워가는것아닌가. 열심히 안할거면 왜 한다그런걸까. 안하느니만못할텐데 뭘 하든 자기가 하기로 한건 최선을 다해야하는것아닌가. 힘들어도 그래야하는것아닌가.. 더구나 혼자하는것도아니고 여럿이 함께 하는건데.. 최선을 다하는것까지는 바라지않더라도 최소한 기본은 해와야되는것아닌가. 안그래도 할줄아는사람이 나밖에 없어서 시험기간인데도 내가 다 해주고 있는데 평소 회의때도 내가 얘기 제일 많이하고 뭘 많이 하는데 간소한거 해와달라는걸 그렇게 대충 해오면 진짜.. 새벽까지 못자고 하던 내 기분은 뭐가 되냐..진짜 -_-.................... 내가 생각하는 기본이랑 다른사람이 생각하는 기본은 다른 것 같다. 나는 그래서 팀장을 잘 안한다. 적어도 팀장 맡은 사람은 열심히 하니 열심히 하는 사람 2명이 보장된다. 이 세상 사람들 다들 좀 본인이 하기로 한거는 열심히 했으면 좋겠다. 시험기간이라, 본인할거하느라 바쁜건 알겠는데. 시작했으면 열심히해라
외관은 자연과 어울리도록 조성했고, 내관은 팔만대장경의 장경각을 모티브로 만들었다고 한다.
과거 팔만대장경의 장경각이, 현대에 와서 데이터센터가 되었다고 생각하니 데이터센터의 의미가 또 색다르게 느껴졌다. 데이터센터의 모습을 보니 현대의 21세기 장경각이라 부를만하다는 생각도 들었다. 미래에는 또 어떤 장경각이 생길까? 지금도 이렇게나 최신화-최적화 되어있는데 미래에는 또 어떤 기술이 접목될까. 데이터센터에는 뭔가 흥미가 생긴다.
데이터센터에는 4 가지 중요한 구성요소가 있다. 전력, 서버, 쿨링, 운영 및 관리이다.
먼저 전력은, 전력손실을 최소화하기 위해 각종 기능들이 적용되어 있으며, 각종 사고(정전 등)시에도 안정적으로 전원이 들어와있을 수 있도록 하기위해 UPS 등의 기능이 사용중이다. 사용자에게 언제나 데이터를 보내주기위해, 데이터를 관리하기 위해 1분 1초도 안멈추고 열일중이다.
서버
효율적으로 전력을 사용하고, 네트워크를 연결하는 것을 생각하며 서버실의 규모와 구조를 생각하는게 데이터센터를 구상할 때 가장 중요한 일이라고 한다. 방대한 양의 서버를 잘 다룰 수 있도록 설계하는게중요하다. 데이터센터가 현대인들에게 중요한만큼, 전쟁이 나면, 적 나라의 각종 대기업 데이터센터 서버실부터 폭파시켜야겠다는 생각이들었다. (뜬금없지만) 그러면 검색엔진 중단에 SNS 통해서 연락할수도 없고.. 엄청난 혼란이 야기될 것 같다.
쿨링
매일매일 쉬지않고 돌아가니, 데이터센터에서의 쿨링은 매우 중요한 요소이다. 네이버의 데이터센터는 AMU 라는 쿨링 시스템을 도입하여 사용중이라고 한다. 이후 NAMU로 업그레이드 된 쿨링시스템을 도입하는 등, 중요한 만큼 효과적, 효율적인 쿨링을 위해 노력하고 있다.
운영관리
데이터센터에서는 데이터의 유실을 막는 이중화설계(분산저장)를 한다고 한다. 예를들어, 네이버 블로그에 글을 작성하면, 만일의 상황(글이 날라가거나..)에 대비해 여러 데이터로 저장한다는 것이다. 한 센센터 저장하는 것이 아니라, 곳곳의 센터에 나눠 데이터를 저장한다고 한다. IT 대기업은 정말 대단하다고 생각했다. 또, 데이터의 유출을 막기 위해 전문보안 기술진이 상주하며 데이터 보안에 힘쓰고 있다고 한다. (현재까지 네이버의 데이터 해킹건이 0건이라고 한다.)
애자일의 탄생 배경은, 소프트웨어 개발에 있어 입력값, 출력값이 명확할 수가 없고, 확정된 목표가 존재할 수 없기 때문이다.(즉, 예측불가하다) 소프트웨어의 특성상 이슈는 존재하며, 고객의 니즈가 달라질 수 있기 때문이다. 아무리 잘 완성된 소프트웨어더라도 고객의 니즈에 맞지 않는다면 쓸모없는 소프트웨어가 된다. 이처럼, 변화할 수 있음을 인정하고, 규정된 프로세스에서 벗어나 유연성있는 방법론을 사용하자는게 애자일의 목표이다.
애자일은 점검, 조정, 변화를 수용하는 “적응적 프로세스”와, 목표시스템을 여러 번 나눠 출시하자는 “반복점증적 프로세스”에 그 근간을 둔다. 이 두 프로세스와 애자일의 차이점은 출시주기가 짧고 유연하다는 점(약 2~4주), 소통과 협력의 극대화를 추구한다는 점이라고 할 수 있다. 애자일에애 중요시하는 것은 자기조직화팀, 적응성, 고객의 참여, 반복 점증적 개발이다. “인간 중심”적 방법론이라고 할 수 있겠다.
2.애자일 방법론 기원, 본질
흔히 많이 쓰는 애자일 방법론은 Scrum이다. 추정, 조정의 경험적 관리 기법이다. Scrum , 즉 애자일의 원칙은 총 4가지가 있다.
개인과 상호작용 >> 프로세스,도구
동작하는 소프트웨어 >> 포괄적인문서
고객과의 협력 >> 계약협상
변화에 대응>> 계획수행
>> 기준 왼쪽에 있는게, 오른쪽에 있는 것보다 중요시 되어야 한다는 것이다.
(다만 그렇다고 왼쪽에 있는걸 무시하자는게 아니다!)
애자일 방법의 적용으로는 일일 스탠드업, 제품 백로그, 짧은 출시주기, 회고, 스프린트 계획 세우기 등이 있다.
컨테이너는 하드웨어를 가상화하는게 아니라, os를 지원하는 기능을 사용하는 프로세스이다. 다시말해, 격리된 환경에서 프로세스를 실행하는 것이다. (운영체제라기보단 프로세스)
이미지
파일들의 집합. 프로세스를 실행하기 위한 환경.
컨테이너 가상화가 필요한 이유
컴퓨터 환경 보편적이지 않기 때문이다. 예를들어 MYSQL -> 설치방법/되는과정이 다 다르다.
특수한 환경이 SW에 필요하다면 상태관리의 어려움, 서버관리 어려움, VERSION관리의 어려움 등이 많다. 그러나 도커를 이용한다면 깨끗한 환경에서 APP 실행환경까지 최단경로로 만들어준다. 또한, 이미지를 만들면 무조건 작동한다는 신뢰성도 보장되어있다. 항상 같은 환경을 보장하니, 초강력한 포터블앱이라고도 볼 수 있다. 이미지로 만들면 공유가 가능하며, 여기서 되면 저기서도 된다는 재현성을 보장하기에 강력한 서버 툴로 자리잡았다.