GithubHelp home page GithubHelp logo

kookmin-sw / 2019-cap1-2019_3 Goto Github PK

View Code? Open in Web Editor NEW
6.0 4.0 6.0 251.14 MB

머신러닝을 이용한 유튜브 감성 분석 프로젝트

Python 9.22% Jupyter Notebook 0.93% HTML 28.79% JavaScript 59.47% CSS 1.59%

2019-cap1-2019_3's Introduction

유감(유튜브 감성분석)

팀페이지 주소 -> https://kookmin-sw.github.io/2019-cap1-2019_3

1. 프로잭트 소개

남녀노소 크리에이터가 기하급수적으로 증가하여 주목받고 있는데, 이들은 발 빠르게 트렌드를 읽어 시청자를 사로잡기 위해 고군분투 합니다. 크리에이터의 수만큼 각종 영상 콘텐츠들이 범람하는 지금, 그것을 평가하는 수치는 다양합니다. 하지만 콘텐츠의 평가를 가장 빠르게 보여주는 것은 댓글인데 영상에 달린 수많은 댓글을 모두 보는 것은 힘들어 전체 개관을 파악하고, 자신이 원하는 내용을 선택하여 읽기가 힘듭니다. 또한 시청자 반응의 지표를 볼 수 있는것은 댓글과 좋아요 시스템 뿐이라 크리에이터가 시청자의 반응을 파악하기에는 다소 부족합니다. 시청자의 입장에서는 수많은 영상들 중 본인이 원하는 영상만 골라보기 어렵습니다. 예를 들어, 전반적으로 웃긴 영상만 보고싶고 혐오적인 영상은 보고싶지 않은 경우 웃긴 영상만 골라서 찾아보기 힘듭니다. 또 시청자도 부정적인 악플은 보고싶지 않고 긍정적인 댓글만 골라서 보고싶은경우가 있지만 현재 유튜브에서 제공하는 댓글 필터는 없습니다. 따라서 본 프로젝트에서는 유튜브 영상을 분석하여 시청자에게는 원하는 감성의 영상과 댓글을 골라 볼 수 있도록 보여주고 크리에이터에게는 시청자의 반응을 웹캠으로 가져와서 감성을 분석한 결과를 제공하여 시청자가 어떤 감성으로 본인의 영상을 감상했는지 판단할 수 있는 새로운 지표를 제안함으로써 유튜브 크리에이터와 시청자가 양질의 영상을 창작하고 시청할 수 있도록 하기 위해 유감, 즉 유튜브에 대한 감성분석을 하는 프로젝트를 기획했습니다.

  • 크리에이터의 표정 변화를 분석해 타임라인을 제공합니다.
  • 유튜브 댓글 감성을 분석해 긍정, 중립, 부정 댓글을 분류합니다.
  • 6가지 감정인 행복, 슬픔, 화남, 놀람, 중립, 두려움으로 댓글의 감성 분포도를 제공합니다.
  • 시청자의 웹캠으로 받은 표정을 화남, 두려움, 경멸, 놀람, 행복, 슬픔, 중립으로 분석하여 시청자가 어떤 감성으로 동영상을 시청했는지 라인 차트로 나타냅니다.
  • 2. 소개 영상

    이 이미지를 클릭하시면 영상을 보실 수 있습니다. video

    3. 팀 소개

    OhTube

    정지연

    * email: [email protected]
    * role: 팀장 ,댓글 감성 분석 , 댓글 전처리

    김주향

    * email: [email protected]
    * role: 영상 감성 분석  , 데이터 시각화

    손태선

    * email: [email protected]
    * role: 영상 감성 분석  , 영상 전처리

    이진주

    * role: 댓글 감성 분석  , 유튜브 댓글 크롤링

    양동철

    * email: [email protected]
    * role: Web Front End 개발

    4.Abstract

    Creators are gaining attention as they grow exponentially, and they struggle to capture viewers by reading trends quickly. At a time when video content is flooded by the number of creators, there are various numbers to evaluate. However, the fastest way to evaluate content is to read comments, but it's hard to see all the comments in the video, so it's hard to see the whole view and choose what you want to read. And it's only a comment and a 'good' system that allows creators to see the viewer response indicators, so it's a little short of understanding the viewer's response. From the viewer's perspective, it's hard to select only the video you want out of the countless videos. For example, if you want to see funny images, but don't want to see hateful images, it's hard to find funny ones. In addition, viewers do not want to see negative comments, but only select positive comments, but there are no comment filters provided on YouTube. The project analyzes YouTube videos and shows viewers the choice of videos and comments they want. It also brings viewers' responses to the webcam and provides emotional analysis to creators. To help YouTube creators and viewers create and watch high-quality video, we've organized a project to analyze the emotions of YouTube, or YS.

  • Analyzes the changes in the Creator's facial expressions and provides a timeline.
  • Analyze the sensitivity of YouTube comments to categorize positive, neutral, and negative comments.
  • provide the emotional distribution of comments with six emotions: happiness, sadness, anger, surprise, neutrality, and fear.
  • Analyze the facial expressions received from your webcam with anger, fear, contempt, surprise, happiness, sadness, and neutrality to indicate in the line chart how the audience watched the video.
  • 5.시연영상

    video

    이미지를 클릭하시면 영상을 보실 수 있습니다.

    2019-cap1-2019_3's People

    Contributors

    20163156 avatar gychoics avatar kimjuhyang avatar pearly9684 avatar

    Stargazers

     avatar  avatar  avatar  avatar  avatar  avatar

    Watchers

     avatar  avatar  avatar  avatar

    2019-cap1-2019_3's Issues

    발표 및 계획서의 문제점 및 해결방안

    피드백 받은 사항들을 어떻게 해결해야 할지 논의 해야할 것 같습니다.
    크게 분류를 하자면,

    > 1. 추후 감성분석의 정확도를 어떻게 평가할것인지

    > 2. 감성분석의 목표가 모호하다는 문제점
    - 타겟층을 확실히 하여 감성분석의 목표를 확립하고자 한다면, 타겟층은 어떻게 할 지 논의

    > 3. 비디오 모듈의 기능 추가 문제
    - 사용자의 웹캠으로 시청자의 표정을 읽어와 감성분석 하는 기능을 추가할 것인지 문제

    그 외 논의 해야할 문제점과 해결방안이 있다면 작성해주세요.

    lightGBM model 테스트 결과

    xgboost와 같은 gradient boosting tree model 인 lightGBM으로 데이터셋을 테스트
    xgboost와 달리 댓글을 char 단위로 2에서 6 gram 생성, word 단위로 2에서 3 gram을 생성하여
    tfidfvectorizer로 벡터화 하였다. 벡터화한 데이터는 sparse matrix로 저장되고 fit_tranform()으로 lightGBM에 맞는 데이터 형태로 변경한 뒤 lightGBM의 파라미터 objective: 'multiclasss', num_class: '6'로 learning_rate는 0.2, 0.1, 0.05, 0.02, 0.01 으로 각각 학습시키고 L1 L2 등과 같은 규제와 num_leaves : 31, num_boost_round : 100, 200 ,300 으로 early stop 100을
    적용하여 학습시킨 결과 정확도가 65% 정도로 xgboost가 75%인데에 비해 낮은 결과를 보여 기존 xgboost 모델을 사용하기로 했다

    Step 2. AI model

    스토리 :
    -(사용자) "나"는 이전에 개발한 영상을 화면에 띄우는 프로그램에서, 띄우는 이미지에 대한 감정 분석을 하려고 한다.
    -openCV로 사진에서 얼굴을 잘라낸후
    -CNN 모델을 사용해 분석한 감정을 출력한다.

    lstm 모델 성능과 새로운 gboost 모델

    처음에 사용하려 했던 lstm 모델의 성능이 저하하여 새로운 모델 gboost 를 사용하기로 했다.
    gboost의 모델은 훈련데이터에 한해 75% 정확도를 보였다. 정확도를 더 높이기 위해 뉴스 헤드라인을 6가지 감정 anger, disgust, fear, joy, happiness, sadness, surprise으로 분류해놓은 데이터를 추가하기로 했다.

    Step1. Future change detected: 향후에 생길 큰 변화를 예측하였습니다.

    이 프로그램은 향후 서버에서 사용될 예정입니다.

    이로인해 프로그램에서 미래에 문제로 작용할 수 있는 변화를 발견하였습니다.

    1.(중요) 예상되는 코드 형태
    -이전 클래스에서는 UI 클래스 라는 파이썬 코드 안에서 동작하였으나
    웹 페이지에서는 겉모습: html, css. 웹페이지에 입력한 데이터를 서버에 전송: JavaScript
    서버를 통해 받는 부분 : python 내 django 로 나뉩니다.

    -이대로 개발한 후 웹 서버에 적용시키려고 하면 UI라는 코드 한군데서 써야 하는 코드,
    버려야 하는 코드가 모두 묶여있어. 코드 변경이 불가피 합니다.

    2.(현재 고려사항 아님) 성능문제
    -웹 버전에서는 web socket을 뚫어 압축한 웹캠 이미지를 전송할 예정이나, 블로그 한군데서
    그렇게 했더니 버벅거리는 현상이 일어날 수 있다는 경고를 발견하였습니다. 1에서 처럼
    이미지를 한장씩 전송하는 방식은 무거울 수 있을 것 같습니다.

    HTTPS 서버로 실행시 필요한 세팅

    HTTP 에서는 카메라 사용이 제한되어 HTTPS 로 바꿔야하는 문제가 있었습니다.
    이로인해 HTTPS 로 세팅하였구요, 각자 서버를 여실때의 명령어 방식이 변경되었습니다.

    프로젝트 상단에 생긴 폴더, 인증서, setting.py 코드 부분 다시 pull 받으셔야합니다.

    • 기존
      python3 manage.py runserver 0.0.0.0:8000

    • 변경
      python3 manage.py runsslserver 0.0.0.0:8000

    되지않으신다면 python-runsslserver 를 install 해주셔야합니다.
    그 밖의 오류가 있으시면 남겨주세요.

    중간평가 피드백 반영사항

    1. 댓글 분류가 잘못되었을때 그것을 잘됐다 안됐다 하는걸 사용자의 의견을 받아 수정하는 기능 추가
    2. 페이스북 공유기능 , 소셜 로그인 등 페이지를 추가하고 화려하게 구성
    3. 영상 감성 분석 결과를 냈을 때 전체적인 영상 감성 평가하는 방법 고려
    4. 댓글과 영상의 multi-modal 데이터 분석 고려

    이번주 계획 : 로컬에서 구현한것들을 장고로 이전

    댓글 판별 정확성 향상을 위한 이슈

    기존에 댓글 번역을 위해 번역 시 정확성이 더 높아 사용하려던 네이버 파파고 API가 일일 한도량이 매우 적어 댓글을 번역하기에 힘든다는 판단을 내렸다. 따라서 구글의 translation API 중 하나인 cloud translation API를 사용하여 한도 제한없이 사용이 가능하다.
    번역 시 이모티콘이 있으면 안되기에 제외.
    중요한 감정 데이터인 이모티콘에 대한 정보는 누실되는 것을 고려해야한다.

    웹서버에 다한 간단한 설명

    프로젝트 진행시 사용하게 될 AWS EC2와 웹서버에 대해 설명합니다.

    ppt의 내용은

    1. 웹이란

    2. 웹 서버란
      -하드웨어
      -AWS EC2
      -Django
      -여러 서버를 사용하게 되는 예

    로 구성되어 있습니다.

    추후 혼동이 생기는 경우를 방지하기 위해 issue에 공유 합니다.

    유인물.pptx

    YouTube 댓글 API 문제점

    스크린샷 2019-04-01 오후 4 04 12

    기존 이용하려고 했던 youtube에서 제공하는 댓글 api를 사용해보니
    최대 100개까지의 댓글만 가져올수 있는 문제가 발견되었습니다
    어떻게 해결할까요? 아마도 youtube data api는 사용할 수 없을 것 같습니다.

    Step 1. start design

    스토리 :
    -(사용자) "나"는 영상에서 이미지를 한장씩 떼어 화명에 띄우는 프로그램을 만들고 싶다.
    -표준 입력으로 영상의 path를 입력 하면, 콘솔에 입력해 감에 따라 1장씩 화면에 출력한다.
    -1장씩 출력하는 것 만으로는 영상에서 처음의 매우 일부분 밖에는 볼 수 없다. 100장씩 뛰어넘고 출력하는 방법도 고안한다.

    웹캠 사용시 카메라 설정

    웹캠켜기 버튼을 눌렀을시, 카메라를 허용하겠냐는 알림창과 함께 주소창에 카메라 모양이 켜져야 정상입니다.
    버튼을 눌러도 반응이 없는경우, 브라우저 설정과 카메라 권한 설정이 되지 않은 것 입니다.

    1. 브라우저 환경설정

    크롬 환경설정 > 고급 > 콘텐츠 표시 > 카메라 권한 허용

    2. OS 환경설정

    (Mac) 환경설정 > 개인정보보호 > 크롬의 카메라 권한 허용

    (windows) 설정 > 개인 정보 > 카메라를 선택한 다음 앱에서 내 카메라를 사용하도록 허용

    (Ubuntu) sudo apt-get install cheese

    최종 시연

    최종 시연시 논의할 이슈들을 남겨 주시길 바랍니다.

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.