본문 바로가기
IT 둘러보기

딥러닝을 활용한 뉴스 메타 태깅

by 날고싶은커피향 2023. 11. 15.

  • 1. 딥러닝을 활용한 뉴스 메타 태깅 김기도(olaf.kido) kakao corp.(미래미디어파트)
  • 2. 배경
  • 3. 뉴스 메타데이터 (News Metadata) 콘텐츠 분석 정보언론사 제공 속성 뉴스 기사의 특징을 설명하는 정보들 기자 카테고리 언론사 형태 분류 내용 분류 이미지 분석 ML / DL 2018년 8월 7일자 인입 기사
  • 4. 뉴스 메타데이터 (News Metadata) 다양한 메타데이터를 확보하여 사용자에게 필요한 콘텐츠 제공에 활용 유익한 / 관심있는 / 필요한 것을 보고싶다! 컨텐츠의 특성들 다양한 메타데이터 = Image: commons.wikimedia.org
  • 5. 뉴스 메타 태깅 시스템 메타데이터 생성과 활용이 잘 되려면 데이터의 유통이 간단해야 함 SILO FLOW Produce Consume
  • 6. 목차 1. 기사 형태 분류 하기 • Convolution Neural Network로
 기사 형태 분류 하기 • 학습 데이터셋 구성 ~ 최종 모델 결과
 
 2. 뉴스 메타 태깅 시스템 • 모델을 활용하는 메타 태깅 시스템 개발 • 데이터 흐름 및 System Design
 
 3. 향후 과제 #텍스트분류 #딥러닝모델 #딥러닝개발 #메타데이터플랫폼 #다하는데요
 ...
  • 7. 발표에서 주로 다루는 것 학습 데이터 구성 모델 선정 메타데이터 기획 모델 구현 테스트 및 평가 모델 배포 서비스 운영 파라미터 설정 모델 API 구현 메타 태깅 설계/구현 딥러닝 스터디 한 것을 잘 활용해보려고 서비스 개발에 도전한 이야기!!! 딥러닝을 활용한 뉴스 메타 태깅
  • 8. 1. 기사 형태 분류 하기 2. 뉴스 메타 태깅 시스템 3. 향후 과제
  • 9. 기사 형태 분류 - 육하원칙 위주로 기술 - 스트레이트 기사라고 함 - 사건, 인물에 대한 심층 취재 기사 - 르포, 스케치, 인터뷰 등 사실 전달형 기사 (A) 해설/묘사형 기사 (B) 2018년 8월 21일자 인입 기사 이산상봉 이틀 째..'가족끼리' 개별상봉 및 오찬(종합) 남북 이산가족들이 상봉 행사 이틀째인 21일 개별상봉을 통해 좀 더 밀착된 시간을 보 낸다. 양측 가족들은 이날 오전 10시10분께 우리 측 상봉단의 숙소인 금강산 외금강 호텔의 각 객실에서 개별 상봉을 시작했다. 사실 전달형과 해설/묘사형을 나누는 문제로 정의
  • 10. 기사 형태 분류 2018년 8월 20일자 인입 기사 - 육하원칙 위주로 기술 - 스트레이트 기사라고 함 - 사건, 인물에 대한 심층 취재 기사 - 르포, 스케치, 인터뷰 등 사실 전달형 기사 (A) 해설/묘사형 기사 (B) 워리어 플랫폼 입고 사격해보니 '99점' 5 (5 ) . 5 , , , , . . , . 사실 전달형과 해설/묘사형을 나누는 문제로 정의
  • 11. 기사 형태 분류 2018년 8월 20일자 인입 기사 - 육하원칙 위주로 기술 - 스트레이트 기사라고 함 - 사건, 인물에 대한 심층 취재 기사 - 르포, 스케치, 인터뷰 등 사실 전달형 기사 (A) 해설/묘사형 기사 (B) 워리어 플랫폼 입고 사격해보니 '99점' 5 (5 ) . 5 , , , , . . , . 사실 전달형과 해설/묘사형을 나누는 문제로 정의 정보량이 많고 오래 읽을 만한 내용의 기사들을 찾는 특징 중 하나
  • 12. Text Classification by Character based Convolution Neural Network • 논문 • Text understanding from scratch • Character based convolution neural network (X Zhang, J Zhao, Y LeCun) • 모델 • 6개 Convolution Layer • 3개 Fully Connected Layer • 구현 • Tensorflow Image: X Zhang, J Zhao, Y LeCun. Character based convolution neural network (NIPS 2015)
  • 13. 뉴스 기사 분석을 위한 고려 사항들 뉴스 기사 콘텐츠를 “있는 그대로” 분석에 활용 • 형태소 분석, Word Embedding 보다는 Character 단위 처리
 ==> 기사 제목이나 본문의 특징적 기호 활용 (예: [날씨], (종합), “나혼자”) 
 • 한글, 한자 Romanization (로마자 변환, 음역)
 ==> alphabet space 안에서 처리 (예: ⽂정부, ⾭ "소득성장 가속”)
 • 문자와 단어의 순서 보존하여 기사의 문투 학습
 ==> 1D Convolution … <-channel -> (num ofalphabet) <- length -> ( j o n g h a p ) b e i , u r i g u k m ( j o n g h a p ) b e i , u r i g u k m
  • 14. 학습 데이터 구성 정답을 가지고 있지 않은 문제의 정답셋을 만들어 내기 • 기사 형태별 샘플을 구할 수 있는 기준을 찾음 • 예: 기사의 길이 A=[500, 1200], B=[3000 • 오분류된 (mislabelled) 데이터가 있을 수 있음 • 오분류 패턴이 일관되지 않다면 패턴 학습 대세에 영향 적음
 (예: 특정 키워드, 특정 언론사 모두 오분류) Step 1. 근사기준 뉴스 도메인 전문가! ➕ • 우리에겐 뉴스 전문가들이 있다! • 학습 데이터(샘플), 테스트 데이터(전수)를 검수 Step 2. 보완책 Image: kakaofriends.com
  • 15. 시험 범위가 확정되었으니 시험을 보자! • 학습 데이터 • 총 뉴스 44.2만건 • 사실전달 : 해설/묘사 : 기타 = 10:1:10 • 제목+본문 concat하여 600 char만 사용 (로마자 변환 후 기준) 해설/묘사형 기사들을 더 모으자!!! 학습 데이터 구성 • Validation Accuracy: 79.3% • Test Accuracy: 79.8% — 하지만, 해설/묘사 Recall: 42.5% • 특징 • 해설/묘사형 기사의 수가 너무 적어서 분류가 잘 안됨 테스트 결과
  • 16. 참고서를 더 읽어보고 시험을 보자! • 학습 데이터 • 총 뉴스 55만건 • 사실전달 : 해설/묘사 : 기타 = 2:1:2 • 제목+본문 concat하여 600 char만 사용 (로마자 변환 후 기준) 기사 본문을 더 길게 학습 해보자! 학습 데이터 구성 • Validation Accuracy: 83.3% • Test Accuracy: 82.2% — 해설/묘사 Recall: 62.0% • 특징 • 사실전달 기사의 표현을 잘 학습 (언제 누가 뭐했다, OO에 따르면, 보도했다) • 해설/묘사 기사 중에서도 해설기사나 인터뷰 기사를 높은 확률 값으로 분류 • 그러나 재현율이 낮음 테스트 결과
  • 17. 시험 범위를 늘렸으니 다시 시험을 보자! • 학습 데이터 • 총 뉴스 55만건 • 사실전달 : 해설/묘사 : 기타 = 2:1:2 • 제목+본문 concat하여 1014 char를 사용 (로마자 변환 후 기준) 학습 데이터 구성 • Validation Accuracy: 82.76% • Test Accuracy: 81.22% — 해설/묘사 Recall: 74.68% • 특징 • 해설/묘사 기사 재현율 상승 • 연재, 기획코너 기사를 높은 확률 값으로 분류 • 600 char 학습 시 ‘기타’ 기사로 잘 분류하던 기사들을 헷갈려하는 경우도 있음 • 예) ‘오늘의 운세’류 기사 중 일부 길이가 긴 것들 테스트 결과
  • 18. 모델 앙상블 (Ensemble) 학습 모델마다 특성이 다르므로 이를 결합하여 결과 변동성을 줄임 Model #1 Model #2 Add(Model[#1:2][A]), 
 Add(Model[#1:2][B]), 
 Add(Model[#1:2][C]). Dataset #1 Dataset #2 • Accuracy: 83.7% (+1.5%) • 해설/묘사 Recall: 75.9% (+1.2%) 모델이 서로 놓치는 부분을 보완해줌
  • 19. 기사 형식 분류 결과 사실 전달 기사 분류 결과 2018년 08월 23일 인입 기사 1 연준, 트럼프 압박에도 '9월 긴축' 예고.."곧 금리인상 적절"(종합) 2 파리 교외서 30대 남성 흉기 휘둘러 3명 사상(종합) 3 브라질 "베네수엘라 난민 이달 말부터 단계적으로 분산이주" 4 英, 신용카드 결제비용 증가 등 '노딜브렉시트' 대비 지침 발표(종합) 5 백악관 "미일정상 통화..강력한 대북제재 유지 약속"(종합) 해설/묘사 기사 분류 결과 1 [기고]학교 시민교육을 제도화하자 2 [우보세] 신바람 한점 없는 오너들 3 청년'에서 '엄마'로, 제2의 정치 인생 맞이하는 신보라 4 [사설]문재인 정부 첫 개각, 국정쇄신 계기로 삼아야 5 [조한욱의 서양 사람] 의적의 탄생
  • 20. 기사 형식 분류 결과 딥러닝 고장내는 기사 2018년 08월 23일 인입 기사 A : B : C = 35% : 31% : 34%
  • 21. 1. 기사 형태 분류 하기 2. 뉴스 메타 태깅 시스템 3. 향후 과제
  • 22. 뉴스 메타 태깅 시스템 뉴스 발행 후 메타데이터를 ‘생성’하고 ‘유통’시키는 플랫폼 Design Goals 실시간 프로세싱 메타 태그 생성의 비동기성 메타 태그 생성 기술의 다양성 • 기사가 들어오는 대로 바로 메타데이터를 생성 • 다양한 조직과 플랫폼이 메타 데이터 생성에 참여 • 각 메타데이터 생성은 비동기적으로 이루어져야
 (예외: 메타데이터간 의존성이 있는 경우) • 기계학습, 딥러닝 플랫폼의 다양성을 수용할 수 
 있어야
  • 23. 뉴스 메타 태깅 시스템 -NEWS TOPIC- -TAGS TOPIC-1 + 메타데이터 생성 서비스 (예: 기사 형태 분류) 메타데이터 생성 서비스 2 3 4 CMS 메타데이터 consumer 5 • 콘텐츠와 메타데이터를 함께 feeding • News Topic에서 콘텐츠와 메타데이터 흐름을 모두 Tracking • 동일 뉴스 - 동일 메타데이터가 중복 처리 되지 않도록 해야 • 콘텐츠+메타데이터를 조합하여 새로운 메타데이터를 만들기 용이 메타 데이터의 생성과 소비가 함께 이루어지는 흐름
  • 24. System Architecture Ensemble 
 API Ensemble 
 API Inferrer API Inferrer API Inferrer API Inferrer API Inferrer API Inferrer API -NEWS TOPIC- -TAGS TOPIC- 메타데이터 생성 = Ensemble - Inferrer API Services Meatadata API Services
  • 25. Inferrer API • / API • API • Dockerizing + • • API / , Ensemble 역할 및 기능 Ensemble 
 API Ensemble 
 API Inferrer API Inferrer API Inferrer API Inferrer API Inferrer API Inferrer API
  • 26. Inferrer API 기사 형태 분류 CNN API 사례 Docker Tensorflow Model Flask App uWSGIwaitress class TensorflowModel: def __init__(self, tag, signature_key, input_key, output_key, path): self.sess = tf.Session(graph=tf.Graph()) meta_graph_def = tf.saved_model.loader.load(self.sess, [tag], path) signature = meta_graph_def.signature_def tensor_name_x = signature[signature_key].inputs[input_key].name tensor_name_yhat = signature[signature_key].outputs[output_key].name self.input = self.sess.graph.get_tensor_by_name(tensor_name_x) self.model = self.sess.graph.get_tensor_by_name(tensor_name_yhat) • uWSGI + Flask + Tensorflow API • tf.saved_model API로 학습한 모델을 protobuf로 export / import 기사 형태 분류 API 구현
  • 27. Ensemble API • Inferrer API 호출 • 각 모델에 필요한 입력 값 (Feature) 생성 • 기사 형식 분류의 예: 한글 romanization • 모델 추론 결과 Ensemble 로직 처리 • 메타데이터 서비스의 Gateway • 공통 기능: authorization, logging 등 역할 및 기능 • spring-webflux로 개발 • 여러 소스(Inferrer API, 기타 Feature 생성을 위한)에서 정보를 취합 • 병렬-비동기 처리 구조의 이점 구현 Image: pexels.com
  • 28. Ensemble API Feature (Model #1) { “title”: “오늘의 날씨”, 
 “contents": “날씨는 대체로…” , “press”: kakaonews,
 “category”: 999,
 } Inferrer API (Model #1) Feature (Model #2) Inferrer API (Model #2) Feature (Model #3) Inferrer API (Model #3) Calculate Ensemble { “api”: “news-type”, “value”: 0 } (FlatMap) (Merge) (Map)
  • 29. Message Flow Control -NEWS TOPIC- -TAGS TOPIC- Filtering Invoke Ensemble Post- process Produce Message Flow Control • • message parsing & filtering • Ensemble API , • • 역할 및 기능
  • 30. Message Flow Control Apache Nifi • Data Flow 개발이 간단 
 (다양한 데이터 source, sink 지원) • 각 처리 단계별로 in/out 처리량과 데이터 모니터링
 (Data provenance) • nifi-registry와 연동하면 Data Flow 형상 관리 가능 특징
  • 31. Metadata Flow Ensemble 
 API Ensemble 
 API Inferrer API Inferrer API Inferrer API Inferrer API Inferrer API Inferrer API -NEWS TOPIC- -TAGS TOPIC- { “title”: “오늘의 날씨”, 
 “contents": “오늘 전국 날씨는” 
 } req:
 { “news”: “oneulyinalssioneulyi
 jeongug ” } { “tagGroup”: “news”, “tagKey”: “news-type”, “value”: 0 } res:
 { “valueName": “model403”,
 “valueType”: “List”,
 “values”: [ 0.7, 0.1, 0.2 ] } 기사 형태 분류 사례 CMS Filtering Post- process Produce Invoke Ensemble
  • 32. 1. 기사 형태 분류 하기 2. 뉴스 메타 태깅 시스템 3. 향후 과제
  • 33. 향후 과제 • 딥러닝 모델 품질 관리 • 오분류 사례 수집 및 모델 재학습 • (현재는 시간별 분류 결과량 Trend 모니터링)
 • 다양한 메타데이터 추가 • 기사 내용의 특징 분석 • 기사 내 사진, 차트, 인포그래픽 분석 • 음성 뉴스 및 동영상을 활용한 다양한 실험

 

반응형