기술 이야기
home
Programming
home
🗞️

FC 온라인 라이브 뉴스 추천 서비스를 위한 뉴스 필터링

Upload date
2022/01/19
Tag
NLP
FC온라인
추천
뉴스
필터링
Editor
마케팅컨텐츠개발팀_전종하
Editor is
마케팅컨텐츠개발팀 전종하입니다. 컨텐츠와 트렌드에 관심이 많으며 이를 기술적으로 접근하는 것을 좋아합니다.
상태
2 more properties

Table of contents

들어가며

안녕하세요 마케팅컨텐츠개발팀 전종하입니다. 오늘 저는 FC 온라인 라이브 뉴스 추천 서비스를 위한 뉴스 필터링 모델에 대해 소개해 드리고자 합니다.

뉴스 필터링의 필요성

현재 인텔리전스랩스에서는 FC 온라인 게임의 뉴스센터를 개발하고 리뉴얼하는 업무를 진행하고 있는데요 FC 온라인 뉴스센터에서는 아래와 같은 형태로 ‘넥슨 유튜브 컨텐츠 추천’ 서비스와 ‘실시간 뉴스" 서비스를 유저들에게 제공하고 있습니다.
FC 온라인 뉴스센터는 현재 Your Field 서비스로 리뉴얼 되었으며, 아래 내용은 실제 서비스와 상이할 수 있습니다. (2024.03.06)
그림 1 : FC 온라인 뉴스센터 화면
그림 2 : FC 온라인 뉴스센터 정보구조
뉴스센터의 ‘실시간 뉴스’는 스포츠 언론사를 통하여 뉴스 기사를 실시간으로 받아 와서 유저들이 볼 수 있도록 기사를 제공하는 서비스인데, 비(非) 스포츠 뉴스나 선정적인 뉴스가 나갈 경우 서비스 질이 나빠질 수 있어서 비적합 뉴스는 필터링 해야 하는 필요성이 있습니다.
비적합 뉴스1 (선수 사생활 관련)
그림 3 : 선수 사생활 관련 뉴스
비적합 뉴스2 (홍보성)
그림 4 : 홍보성 뉴스
비적합 뉴스를 필터링 하는 작업을 사람이 직접 하기에는 여러 가지 한계가 있기 때문에 실시간 뉴스 필터링을 위한 개발 작업을 고안했습니다.

필요한 뉴스 주제만 추론하는 방법

우선, 빠른 업무 진행을 위해 아래의 방법들을 생각했습니다.

1. Multi-Class Classification : 뉴스 기사를 주제별로 라벨링 후 분류 모델을 학습하기

문제점 1) 언론사로부터 공급받을 수 있는 기사량의 한계 문제점 2) 모호한 라벨링 기준과 라벨링 시 리소스 소모가 큼
이 방법은 빠른 프로토타이핑을 고려했을 때 제외하는 것이 옳다고 판단했습니다.

2. Zero-Shot Learning : 학습 데이터를 세팅하지 않고 한 번도 학습되지 않은 클래스에 대한 분류를 학습하여 주제 분류하기

장점 1) 주어진 텍스트를 별도 훈련 과정 없이 지정해 놓은 레이블에 분류할 수 있음 장점 2) 주제 분류뿐만 아니라, 상황에 대한 파악도 가능

2.1 활용한 데이터 셋

그림 5 : 실험에 활용한 데이터 셋
KorNLI 한국어 자연어 추론 데이터셋으로 활용된 모델을 사용했습니다.
1. KorNLI and KorSTS (기존 영문 데이터셋을 기계번역한 데이터셋) - 개발과 테스트셋의 번역 결과에 대한 평가 퀄리티를 보장하기 위해 전문 번역가에게 사후 평가 2. 데이터셋은 전제(premise)와 가설(hypothesis)로 이루어진 각 한 쌍의 문장별로 아래와 같은 라벨 보유 - Entail (함의) - Neutral (중립) - Contradiction (모순)

2.2 모델 작동 방식

그림 6 : Zero-Shot Learning 모델 작동 방식
그림 7 : Zero-Shot Learning 모델 결과

3. Named Entity Recognition : 제공 받은 뉴스 데이터의 개체명 인식을 통해 선수/팀/감독/경기에 대한 내용을 추출하기

장점 1) 실제 게임에서 사용되는 선수/팀/감독명을 정확성 있게 추출할 수 있음

3.1 활용 데이터셋

국립국어원 모두의 말뭉치 데이터셋으로 활용된 모델을 사용했습니다.
그림 8 : 국립국어원 개체명 분석 말뭉치
대분류
비고
PERSON
인물 → 스포츠 선수/감독 이름 추출 가능
ORGANIZATION
조직 → 스포츠 팀/구단명 추출 가능
THEORY
이론
ARTIFACT
인공물
STUDY_FIELD
학문
LOCATION
지역
CIVILIZATION
문명
DATE
날짜
TIME
시간
QUANTITY
수량 표현
EVENT
이벤트
ANIMAL
동물
PLANT
식물
이 중에서 Zero-Shot Learning, Named Entity Recognition 두 가지 방안을 선택했고, 구체적으로 어떤 방식으로 필터링할지 고민해본 결과, 뉴스 기사의 텍스트 데이터를 통해 선수/팀/구단/감독 등의 개체명을 인식하고, 뉴스 주제를 분류하여 저희가 생각한 가설에 일치하지 않은 경우 불필요한 뉴스로 추정했습니다.
작업 방식
가설
예시
개체명 인식
스포츠 축구 기사 특성상, 인물(Person)과 조직(Organization)에 대한 개체명이 인식이 되어야 한다.
‘이적료 827억 토트넘 타깃’ 음바페 대체자로 PSG 가나 → 인물 : 음바페 / 조직 : 토트넘, PSG
뉴스 주제 분류
제공받은 뉴스 데이터의 단어 빈도를 확인 후에, 주제 카테고리 지정 후 해당 주제의 기사일 가능성이 높은 기사를 정상 뉴스로 판단
정답 주제 분류 → ('리그','영입','감독','선수','경기','득점','부상', '한일전','월드컵'','평가전','이적','계약')
추가로, 모델에서 올바르게 인식을 할 수 없을 경우를 대비하여 룰 기반의 금칙어를 등록하여, 해당 키워드가 포함된 뉴스의 경우를 필터링 대상에 아래와 같이 포함시켰습니다.
작업 방식
가설
예시
경조사 뉴스
특정인의 부고, 결혼, 사망과 관련된 제목 (부고, 결혼, 부친상)
[부고] 이영호(연합뉴스 스포츠부 차장)씨 부친상
홍보성 뉴스
스포츠와 관련 없는 홍보성 제목 ('채용','스폰서','모집','출시','엠베서더','기부','파트너십','파트너쉽','ESG','도입')
세계 최초 축구 포인트 앱, 축구파이 정식 버전 출시
비스포츠 뉴스
경기 및 선수와 관련된 내용보다는 비 스포츠(사생활 포함)에 관련된 뉴스 제목 ('SNS','인스타','페이스북') 등
메시, 코파 우승 사진으로 인스타 '좋아요' 2천만 돌파...'호날두 넘었다'

테스트 결과

A. Zero-Shot Learning : 주제 추론 결과

여러 테스트 결과, 주제 분류기에서 저희가 지정해놓은 카테고리에 속할 확률이 75%이상인 주제 3가지를 내림차순으로 반환했습니다. 여기서 저희가 미리 선정한 카테고리에 한 가지의 주제라도 75% 이상의 확률로 속하지 않을 경우 비적합 뉴스로 추론했습니다.
아래는 테스트 결과 예시입니다.
제목
황의조, 독일-러시아-중국 클럽으로부터 러브콜...'이적료 135억선'
추론 결과
그림 9 : (이적, 선수, 영입)의 주제가 반환된 추론 결과
제목
대전, 홈구장 잔디·토양 교체 및 국내 최초 인공 채광기 도입
추론 결과
그림 10 : 비정상 뉴스로 판단된 추론 결과 : 주제 추론 결과 75%이상인 주제가 없음 → 비정상 뉴스

B. Named Entity Recognition : 개체명 인식 결과

제목
개체명 인식 결과
황의조, 독일-러시아-중국 클럽으로부터 러브콜...'이적료 135억선'
"predict": [ ["황의조","PERSON"], ["독일","COUNTRY"], ["러시아","COUNTRY"], ["중국","COUNTRY"], ["135억","QUANTITY"], ]
대전, 홈구장 잔디·토양 교체 및 국내 최초 인공 채광기 도입
"predict": [ ["대전","CITY"], ["잔디","PLANT"], ["인공 채광기","TERM"],]
뉴스 제목에서 추출되는 다양한 개체명(지역, 국가, 사건, 조직, 사람 등) 추출을 진행한 후, 그 중에서 뉴스 기사 제목 안에 팀 or 선수 이름이 포함되어 있지 않을 경우 비적합 기사일 가능성이 높다고 판단했습니다.
그림 11 : 개체명 인식 결과와 주제 추론의 교집합을 사용하여 뉴스 기사를 선정
최종적으로, 위와 같이 개체명 인식 결과와 뉴스 주제 추론 결과 가설 조건에 모두 부합할 경우 적합한 뉴스 기사로 선정했습니다.

라이브서비스에 적용하기

라이브서비스에 적용하기 위한 간단한 파이프라인은 다음과 같습니다.
그림 12 : 라이브서비스에 적용하기 위한 파이프 라인
언론사의 FTP 서버를 통해 실시간으로 제공되는 뉴스 기사 중 필요한 필드를 S3에 적재한 후에 서비스 DB로 가져온 뒤 위에 생성된 필터링 모델을 통해 결과를 추론합니다. 결과 추론 결과 정상 뉴스/비정상 뉴스로 이진 분류(1/0)를 진행하는데, 정상 뉴스인 경우(SORT=1)에만 어드민 페이지를 통해 동기화를 진행합니다.

예시

1. 비정상 뉴스

그림 13 : 비정상 뉴스가 필터링 된 예시

2. 어드민 페이지 동기화

그림 14 : 어드민 페이지 동기화에 적용된 모습

3. 뉴스센터 라이브

그림 15 : 뉴스센터 라이브에 적용된 모습
. . .

나가며

현재 저희 팀에서는 뉴스센터 2차 개발을 위한 작업을 진행하고 있으며, 유저 개인화 추천 및 유저들에게 흥미 있는 컨텐츠를 효율적으로 노출하기 위한 다양한 연구도 진행하고 있습니다.
유저 플레이 로그와 뉴스/컨텐츠에서 추출된 개체명을 매핑하여 추천 고도화
뉴스 정보를 요약하여 유저들에게 핵심 정보만 효율적으로 노출
유저 플레이 로그 기반 개인화 배너 생성 등
Techblog Contents
Related Sites
 넥슨 게임 포탈
회사 소개
인텔리전스랩스 소개
인재 영입
인텔리전스랩스 블로그 운영 정책
 테크블로그 문의 devrel@nexon.co.kr