1. 작품의 목적

최근 독감백신에 대해 부정적인 입장과 긍정적인 입장이 나뉘는 가운데 저희는 그런 사람들이 나이, 성별 등 여러 조건에서 사람들이 어떤 입장인지 알아 기업, 정부기관 혹은 개인에게 도움을 주기 위해 목적을 세웠다

2. 작품 요약

뉴스 기사의 텍스트 마이닝, 머신러닝을 통해 키워드별 뉴스기사에 긍정, 부정, 중립 성향을 분석하는 모델을 만든다. 특히 현재 독감 백신에 대한 긍정, 부정 의견을 알아보고, 데이터 분석을 통한 여러 통계치를 개시한다.

크롤링으로 수집된 기사를 머신러닝을 통해 긍정, 부정으로 분리하는 인공지능을 만들고, 기사별 데이터 분석을 통해 언론사별 성향을 알아낸다.

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/699f35d7-5327-4a91-b74e-6717d5d6de60/1-1.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/35da8fd2-4680-4e9d-99b4-de105e1d279f/2.png

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/24125dff-70de-492b-8c0d-b5373c7705a4/3.png

3. 작품 제작 과정

파이썬으로 크롤링 된 데이터(requests 사용)를 파싱(BeautifulSoup 사용)하여 텍스트 추출, Keras를 사용하여 BiLSTM으로 이미 학습된 모델을 통해 긍정, 부정을 판단한다.

이렇게 분류된 데이터를 웹에 개시하고, 설문 조사를 통해 연령별, 성별, 지역별 뉴스기사에 대한 성향을 알 수 있는 웹 서비스를 제작한다.

3-1. 크롤링 코드

# 총 100까지, 10페이지간의 간격으로 진행
for n in range(1,100,10):
    req = requests.get("<https://search.naver.com/search.naver?&where=news&query=독감백신&start=>"+str(n), headers={'User-Agent':'Mozilla/5.0'}) #독감백신에 대해 리퀘스트 전달
    html = req.text 
    soup = BeautifulSoup(html, 'html.parser')

    articles = soup.select('ul.type01 > li') #ul.type01에 있는 li 태그를 선택한다.

    for article in articles: #기사수만큼 반복
        title = article.select_one("a._sp_each_title").text          
        # 기사 제목
        others = article.select_one("dd.txt_inline").text          
        # date 추출을 위해 여러 정보를 불러옴
        agency = article.select_one("span._sp_each_source").text     
        # 언론사
        link = article.select_one("a._sp_each_title")['href']
        #a태그에 있는 링크 추출
        agency = agency.rstrip("언론사 선정")                           
        # 불필요한 문자 삭제

3-1-2. 크롤링 결과

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c99444d3-62f7-4b14-87e9-9b33d44f3c7b/2-1.png

3-2. 학습 데이터