"미네르바"의 두 판 사이의 차이

cdc wiki
이동: 둘러보기, 검색
(개발 일정)
(상세설계 내용)
 
(같은 사용자의 중간 판 19개는 보이지 않습니다)
280번째 줄: 280번째 줄:
 
====개발 일정====
 
====개발 일정====
  
[[파일: 미네르바 개발일정.JPG]]
+
[[파일:미네르바 개발일정.JPG|600픽셀]]
 
<br>
 
<br>
 
<br>
 
<br>
286번째 줄: 286번째 줄:
 
====구성원 및 추진체계====
 
====구성원 및 추진체계====
  
[[파일:Example.jpg]]
+
[[파일:미네르바 역할분담.JPG|600픽셀]]
 
<br>
 
<br>
 
<br>
 
<br>
294번째 줄: 294번째 줄:
 
====제품의 요구사항====
 
====제품의 요구사항====
  
[[파일:Example.jpg]]
+
[[파일:미네르바 요구사항.JPG|700픽셀]]
 
<br>
 
<br>
 
<br>
 
<br>
326번째 줄: 326번째 줄:
 
===개념설계안===
 
===개념설계안===
  
[[파일:Example.jpg]]
+
[[파일:미네르바 시스템구조.JPG|700픽셀]]
  
 
1. 웹 클라이언트가 Django에서 제공하는 웹 서버(Django WSGI)에 HTTP 프로토콜로 요청하게 된다.
 
1. 웹 클라이언트가 Django에서 제공하는 웹 서버(Django WSGI)에 HTTP 프로토콜로 요청하게 된다.
349번째 줄: 349번째 줄:
 
- 2500만 뉴스 데이터로 Pre-Training 상태이기 때문에 "..한다", "..하다" 형태의 기사 문체 및 맥락 없는 문장 생성하는 문제점 발생
 
- 2500만 뉴스 데이터로 Pre-Training 상태이기 때문에 "..한다", "..하다" 형태의 기사 문체 및 맥락 없는 문장 생성하는 문제점 발생
  
- Fine-Tuning이 필요
+
- Fine-Tuning 필요 (이미 학습된 모델 Weights를 목적에 맞게 변형하는 2차 학습 과정)
 
<br>
 
<br>
 
<br>
 
<br>
356번째 줄: 356번째 줄:
  
 
- PyTorch 사용
 
- PyTorch 사용
 +
 +
- Google 'Colab' GPU 환경에서 진행
  
 
- Object Function: Cross Entropy Loss
 
- Object Function: Cross Entropy Loss
  
 
- Optimizer: Adam
 
- Optimizer: Adam
 +
<br>
 +
<br>
 +
 +
 +
'''1) 학습 데이터 준비'''
 +
 +
- 인터넷에서 무료로 제공하는 김동인 작가의 단편 소설을 사용
 +
 +
 +
'''2) 파일 경로 설정'''
 +
 +
[[파일:미네르바 상세1.JPG]]
 +
 +
- cache_dir : SK에서 제공하는 모델 경로
 +
 +
- save_path : 학습을 마친 후 결과물인 tar파일을 저장할 경로
 +
 +
- data_file_path : 학습할 데이터 경로 (다운 받은 소설이나 기타 등등)
 +
 +
 +
'''3) 변수 설정'''
 +
 +
[[파일:미네르바 상세2.JPG]]
 +
 +
- SK에서 제공하는 모델로 model과 vocab 변수를 설정한다.
  
[[파일:Example.jpg]]
+
- 이 부분은 Fine-Tuning을 진행하지 않고 문장만 생성하려 할 때도 필요한 부분이다.
  
- 소설에 대한 학습은 정상 진행. 그러나 버스커
+
- epoch, learning_rate, batch_size를 설정한다.(바꿔보면서 할 수 있음)
  
- 문제점 4개
 
  
- 문제점 4개
+
'''4) 학습 진행'''
  
- 문제점3
+
[[파일:미네르바 상세3.JPG]]
  
- 문제점 4
+
1. 소설 파일 등에 공백인 줄이 있는 경우엔 학습이 진행되지 않아 설정
 +
 
 +
2. Count가 10의 배수가 될 때마다 현재 진행 중인 epoch, train no, loss를 출력
 +
 
 +
3. Count가 100의 배수가 되거나 일정 조건에서 학습한 내용을 저장
 +
 
 +
4. 짧은 문장들이 많은 경우(노래 가사) 또는 학습할 데이터의 크기가 너무 큰 경우 RuntimeError 발생
 +
 
 +
GPU가 아닌 CPU로 진행 할 경우 문제 해결이 가능하나 그러기엔 학습 속도가 너무 느림
 +
 +
짧은 문장들을 합쳐 긴 문장들로 바꾼 후 학습을 진행했을 때 loss가 잘 줄어드는 것을 확인 후 문제 해결
 +
<br>
 +
<br>
 +
 
 +
[[파일:미네르바 상세4.JPG]]
 +
<br>
 
<br>
 
<br>
 
<br>
 
<br>
377번째 줄: 418번째 줄:
 
'''1.3 Multi-Model 구축'''
 
'''1.3 Multi-Model 구축'''
  
- ㅇㅇ
+
[[파일:미네르바 상세5.JPG]]
  
- ㅇㅇ
+
1) Fine-Tuning 완료시 약 1~2GB의 tar 파일 생성
  
- ㅇㅇ
+
2) 해당 모델의 경로를 변수를 통해 설정하면 정상적으로 적용 가능
 
<br>
 
<br>
 
<br>
 
<br>
  
'''2. 기사 3줄 요약'''
 
  
'''2.1 Text-Rank 알고리즘 기반'''
+
'''2. 이미지 크롤링'''
<br>
+
 
<br>
+
'''목적'''
 +
 
 +
- 제목 값을 입력으로 받아 Selenium을 통해 구글 이미지 크롤링 시스템을 구현한다.
 +
 
 +
 
 +
'''요구사항 및 구현'''
 +
 
 +
- txt 값을 입력으로 받을 수 있게 한다.
 +
 
 +
- 이미지 URL을 이용하여 사진을 받을 수 있게 한다.
 +
 
 +
- 이미지를 긁어와 개별적인 폴더를 구성할 수 있게 한다.
 +
 
 +
- 이미 존재하는 폴더가 있는 경우 선택적으로 재검색을 수행할 수 있게 한다.
 +
 
 +
 
 +
'''주요 함수'''
 +
 
 +
class CollectLinks
 +
 
 +
- def get_scroll(self) : 자동 스크롤 기능
 +
 
 +
- def wait_and_click(self, xpath) : 오류 발생 시 2초 간 sleep
 +
 
 +
- def highlight(self, element) : google_full에서 이미지가 체크된 곳에 하이라이트 표시
 +
 
 +
- def remove_duplicates(_list) : 중복 제거
 +
 
 +
- def google(self, keyword,  add_url=””) : 썸네일 가져오기
 +
 
 +
- def google_full(self, keyword,  add_rurl) : 원본 사진 가져오기
 +
 
 +
 
 +
'''실행 결과'''
 +
 
 +
[[파일:미네르바 상세6.JPG]]
 +
 
 +
 
 +
[[파일:미네르바 상세7.JPG]]
 +
 
 +
- 키워드를 입력 받으면 OS를 탐지하고, 구글에서 이미지를 검색한다.
 +
 
 +
- 스크롤은 4페이지 이내만 수행하고, 최대 10장의 사진만 저장하도록 동작한다.
  
'''3. 이미지 크롤링'''
+
- robotx.txt에서 크롤링을 허가하지 않은 홈페이지에 게재된 파일의 경우 스크롤을 진행하지 않는다.
  
'''1.1 KoGPT2 사용'''
+
- 열 장의 사진에서 URL을 입력 받아 원본 사진을 크롤링 한다.
  
 
==결과 및 평가==
 
==결과 및 평가==
403번째 줄: 485번째 줄:
 
'''1. 메인 페이지'''
 
'''1. 메인 페이지'''
  
[[파일:Example.jpg]]
+
[[파일:미네르바 메인페이지.JPG|800픽셀]]
  
 
* '''헤드라인 뉴스'''
 
* '''헤드라인 뉴스'''
419번째 줄: 501번째 줄:
 
'''2. 글쓰기 페이지'''
 
'''2. 글쓰기 페이지'''
  
[[파일:Example.jpg]]
+
[[파일:미네르바 글쓰기상단.JPG|800픽셀]]
 +
 
 +
[[파일:미네르바 글쓰기하단.JPG|800픽셀]]
  
 
* '''글 스타일 (핵심 1)'''
 
* '''글 스타일 (핵심 1)'''
437번째 줄: 521번째 줄:
 
'''3. 카테고리별 페이지'''
 
'''3. 카테고리별 페이지'''
  
[[파일:Example.jpg]]
+
[[파일:미네르바 카테고리별.JPG|800픽셀]]
  
 
* '''핫이슈'''
 
* '''핫이슈'''
449번째 줄: 533번째 줄:
 
'''4. 스크랩 페이지'''
 
'''4. 스크랩 페이지'''
  
[[파일:Example.jpg]]
+
[[파일:미네르바 스크랩페이지.JPG|800픽셀]]
  
 
* '''스크랩 글 조회'''
 
* '''스크랩 글 조회'''
461번째 줄: 545번째 줄:
 
'''5. 뉴스 상세 페이지'''
 
'''5. 뉴스 상세 페이지'''
  
[[파일:Example.jpg]]
+
[[파일:미네르바 뉴스상세.JPG|800픽셀]]
  
 
* '''요약 봇 (핵심 5)'''
 
* '''요약 봇 (핵심 5)'''
476번째 줄: 560번째 줄:
 
====포스터====
 
====포스터====
  
[[파일:Example.jpg]]
+
[[파일:미네르바 포스트.JPG|600픽셀]]
 
<br>
 
<br>
 
<br>
 
<br>
482번째 줄: 566번째 줄:
 
===완료작품의 평가===
 
===완료작품의 평가===
  
[[파일:Example.jpg]]
+
[[파일:미네르바 완료작품평가.JPG|800픽셀]]
 
<br>
 
<br>
 
<br>
 
<br>

2020년 6월 28일 (일) 10:36 기준 최신판

프로젝트 개요

기술개발 과제

국문 : <MINE-POST> 인공지능의 보조를 통한 가짜뉴스 사이트

영문 : <MINE-POST> Fake news site with the help of artificial intelligence

과제 팀명

미네르바

지도교수

김민호 교수님

개발기간

2020년 3월 ~ 2020년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부 20159200** 소*진(팀장)

서울시립대학교 컴퓨터과학부 20169200** 정*희

서울시립대학교 컴퓨터과학부 20159200** 박*원

서울시립대학교 컴퓨터과학부 20159200** 이*구

서울시립대학교 컴퓨터과학부 20159200** 지*원

서론

개발 과제의 개요

개발 과제 요약

MINE-POST는 인공지능의 보조를 통한 가짜뉴스 사이트이다. 핵심 기능은 다음과 같다.

  1. Fine-Tuning을 통해 구현된 다양한 글 스타일 모델(뉴스, 소설, 노래)을 사용할 수 있다.
  2. 기사 제목을 입력하면 이후에 올 적합한 단어들을 Ajax를 통해 실시간으로 추천한다.
  3. 사용자가 문장을 입력하면 인공지능이 맥락에 맞는 한 단락의 문장을 완성한다.
  4. 완성된 기사는 TextRank 알고리즘을 통해 3줄 요약하여 기사 상단에 보여준다
  5. 기사에 어울리는 이미지들을 Selenium을 통해 크롤링하여 제공한다.


개발 과제의 배경

- 가짜뉴스는 진짜뉴스를 뛰어넘을 만큼 많이 존재하며 이로 인한 국가, 경제적 피해가 심각하다.

- 하지만 미국 증권가의 AI Journalism은 속도나 객관성에서 사람을 뛰어넘을 만큼 큰 잠재력을 가졌다.

- 양날의 검인 글쓰기 모델을 올바르게만 사용한다면 훌륭한 글쓰기 보조도구가 될 것이다.

- 그래서 우리는 인공지능이 뉴스 작성을 보조해주는 기계+인간 협업 형태의 새로운 뉴스 사이트를 제시한다.

개발 과제의 목표 및 내용

- Pre-Traning상태인 GPT-2 모델에 대하여 Fine-Tuning을 거쳐 뉴스 사이트에 적합한 형태로 학습 시킨다.

- 아래 제시한 인공지능의 핵심 보조 기능들에 대하여 구현한다.

1. 다양한 글 스타일 모델(뉴스, 소설, 노래) 사용
2. 실시간 제목 추천
3. 인공지능 자동 글쓰기
4. Text-Rank 기사 3줄 요약
5. 크롤링을 통한 이미지 추천


관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

1. 전 세계적인 기술현황

국외

1. BERT - 2018.11 Google 발표. Transformer 신경망 기반. 양방향성 학습 모델

2. GPT-2 - 2019.02 OpenAI 발표. Transformer 신경망 기반. 최대 규모 오픈소스 모델

3. T5 - 2019.10 Google 발표. Transformer 신경망 기반. '전이학습' 이용한 학습 모델


국내

1. KoBERT - 2019.10 SK T-Brain 발표. 데이터 기반 토큰화 기법 통해 한국어 성능 극복

2. KoGPT2 - 2020.04 SK + AWS 발표. GPT-2 Small(117M)을 기반으로 함.

3. KorBERT - 2019.06 한국전자통신연구원(ETRI)발표. 형태소 기반 언어 모델로 한국어 성능 극복


2. 특허조사 및 특허 전략 분석

특허조사

- 자연어처리를 위한 완성형 한글코드 음소정보 추출 방법 (KT, 2003년 출원, 2009년 등록)

- 기사 요약 서비스 서버 및 방법(KaKao, 2015년 출원, 2015년 등록)

- 한국뉴스 요약 시스템 및 방법 (울산과학기술원 산학협력단. 2013년 출원, 2015년 등록)

- 빅데이터 분석 기반의 인공지능 실시간 스포츠 기사 자동 작성 시스템 및 방법(에이피케이어플킹, 2018년 출원, 2019년 등록)

- 작성자 맞춤형 기사 작성 방법(이명환, 2015 출원, 2017년 등록)

- 문서를 이미지 기반 컨텐츠로 요약하여 제공하는 방법 및 시스템(NAVER, 2015년 출원, 2017년 등록)

- 발화 패턴의 무한성 개선을 위한 딥러닝 기반의 텍스트 문장 자동 생성시스템 (미디어젠, 2019년 출원, 2019년 등록)

특허 분석

- 인공지능 글쓰기 보조 웹사이트라는 측면에서 신규성을 갖출 수 있다.

- 오픈 소스로 공개하여 사용, 재포, 개작, 개작 후 재배포를 보장한다.

- 웹 컨텐츠의 경우, 단순한 데이터의 축적에 불과하다면 특허출원이 곤란하지만, 웹 컨텐츠를 운영하는 방식이나 알고리즘의 특이성이 인정된다면 그 부분에 대해서는 출원이 가능하다.

시장상황에 대한 분석

1. 경쟁제품 조사 비교

국외

1. Apple 'Siri'

- 음성인식 형태의 자연어 처리 시스템

- 사용자의 단어, 말투를 프로파일링. 축적한 음성 정보를 통해 사용자의 신원 확인 후 정보 제공

- 최근 인공지능 음성 인식 기술을 보유한 스타트업 'PullString'을 인수하며 엔터테인먼트, 금융, 헬스케어를 위한 솔루션 도입 전망


2. Amazon 'Amazon Comprehend'

- 언어 해석을 중심으로 한 자연어 처리 시스템

- 고객의 이메일, 제품 후기, SNS에 게재된 기업 평가 등을 해석하여 기업이 제공하는 서비스 및 제품에 대한 고객 심리 분석

- 언어 해석을 넘어 비정형 데이터 분석 또한 뛰어나다는 평가를 받음.


3. IBM 'Watson Analytics(Cognos Analytics)'

- 자연어 처리 소프트웨어

- 특정 문서가 내포하는 전반적인 정서 및 감정 또는 키워드 속의 감정을 파악하여 심층 분석


국내

1. ETRI 'KorBERT'

- 혁신성장동력 프로젝트인 '엑소브레인' 사업에서 공개된 국가 주도형 한국어 언어 모델

- 두 종류의 모델 공개 (구글의 기존 언어표현 모델, 한국어의 교착어 특성을 반영한 모델)


2. Kakao 'Khaiii'

- CNN 기반 형태소 분석 모델

- '세종 Corpus'를 기반으로 데이터 오류 수정 및 자체 구축 데이터로 학습(85만 문장, 1003만 어절)

- 딥러닝에 C++ 를 적용하여 일반적인 방식인 GPU 를 사용하지 않고도 빠른 분석 속도 구현


3. Naver

- AI 기술 기반 검색어 교정 시스템인 'AIQSpell'로 기존 교정 시스템 대체

- 홍콩 학회 <EMNLP-IJCNLP 2019> '다국어 읽기 이해도를 위한 제한된 데이터 학습으로 충분한 학습데이터가 존재하지 않는 언어에 대해 기계번역 및 자동 레이블링을 통해 데이터를 자동으로 구축하는 방법' 발표

- 자연어 처리 분야에 있어 업계 가장 선도적으로 개발과 투자를 진행 중인 기업


4. 포티투마루

- 국내 딥러닝 기반 QA(Question Answering) 검색 기술 개발 스타트업

- 'Deep Semantic QA Platform'을 통해 의도를 정확히 이해하고 단 하나의 정답만 도출하는 검색 플랫폼 구축

- 세계 최대 기계 독해 경진대회 SQuAD 2.0에서 기계 독해(MRC)분야 3위 기록 (스타트업 최초)

2. 마케팅 전략 제시(SWOT)

1. Strengths

- 새로운 형태의 인공지능 보조 글쓰기 사이트

- Plug-In 형색으로 타 사이트 연동 가능


2. Weaknesses

- 한국어 언어 모델의 성능 한계

- 웹 기반 AI 서비스의 성능 문제

- 다량 데이터 처리로 인한 막대한 서버 비용

- 기사에 대한 팩트체크가 요구


3. Opportunities

- 인공지능에 대한 관심과 수요 증가

- 해외 인공지능 서비스의 성공 사례

- 앱 분야 진출 용이


4. Threats

- 가짜뉴스 등의 악용성 우려

- 대기업 R&D와의 경쟁 시장


1. SO전략

- 기존 사이트에 플러그인 형식을 통한 제공 및 커스터마이징으로 맞춤형 서비스 제공 전략

- 앱 형태의 개발을 통해 흥미로운 것에 관심이 많은 젊은 층과, 글쓰기에 어려움이 있는 중년 층까지 공략

- 인공지능 보조 사이트라는 독자적인 브랜드 이미지에 초점을 맞춘 마케팅

- 언어에 대한 호환력이 좋아서 전 세계에 서비스 제공 가능


2. ST전략

- 타 뉴스 사이트에서 풍부한 기사를 학습 자료로 제공 받고 우리는 서비스를 제공하는 Win-Win 전략 구상

- 인공지능 뉴스의 가장 큰 문제인 신뢰성에 대해 '인공지능 팩트 체크 기술'과의 협업을 통해 신뢰성 확보


3. WO전략

- 모델을 서버에 업로딩 하는 방식이 아닌 고성능 컴퓨터를 통한 실시간 처리 방식을 구상


4. WT전략

- CDN을 통한 간단한 서비스 제공으로 사업이 확장 되어도 유지 비용을 유지하는 방법 구상

개발과제의 기대효과

기술적 기대효과

- 더 자연스럽고 정확한 결과물을 위해 한국어 고유의 학습 방식이 필요함을 제시한다.

- 국내 도입 단계인 '인공지능 글쓰기' 분야가 어떻게 응용되는지 파악하고 유저의 흥미를 끌어낸다.

- 모델 선정, 데이터 가공 및 적용 등 설계 전반 과정에서 모델의 문제점과 발전 방향을 제시한다.

- '인공지능 글쓰기 보조도구'라는 새로운 분야의 발전에 기여한다.

경제적, 사회적 기대 및 파급효과

- 인공지능이 작성하는 가짜뉴스에 대한 경각심을 제공하여 대비책의 필요성을 제시한다.

- 인공지능과 인간의 협업에 대한 긍정적인 가능성을 제공한다.

- '인공지능 글쓰기'의 발전과 함께 '가짜 뉴스 판별 기술' 또한 발전하게 된다.

- 기존의 사이트에 대해 Plug-In 형태로 해당 프로젝트의 인공지능 기능을 유연하게 적응할 수 있다.

기술개발 일정 및 추진체계

개발 일정

미네르바 개발일정.JPG

구성원 및 추진체계

미네르바 역할분담.JPG

설계

설계사양

제품의 요구사항

미네르바 요구사항.JPG

설계 사양

- Windows, Linux, macOS 구동 가능

Requirements

  • gluonnlp == 0.9.1
  • mxnet == 1.6.0
  • sentencepiece >= 0.1.85
  • torch == 1.5.0
  • transformers == 2.11.0
  • django_extensions==2.2.9
  • selenium==3.141.0
  • Django==3.0.7
  • minegpt2


개념설계안

미네르바 시스템구조.JPG

1. 웹 클라이언트가 Django에서 제공하는 웹 서버(Django WSGI)에 HTTP 프로토콜로 요청하게 된다.

2. CSS, JS, Img파일 등은 ‘static’ 폴더에 따로 관리되어 html이나 Python 코드와 달리 Django를 거치지 않고서도 서버가 바로 처리할 수 있다.

3. 동적인 부분은 웹 서버가 처리 불가능하기 때문에 HTTP 프로토콜 요청을 Python 요청으로 변환하여 Django에 전달한다.

4. Django는 사용자가 Python으로 작성한 어플리케이션 코드를 실행하거나 DB에서 데이터를 불러온다.



상세설계 내용

1. 모델 학습 및 적용

1.1 KoGPT2 사용

- SKT-AI가 Git Open source로 공개한 KoGPT2 모델 사용 (https://github.com/SKT-AI/KoGPT2)

- 2500만 뉴스 데이터로 Pre-Training 상태이기 때문에 "..한다", "..하다" 형태의 기사 문체 및 맥락 없는 문장 생성하는 문제점 발생

- Fine-Tuning 필요 (이미 학습된 모델 Weights를 목적에 맞게 변형하는 2차 학습 과정)

1.2 Fine-Tuning

- PyTorch 사용

- Google 'Colab' GPU 환경에서 진행

- Object Function: Cross Entropy Loss

- Optimizer: Adam


1) 학습 데이터 준비

- 인터넷에서 무료로 제공하는 김동인 작가의 단편 소설을 사용


2) 파일 경로 설정

미네르바 상세1.JPG

- cache_dir : SK에서 제공하는 모델 경로

- save_path : 학습을 마친 후 결과물인 tar파일을 저장할 경로

- data_file_path : 학습할 데이터 경로 (다운 받은 소설이나 기타 등등)


3) 변수 설정

미네르바 상세2.JPG

- SK에서 제공하는 모델로 model과 vocab 변수를 설정한다.

- 이 부분은 Fine-Tuning을 진행하지 않고 문장만 생성하려 할 때도 필요한 부분이다.

- epoch, learning_rate, batch_size를 설정한다.(바꿔보면서 할 수 있음)


4) 학습 진행

미네르바 상세3.JPG

1. 소설 파일 등에 공백인 줄이 있는 경우엔 학습이 진행되지 않아 설정

2. Count가 10의 배수가 될 때마다 현재 진행 중인 epoch, train no, loss를 출력

3. Count가 100의 배수가 되거나 일정 조건에서 학습한 내용을 저장

4. 짧은 문장들이 많은 경우(노래 가사) 또는 학습할 데이터의 크기가 너무 큰 경우 RuntimeError 발생

GPU가 아닌 CPU로 진행 할 경우 문제 해결이 가능하나 그러기엔 학습 속도가 너무 느림

짧은 문장들을 합쳐 긴 문장들로 바꾼 후 학습을 진행했을 때 loss가 잘 줄어드는 것을 확인 후 문제 해결

미네르바 상세4.JPG


1.3 Multi-Model 구축

미네르바 상세5.JPG

1) Fine-Tuning 완료시 약 1~2GB의 tar 파일 생성

2) 해당 모델의 경로를 변수를 통해 설정하면 정상적으로 적용 가능


2. 이미지 크롤링

목적

- 제목 값을 입력으로 받아 Selenium을 통해 구글 이미지 크롤링 시스템을 구현한다.


요구사항 및 구현

- txt 값을 입력으로 받을 수 있게 한다.

- 이미지 URL을 이용하여 사진을 받을 수 있게 한다.

- 이미지를 긁어와 개별적인 폴더를 구성할 수 있게 한다.

- 이미 존재하는 폴더가 있는 경우 선택적으로 재검색을 수행할 수 있게 한다.


주요 함수

class CollectLinks

- def get_scroll(self) : 자동 스크롤 기능

- def wait_and_click(self, xpath) : 오류 발생 시 2초 간 sleep

- def highlight(self, element) : google_full에서 이미지가 체크된 곳에 하이라이트 표시

- def remove_duplicates(_list) : 중복 제거

- def google(self, keyword, add_url=””) : 썸네일 가져오기

- def google_full(self, keyword, add_rurl) : 원본 사진 가져오기


실행 결과

미네르바 상세6.JPG


미네르바 상세7.JPG

- 키워드를 입력 받으면 OS를 탐지하고, 구글에서 이미지를 검색한다.

- 스크롤은 4페이지 이내만 수행하고, 최대 10장의 사진만 저장하도록 동작한다.

- robotx.txt에서 크롤링을 허가하지 않은 홈페이지에 게재된 파일의 경우 스크롤을 진행하지 않는다.

- 열 장의 사진에서 URL을 입력 받아 원본 사진을 크롤링 한다.

결과 및 평가

완료 작품의 소개

프로토타입 사진 혹은 작동 장면


1. 메인 페이지

미네르바 메인페이지.JPG

  • 헤드라인 뉴스
    • 전체 뉴스 최신순
  • 카테고리별 뉴스
    • 카테고리별 최신순
  • 투데이 랭킹
    • 스크랩 기반 순위
    • 우측 사이드바 위치



2. 글쓰기 페이지

미네르바 글쓰기상단.JPG

미네르바 글쓰기하단.JPG

  • 글 스타일 (핵심 1)
    • 다양한 스타일의 멀티모델 사용 가능
  • 실시간 단어 추천 (핵심 2)
    • 더 나은 제목을 위한 단어 추천
  • 기사 자동 완성 (핵심 3)
    • 첫 문장과 연결되는 문장 완성
  • 이미지 추천 (핵심 4)
    • 구글 이미지 크롤링을 통해 제공



3. 카테고리별 페이지

미네르바 카테고리별.JPG

  • 핫이슈
    • 카테고리 최다 스크랩 기사
  • 뉴스 리스트
    • 10개 단위 페이지네이션



4. 스크랩 페이지

미네르바 스크랩페이지.JPG

  • 스크랩 글 조회
  • 스크랩 삭제
    • 체크박스 통한 복수 삭제 가능



5. 뉴스 상세 페이지

미네르바 뉴스상세.JPG

  • 요약 봇 (핵심 5)
    • Text-Rank 통한 기사 3줄 요약
  • 스크랩
    • 스크랩 페이지에 추가
  • 댓글
    • Disqus API 사용



포스터

미네르바 포스트.JPG

완료작품의 평가

미네르바 완료작품평가.JPG

향후계획

- React 라이브러리를 통한 반응형 웹 제작

- 안드로이드 어플리케이션 형태로 이식

- 웹 호스팅 서비스

- 키워드 자동 크롤링을 통하여 자동으로 기사 쓰기

- 사용자가 직접 학습시킬 수 있는 웹 기반 머신러닝

- SNS 기반 로그인 API

- 자유게시판을 통한 유저간의 소통 및 글쓰기 모델 체험

- GPT-2보다 향상된 성능의 NLP 모델 사용하기