들어가는 말..

최근 인터넷이 발달하고 사용자가 급증함에 따라, 인터넷을 통한 정보 교환이 활발하게 이루어지고 있습니다. 네이버 뉴스의 댓글을 읽으며 여론을 파악하신 적이 있으신가요? 네이버 쇼핑에서 원하는 상품을 찾을때 리뷰를 확인해보신적이 있으신가요? 네이버 영화의 리뷰를 확인하며 어떤 영화를 볼지 의사결정을 한 적이 있으신가요? 이미 댓글을 읽고 정보를 파악하는 행위는 우리의 일상이 된 것 같습니다.

이처럼 댓글을 통한 정보 공유 및 파악은 일상적인 삶의 행위가 되었으나, 최근의 댓글 양상을 보면 댓글이 몇 백개, 몇 천개가 넘는 글이 다수룩하고, 댓글 중에는 중요한 정보가 아닌 스팸 혹은 여론조작성 정보 등이 포함되어 있기도 합니다. 많은 양의 댓글 중 사용자가 자체적으로 선별하여 필요한 정보를 파악하는 것이 쉽지 않은 것이지요.

저는 이러한 상황에 도움이 되고자 본 프로젝트를 진행하게되었습니다.

 

웹페이지소개

- 네이버 뉴스, 쇼핑몰, 영화의 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코드와 파이썬 코드 간의 데이터 직접 통신이 어려운 경우 데이터베 이스를 이용하여 상호 데이터 전달이 가능하도록 한다.

 

 2) 데이터 수집에 대한 주요 적용 기술

 - 뉴스

 - 댓글 작성 성별 분포와 나이대 분포는 selenium과 beautifulsoup4를 사용하여   스크래이핑하였다. 

 - 댓글 내용, 작성 시간, 공감수, 비공감수에 대해서는 네이버에서 제공하는 뉴스 api를 사용하여 스크래이핑하였다.

 - 악성댓글 필터링 해제를 설정할 경우 selenium을 사용하여 동적 크롤링을 진행하였으며, 이 경우 댓글 내용 및 다른 요소에 대한 데이터를 모두  selenium으로 수집하였다.

 - 영화

 - 스포일러 필터링을 해제할 경우 selenium을 사용하여 동적 크롤링을     진행하였으며, 필터링 여부와 관계없이 selenium과 beautifulsoup4를 이용하여 데이터를 수집하였다.

 - 쇼핑몰

 - selenium과 beautifulsoup4를 이용하여 데이터를 수집하였다.

 

 3) 데이터 분석에 대한 주요 적용 기술

 - 수집된 텍스트에 대해 텍스트 토큰화와 형태소 분석은 파이썬 모듈인 konlpy를   이용하였으며 이 데이터를 바탕으로 단어빈도 분석, 감성사전 기반 감성분석 등 의 분석 전반은 R을 사용하였다. 또한 python과 R언어를 연동하여 사용하기 위  해 rpy2 모듈을 이용하였다.

 - 토픽모델링 알고리즘 중 하나인 LDA 모델을 이용하여 토픽 모델링을 하였으며   LDA 모델은 DTM (문서 단어 행렬)을 이용하여 만들었다. 사용 LDA 모델은 샘  플링 방식을 gibbs 방식을 차용하였으며 토픽은 5개로 나누었다. 토픽의 개수는  여러 뉴스에 대한 댓글 데이터를 반복 학습시켜 가장 토픽을 잘 나눌 수 있는   적정 개수를 채택하였다.

 - 긍부정 여론을 분석하기 위해 감성 사전을 이용한 감정 분석을 진행하였으며   감정을 긍정, 부정, 중립으로 나눠 감정 점수를 부여하여 긍부정 여부를 판단하  였다. 이와 더불어 LSTM, Convolution을 이용하여 긍부정 단어를 학습시키고 분 석 텍스트를 predict 하여 나온 결과를 가중치로 더하여 결과를 도출하였다.

 

작품 개발 환경

구분 상세내용
S/W
개발환경
OS mac, windows10
개발환경(IDE) pycharm, visual studio code, jupyter notebook
개발도구 python 3.9.6, html5, css, javascript, jquery, flask
개발언어 python, R
기타사항  

 

기타 사항 [본문에서 표현되지 못한 작품의 가치(Value)] 및 제작 노력

 - 본 프로젝트에서는 실제 사용자가 웹서비스를 사용할 때, 어떻게 하면 보다 유  익한 정보를 서비스할 수 있을지에 대한 많이 고민하였다. 이에 초기에 계획하  였던 네이버 뉴스 URL에서 확장해, 네이버 쇼핑/네이버 뉴스/네이버 영화 후기   URL까지 포괄하는 프로그램을 개발하였으며, 각 분류 (뉴스, 쇼핑몰, 영화)에   따라 다른 분석결과를 제공하며 따라서 각각의 분석결과를 보기 쉽게 출력하기  위해 다른 디자인의 ui를 만들었다.

 - 각 URL의 입력 시, 모두 동일한 분석이 진행되는 것이 아니라 각 주제에 적합  한 분석 기법이 적용되도록 하였고, 제공되는 기본 통계 정보 또한 각 페이지에  최적화된 통계를 제공할 수 있도록 세분화하였다. 사용자의 본 프로그램 사용   의도 에 따라 네이버 영화에서는 스포일러 차단 후 분석, 뉴스에서는 악성 댓글  차단 후 분석 기능을 제공함으로써 사용자로 하여금 선택의 폭을 넓혔다.

 - 간단하고 깔끔한 UI와 인터페이스로 누구든 쉽게 사용할 수 있게 만들었으며,   추후 주기적으로 기존 분석 기능의 보완 및 분석 기능의 추가가 이루어질 예정  이다.

 

 

페이지소개-메인페이지

메인페이지에서는 사용자가 분석하고자하는 글의 url을 입력받습니다. 입력된 url의 플랫폼을 확인하여, 각 플랫폼 전용 분석 페이지로 이동합니다.

또한 메인페이지에서는 실시간화제토픽, 핫이슈기사, 제 웹페이지가 지금까지 분석한 전체 글, 전체 댓글의 정보를 제공합니다. 그 외에 오류 신고나 도움말을 볼 수 있으며, 설정창에서 클린봇을 활성화할지 스포일러를 포함할지 등의 여부를 on/off 할 수 있습니다.

 

페이지소개-뉴스페이지[분석]

뉴스 전용 페이지는 성별분포, 나이분포그래프, 평점 기반이 아닌 내용 기반의 모든 댓글의 감정 분석, 긍정과 부정의 각 감정을 나타낼때의 주요한 토픽 추출, 모든 댓글의 주요 토픽 분석,  

논란이 일어나는 댓글, 댓글 작성시간분포 그래프, 워드 클라우드를 보여줍니다.

논란이 일어나는 댓글의 경우 댓글의 공감과 비공감수를 크롤링하여 그 비율을 보는것으로 판단하며, 논란 댓글이라 판단된 것 중 대댓글이 많은 순으로 화면에 출력됩니다.

 

페이지소개-쇼핑페이지[분석]

쇼핑몰 페이지의 경우 총 리뷰 갯수, 사용자 총 평점, 재구매율, 각 토픽별 평점, 각 제품/옵션별 평점 등을 제공합니다. 이때 재구매율은 네이버가 인증한 '재구매' 팻말이 붙은 댓글의 수를 기준으로 합니다.  

각 토픽별 평점이란 상품 구매시 영향을 끼친 주요 '토픽'을 확인하고, 해당 토픽에 대한 평점을 재계산하는것이며, 토픽 분석시에는 각 토픽의 사용자 반응을 형용사형으로 추출해 주요 반응을 보여줍니다.  

예를들어 화장품 제품의 댓글을 분석한 본 예시에서의 토픽은 트러블개선, 만족도, 가격, 분사력, 등이며 사용자의 반응은 좋다, 만족하다, 작다, 촉촉하다 등으로 분석이 되었습니다. 그 외에도 제품/옵션별 구매순위, 댓글작성시간 분포그래프, 워드클라우드 등을 제공합니다.

 

페이지소개-영화페이지[분석]

네티즌평점, 성별/나이별관람추이, 만족도 등을 제공합니다. 시간관계상 생략하도록 하겠습니다.

 

이하 분석 기법에 대한 설명은 영상에서 확인부탁드립니다.

 

활용방안

1) 사용자들이 필요한 정보만을 선별적으로 수용하여 정보 과다 사회에서 효율적인 정보 접근이 가능

2-1) 뉴스 댓글 분석 : 주요 이슈에 대한 여론을 다양한 측면에서 빠르게 확인 가능

2-2) 쇼핑 댓글 분석 : 구매자는 상품에 대한 다양한 토픽별 반응(착용감, 등) 등을 확인할 수 있으며,

                                        판매자는 고객 반응을 확인해 마케팅에 활용

2-3) 영화 댓글 분석 : 해당 영화에 대한 여론을 파악하여 시청 결정에 도움을 줌

 3) 특정 분야에 대한 소비자의 감성 변화에 따른 마케팅 등 다른 데이터와 연계하여 다양한 분석 수행 가능

 

시연영상

 

 

+ Recent posts