https://huggingface.co/datasets/daekeun-ml/naver-news-summarization-ko

  • method: crawling Naver News (https://news.naver.com)
  • use: training a Korean NLP model
  • updated : 01/10/2023
  • Period: July 1, 2022 - July 10, 2022
  • Subject: IT, economics
  • Number of rows: 27,400
  • Number of unique presses: 79 (checked using huggingface Data Studio)
  • 국내에서 news dataset을 합법적으로 API를 통해 활용하려면 ‘한국언론진흥재단’이 운영하는 ‘빅카인즈’ 같은 매우 고가의 서비스 (월 수백만원)를 이용해야만 한다.

java
DatasetDict({
    train: Dataset({
        features: ['date', 'category', 'press', 'title', 'document', 'link', 'summary'],
        num_rows: 22194
    })
    test: Dataset({
        features: ['date', 'category', 'press', 'title', 'document', 'link', 'summary'],
        num_rows: 2740
    })
    validation: Dataset({
        features: ['date', 'category', 'press', 'title', 'document', 'link', 'summary'],
        num_rows: 2466
    })
})

구조화된 데이터를 구체적으로 활용하는 방법 예시

  • 참고: RSS 형식의 뉴스 리스트 데이터에는 뉴스별 본문은 없고 뉴스별 meta data만 있음에 유의할 것
  • 최종 목표: 상업적 배포보다는 뉴스 수집, 전처리, 분류, 점수화 및 요약에 중점을 두어, 최소한의 API 비용으로 개인화된 뉴스 대시보드 web app 구현
  • 중간 목표: 언론사별 정치성향 분류 NLP model (e.g. 경량이면 encoder인 BERT, 설명 text까지 필요하다면 decoder가 있는 transformer)
  • Labelled (x_id, x, y) data where x_id = press name, x = news content and y = left/neutral/right
  • Output : (x_id, x, y, p) data where p = predicted probability. 만약 model을 transformer 계열 경량 모델 (e.g. HyperCLOVAX-SEED-Text-Instruct-1.5B)을 사용했다면 여기에 새로운 필드 s = summary 를 넣으면 됨.
  • Application: labelled data (number of rows = 500)을 tratining:validation:test = 300:100:100 로 분할하여 실험하여 test에서 성능이 좋았다고 가정하자. 그리고 이를 새로운 (x_id, x) data with number of rows = 10,000으로 확장하여 (x_id, x, y, p) dataset을 완성하자. 그럼 예를 들어 p>0.7 기준에서 x_id 라는 press가 어떤 y 값 (left/neutral/right)에 속하는지 확률적으로 판단해 볼 수 있게 된다. 매일 기사 (rows)를 50개씩 정도만 모아서 쌓아가면 축적된 판단을 내릴 수도 있고, press 별로 정치성향이 시간에 따라 변했는지 아닌지도 시각화하여 보여줄 수 있게 된다.