프로젝트/인공지능 기자 만들기

[인공지능 기자 만들기#7] 기사 자연어 분석기 만들기 - 유사도 분석, 기사생성

엘티엘 2020. 11. 30. 12:30

2020/11/04 - [프로젝트/인공지능 기자 만들기] - [인공지능 기자 만들기#1] 설계하기 - Action Item 정의하기

2020/11/13 - [프로젝트/인공지능 기자 만들기] - [인공지능 기자 만들기#2] 설계하기 - 프로세스 정의하기

2020/11/18 - [프로젝트/인공지능 기자 만들기] - [인공지능 기자 만들기 #3] 뉴스기사 크롤링 만들기 - 네이버 헤드라인 뉴스 크롤링

2020/11/19 - [프로젝트/인공지능 기자 만들기] - [인공지능 기자 만들기 #4] 뉴스기사 크롤링 만들기 - 뉴스기사 크롤러 (네이버 뉴스 크롤링)

2020/11/23 - [프로젝트/인공지능 기자 만들기] - [인공지능 기자 만들기#5] 기사 자연어 분석기 만들기 - 데이터 전처리

2020/11/24 - [프로젝트/인공지능 기자 만들기] - [인공지능 기자 만들기#6] 기사 자연어 분석기 만들기 - 형태소 분석, 의미분석

 

먼저, 지금까지 해온 작업을 간단히 정리하면 사실 아래 2가지다

  • 네이버에서 기사를 크롤링 해서 데이터를 수집하고
  • 전처리 및 형태소 분석을 해서 데이터를 저장했다

 

이렇게 저장된 데이터를 활용해 인공지능 기자가 새로운 기사를 작성할 차례다

기사는 아래와 같은 방식으로 작성한다.

  • 같은 헤드라인에 포함되어 있는 기사들을 활용해 새로운 기사를 작성한다.
  • 새로운 기사의 제목은 네이버에서 만든 헤드라인 이름으로 한다
  • 새로운 기사의 context는 전체 기사(같은 헤드라인에 있는)중 중간 길이의 기사를 활용한다 (대표기사 선정)
  • 새로운 기사는 문단 단위로 생성한다.
  • 새로운 기사의 새부내용은 대표기사와 다른 언론사의 기사내용을 활용한다.

 

좀더 자세하게 설명하면, 새로운 뉴스 기사는 문맥(context)과 내용(content)을 조합하는 방식으로 생성한다.

 

여기서 문맥(context)은, 기사의 전체적인 흐름(?) 이다.

예를 들어 아래사진과 같은 기사가 있으면, 아래처럼 요약할 수 있다.

(새로운 프로그램이 런청한다 -> 시청차들이 기대한다 -> 다양한 참가자들이 있다 -> 심사위원도 다양한다)

이러한 전체적인 기사의 흐름을 문맥(context)라 한다

이번 인공지능 기자는 문맥(context)까지 직접 생성하기는 너무 복잡하니(=어려우니) 기존 기사중 한개를 선정해(대표기사) 해당 기사의 문맥을 그대로 활용하였다.

문맥을 활용할 대표기사는 모든 기사들중 길이가 적당한(=중간) 기사를 선정하였다.

 

내용(content)는 기사의 세부 내용이다.

같은 주제로 기사를 작성하더라도 언론사마다 세부 내용에 차이가 있다. 이러한 기사의 세부 내용을 내용(content)라 한다

이번 인공지능 기자는 문단 단위로 내용을 처리하고 (아래의 경우 4개의 문단) 수집된 기사의 내용중 1개를 선정해 새로운 기사의 내용으로 활용한다.

(결국은 문맥도 내용도 기존기사를 활용한다는 말...ㅎㅎ)

 

 

아래는 관련 코드이다. 크게 아래와 같은 흐름으로 진행된다. (get_bag_of_words 함수는 이전 글에서 작성한 함수이다)

  • 대표기사를 선정하고
  • 내용간 유사도를 계산하고
  • 가장 유사한 내용선정 및 조함

 

기사 저작권 관련 문제가 될수 있다고 하여 코드는 삭제합니다.

 

아래는 생성된 뉴스기사이다. 위가 기사 원본이고, 아래가 이를 바탕으로 인공지능 기자가 작성한 기사이다.

새로운 기사가 꽤 자연스럽게 작성된 것을 볼 수 있다.

원본의 문맥을 비슷하게 따라가면서 다른 기사의 내용을 적절하게 섞어 새로운 기사가 나름 잘 작성되었다.

 

이제 필요한 기능은 거의 완성되었다.

이제 다음부터는 시스템 구성을 시작해보자

반응형