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

cdc wiki
이동: 둘러보기, 검색
(관련 기술의 현황 및 분석(State of art))
(상세설계 내용)
 
(같은 사용자의 중간 판 79개는 보이지 않습니다)
36번째 줄: 36번째 줄:
 
   4. 완성된 기사는 TextRank 알고리즘을 통해 3줄 요약하여 기사 상단에 보여준다
 
   4. 완성된 기사는 TextRank 알고리즘을 통해 3줄 요약하여 기사 상단에 보여준다
 
   5. 기사에 어울리는 이미지들을 Selenium을 통해 크롤링하여 제공한다.
 
   5. 기사에 어울리는 이미지들을 Selenium을 통해 크롤링하여 제공한다.
 +
<br>
  
 
====개발 과제의 배경====
 
====개발 과제의 배경====
45번째 줄: 46번째 줄:
  
 
- 그래서 우리는 인공지능이 뉴스 작성을 보조해주는 기계+인간 협업 형태의 새로운 뉴스 사이트를 제시한다.
 
- 그래서 우리는 인공지능이 뉴스 작성을 보조해주는 기계+인간 협업 형태의 새로운 뉴스 사이트를 제시한다.
 +
<br>
 +
<br>
  
 
====개발 과제의 목표 및 내용====
 
====개발 과제의 목표 및 내용====
56번째 줄: 59번째 줄:
 
  4. Text-Rank 기사 3줄 요약
 
  4. Text-Rank 기사 3줄 요약
 
  5. 크롤링을 통한 이미지 추천
 
  5. 크롤링을 통한 이미지 추천
 +
<br>
  
 
===관련 기술의 현황===
 
===관련 기술의 현황===
110번째 줄: 114번째 줄:
 
<br>
 
<br>
 
<br>
 
<br>
'''3. 기술 로드맵'''
 
[[파일:Example.jpg]]
 
내용
 
  
 
====시장상황에 대한 분석====
 
====시장상황에 대한 분석====
*경쟁제품 조사 비교
+
 
내용
+
'''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위 기록 (스타트업 최초)
 +
<br>
 +
<br>
 +
 
 +
'''2. 마케팅 전략 제시(SWOT)'''
 +
 
 +
'''1. Strengths'''
 +
 
 +
- 새로운 형태의 인공지능 보조 글쓰기 사이트
 +
 
 +
- Plug-In 형색으로 타 사이트 연동 가능
 +
 
 +
 
 +
'''2. Weaknesses'''
 +
 
 +
- 한국어 언어 모델의 성능 한계
 +
 
 +
- 웹 기반 AI 서비스의 성능 문제
 +
 
 +
- 다량 데이터 처리로 인한 막대한 서버 비용
 +
 
 +
- 기사에 대한 팩트체크가 요구
 +
 
 +
 
 +
'''3. Opportunities'''
 +
 
 +
- 인공지능에 대한 관심과 수요 증가
 +
 
 +
- 해외 인공지능 서비스의 성공 사례
 +
 
 +
- 앱 분야 진출 용이
 +
 
 +
 
 +
'''4. Threats'''
 +
 
 +
- 가짜뉴스 등의 악용성 우려
 +
 
 +
- 대기업 R&D와의 경쟁 시장
 +
<br>
 +
<br>
 +
<br>
 +
 
 +
'''1. SO전략'''
 +
 
 +
- 기존 사이트에 플러그인 형식을 통한 제공 및 커스터마이징으로  맞춤형 서비스 제공 전략
 +
 
 +
- 앱 형태의 개발을 통해 흥미로운 것에 관심이 많은 젊은 층과, 글쓰기에 어려움이 있는 중년 층까지 공략
 +
 
 +
- 인공지능 보조 사이트라는 독자적인 브랜드 이미지에 초점을 맞춘 마케팅
 +
 
 +
- 언어에 대한 호환력이 좋아서 전 세계에 서비스 제공 가능
 +
 
 +
 
 +
'''2. ST전략'''
 +
 
 +
- 타 뉴스 사이트에서 풍부한 기사를 학습 자료로 제공 받고 우리는 서비스를 제공하는 Win-Win 전략 구상
 +
 
 +
- 인공지능 뉴스의 가장 큰 문제인 신뢰성에 대해 '인공지능 팩트 체크 기술'과의 협업을 통해 신뢰성 확보
 +
 
 +
 
 +
 
 +
'''3. WO전략'''
 +
 
 +
- 모델을 서버에 업로딩 하는 방식이 아닌 고성능 컴퓨터를 통한 실시간 처리 방식을 구상
 +
 
 +
 
 +
 
 +
'''4. WT전략'''
 +
 
 +
- CDN을 통한 간단한 서비스 제공으로 사업이 확장 되어도 유지 비용을 유지하는 방법 구상
 +
<br>
 +
<br>
  
 
===개발과제의 기대효과===
 
===개발과제의 기대효과===
 
====기술적 기대효과====
 
====기술적 기대효과====
내용
+
 
 +
- 더 자연스럽고 정확한 결과물을 위해 한국어 고유의 학습 방식이 필요함을 제시한다.
 +
 
 +
- 국내 도입 단계인 '인공지능 글쓰기' 분야가 어떻게 응용되는지 파악하고 유저의 흥미를 끌어낸다.
 +
 
 +
- 모델 선정, 데이터 가공 및 적용 등 설계 전반 과정에서 모델의 문제점과 발전 방향을 제시한다.
 +
 
 +
- '인공지능 글쓰기 보조도구'라는 새로운 분야의 발전에 기여한다.
 +
<br>
 +
<br>
 +
 
 
====경제적, 사회적 기대 및 파급효과====
 
====경제적, 사회적 기대 및 파급효과====
내용
+
 
 +
- 인공지능이 작성하는 가짜뉴스에 대한 경각심을 제공하여 대비책의 필요성을 제시한다.
 +
 
 +
- 인공지능과 인간의 협업에 대한 긍정적인 가능성을 제공한다.
 +
 
 +
- '인공지능 글쓰기'의 발전과 함께 '가짜 뉴스 판별 기술' 또한 발전하게 된다.
 +
 
 +
- 기존의 사이트에 대해 Plug-In 형태로 해당 프로젝트의 인공지능 기능을 유연하게 적응할 수 있다.
 +
<br>
 +
<br>
  
 
===기술개발 일정 및 추진체계===
 
===기술개발 일정 및 추진체계===
 
====개발 일정====
 
====개발 일정====
내용
+
 
 +
[[파일:미네르바 개발일정.JPG|600픽셀]]
 +
<br>
 +
<br>
 +
 
 
====구성원 및 추진체계====
 
====구성원 및 추진체계====
내용
+
 
 +
[[파일:미네르바 역할분담.JPG|600픽셀]]
 +
<br>
 +
<br>
  
 
==설계==
 
==설계==
 
===설계사양===
 
===설계사양===
 
====제품의 요구사항====
 
====제품의 요구사항====
내용
+
 
 +
[[파일:미네르바 요구사항.JPG|700픽셀]]
 +
<br>
 +
<br>
 +
 
 
====설계 사양====
 
====설계 사양====
내용
+
 
 +
- Windows, Linux, macOS 구동 가능
 +
<br>
 +
<br>
 +
 
 +
'''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
 +
<br>
  
 
===개념설계안===
 
===개념설계안===
내용
 
  
===이론적 계산 및 시뮬레이션===
+
[[파일:미네르바 시스템구조.JPG|700픽셀]]
내용
+
 
 +
1. 웹 클라이언트가 Django에서 제공하는 웹 서버(Django WSGI)에 HTTP 프로토콜로 요청하게 된다.
 +
 
 +
2. CSS, JS, Img파일 등은 ‘static’ 폴더에 따로 관리되어 html이나 Python 코드와 달리 Django를 거치지 않고서도 서버가 바로 처리할 수 있다.
 +
 
 +
3. 동적인 부분은 웹 서버가 처리 불가능하기 때문에 HTTP 프로토콜 요청을 Python 요청으로 변환하여 Django에 전달한다.
 +
 
 +
4. Django는 사용자가 Python으로 작성한 어플리케이션 코드를 실행하거나 DB에서 데이터를 불러온다.
 +
 
 +
<br>
 +
<br>
  
 
===상세설계 내용===
 
===상세설계 내용===
내용
+
 
 +
'''1. 모델 학습 및 적용'''
 +
 
 +
'''1.1 KoGPT2 사용'''
 +
 
 +
- SKT-AI가 Git Open source로 공개한 KoGPT2 모델 사용 (https://github.com/SKT-AI/KoGPT2)
 +
 
 +
- 2500만 뉴스 데이터로 Pre-Training 상태이기 때문에 "..한다", "..하다" 형태의 기사 문체 및 맥락 없는 문장 생성하는 문제점 발생
 +
 
 +
- Fine-Tuning 필요 (이미 학습된 모델 Weights를 목적에 맞게 변형하는 2차 학습 과정)
 +
<br>
 +
<br>
 +
 
 +
'''1.2 Fine-Tuning'''
 +
 
 +
- PyTorch 사용
 +
 
 +
- Google 'Colab' GPU 환경에서 진행
 +
 
 +
- Object Function: Cross Entropy Loss
 +
 
 +
- Optimizer: Adam
 +
<br>
 +
<br>
 +
 
 +
 
 +
'''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가 잘 줄어드는 것을 확인 후 문제 해결
 +
<br>
 +
<br>
 +
 
 +
[[파일:미네르바 상세4.JPG]]
 +
<br>
 +
<br>
 +
<br>
 +
 
 +
'''1.3 Multi-Model 구축'''
 +
 
 +
[[파일:미네르바 상세5.JPG]]
 +
 
 +
1) Fine-Tuning 완료시 약 1~2GB의 tar 파일 생성
 +
 
 +
2) 해당 모델의 경로를 변수를 통해 설정하면 정상적으로 적용 가능
 +
<br>
 +
<br>
 +
 
 +
 
 +
'''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을 입력 받아 원본 사진을 크롤링 한다.
  
 
==결과 및 평가==
 
==결과 및 평가==
 
===완료 작품의 소개===
 
===완료 작품의 소개===
 +
 
====프로토타입 사진 혹은 작동 장면====
 
====프로토타입 사진 혹은 작동 장면====
내용
+
<br>
 +
 
 +
'''1. 메인 페이지'''
 +
 
 +
[[파일:미네르바 메인페이지.JPG|800픽셀]]
 +
 
 +
* '''헤드라인 뉴스'''
 +
** 전체 뉴스 최신순
 +
 
 +
* '''카테고리별 뉴스'''
 +
** 카테고리별 최신순
 +
 
 +
* '''투데이 랭킹'''
 +
** 스크랩 기반 순위
 +
** 우측 사이드바 위치
 +
<br>
 +
<br>
 +
 
 +
'''2. 글쓰기 페이지'''
 +
 
 +
[[파일:미네르바 글쓰기상단.JPG|800픽셀]]
 +
 
 +
[[파일:미네르바 글쓰기하단.JPG|800픽셀]]
 +
 
 +
* '''글 스타일 (핵심 1)'''
 +
** 다양한 스타일의 멀티모델 사용 가능
 +
 
 +
* '''실시간 단어 추천 (핵심 2)'''
 +
** 더 나은 제목을 위한 단어 추천
 +
 
 +
* '''기사 자동 완성 (핵심 3)'''
 +
** 첫 문장과 연결되는 문장 완성
 +
 
 +
* '''이미지 추천 (핵심 4)'''
 +
** 구글 이미지 크롤링을 통해 제공
 +
<br>
 +
<br>
 +
 
 +
'''3. 카테고리별 페이지'''
 +
 
 +
[[파일:미네르바 카테고리별.JPG|800픽셀]]
 +
 
 +
* '''핫이슈'''
 +
** 카테고리 최다 스크랩 기사
 +
 
 +
* '''뉴스 리스트'''
 +
** 10개 단위 페이지네이션
 +
<br>
 +
<br>
 +
 
 +
'''4. 스크랩 페이지'''
 +
 
 +
[[파일:미네르바 스크랩페이지.JPG|800픽셀]]
 +
 
 +
* '''스크랩 글 조회'''
 +
 
 +
* '''스크랩 삭제'''
 +
** 체크박스 통한 복수 삭제 가능
 +
 
 +
<br>
 +
<br>
 +
 
 +
'''5. 뉴스 상세 페이지'''
 +
 
 +
[[파일:미네르바 뉴스상세.JPG|800픽셀]]
 +
 
 +
* '''요약 봇 (핵심 5)'''
 +
** Text-Rank 통한 기사 3줄 요약
 +
 
 +
* '''스크랩'''
 +
** 스크랩 페이지에 추가
 +
 
 +
* '''댓글'''
 +
** Disqus API 사용
 +
<br>
 +
<br>
 +
 
 
====포스터====
 
====포스터====
내용
 
  
===관련사업비 내역서===
+
[[파일:미네르바 포스트.JPG|600픽셀]]
내용
+
<br>
 +
<br>
  
 
===완료작품의 평가===
 
===완료작품의 평가===
내용
+
 
 +
[[파일:미네르바 완료작품평가.JPG|800픽셀]]
 +
<br>
 +
<br>
  
 
===향후계획===
 
===향후계획===
내용
 
  
===특허 출원 내용===
+
- React 라이브러리를 통한 반응형 웹 제작
내용
+
 
 +
- 안드로이드 어플리케이션 형태로 이식
 +
 
 +
- 웹 호스팅 서비스
 +
 
 +
- 키워드 자동 크롤링을 통하여 자동으로 기사 쓰기
 +
 
 +
- 사용자가 직접 학습시킬 수 있는 웹 기반 머신러닝
 +
 
 +
- SNS 기반 로그인 API
 +
 
 +
- 자유게시판을 통한 유저간의 소통 및 글쓰기 모델 체험
 +
 
 +
- GPT-2보다 향상된 성능의 NLP 모델 사용하기

2020년 6월 28일 (일) 11: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 모델 사용하기