해당 글은 데이콘 경진대회에서 제공한 데이터셋 설명과 베이스라인 코드를 기반으로 작성했음을 밝힙니다.
Dacon 공식홈페이지 - https://dacon.io/competitions/official/235747/overview/description
대회 설명
- 주제: 한국어 뉴스 헤드라인을 이용해 뉴스 주제를 분류하는 알고리즘 개발
- 문제 구분: TC(Topic Classification)
- 데이터셋: KLUE(Korean Language Understanding Evaluation) YNAT 데이터셋
- 평가지표: Accuracy
데이터 탐색
데이터셋 사전조사
KLUE-TC Dataset 관련 논문 - https://arxiv.org/pdf/2105.09680.pdf
Dataset License - https://github.com/KLUE-benchmark/KLUE/blob/main/License.md
해당 데이터셋은 네이버 뉴스에 등록된 연합뉴스들을 크롤링한 KLUE-TC(YNAT, Yonhap News Agency)라는 데이터셋입니다.
- Format: Single Sentence Classification
- Evaluation Metric: Macro F1
- 각 Topic별로 동일한 Importance를 주기 위해 Mean of Topic-wise F1 score를 평가지표로 삼았다고 합니다. Topic-wise F1 score는 Recall과 Precision에 대해 동등한 가중치를 두는 평가지표입니다.
- Class: 7
- Train: 45k, Dev: 9k, Test:9k
- Train set 같은 경우 2020년 이전의 뉴스 제목을 수집했고, Dev와 Test set 같은 경우 2020년 이후의 뉴스 제목을 수집한 데이터입니다.
- Source: News Headline
- Similar NLU Benchmark: CLUE(TNEWS 15 categories), IndicGLUE( News Genre Classification in Indian languages 7 categories), AG News(world, sports, business, and science/technology)
- 영어, 인도어, 만다린 등으로 이뤄진 Topic Classification 관련 벤치마크 데이터셋들이 있습니다. 이 중 인도어 데이터셋인 IndicGLUE 같은 경우 KLUE-TC와 유사하게 7개의 Class를 가졌지만 Accuracy가 100%(약 94%)에 근사하게 도달할 정도로 TC Task가 발전을 이뤘습니다. KLUE-TC는 약 86%가 현재까지의 SOTA model의 F1 score로 알고 있습니다. Korea 화이팅! (논문에서 언급되기도 했지만 어느 정도인지 찾아보니까 https://github.com/AI4Bharat/indic-bert 해당 깃헙에서 iNLTK Headlines Classification에 대해 약 94%로 IndicBERT가 SOTA model 성능을 도달했음을 명시하고 있습니다.)
KLUE 논문 외에도 네이버 뉴스 페이지의 카테고리 구분을 살펴봤을 때 다음과 같은 세부적인 구분 사항이 있었습니다. 실제로 데이터셋이 구분이 됐을때 아래의 세부 구분이 반영됐을지에 대해 나타나있지 않습니다. 아래 카테고리의 세부 기준들을 가지고 생활/문화와 IT/과학에서 헷갈린다든지, 경제와 사회 카테코리에서 헷갈리는 요소들에 대해선 참고해볼 수 있을거 같습니다.
데이터 Description
제공되는 데이터 파일은 총 4개로 train_data.csv, test_data.csv, sample_sumission.csv, topic_dict.csv가 있습니다. data관련 파일은 index, title, topic_idx로 구성되어 있습니다. test 데이터에서 분류해내야하는 대상은 뉴스 주제 인덱스 값인 topic_idx 입니다.
- index: 헤드라인 인덱스
- title: 뉴스 헤드라인
- topic_idx: 뉴스 주제 인덱스 값(label)
topic_dict.csv 파일을 살펴보면 IT과학(0), 경제(1), 사회(2), 생활문화(3), 세계(4), 스포츠(5), 정치(6)로 구성되어 있음을 알 수 있습니다. 해당 데이터셋은 출처가 연합뉴스이며, 지금의 연합뉴스는 앞선 7가지 이외에도 산업, 연예, 문화/축제 등으로 구분하고 있습니다. 하지만 해당 데이터셋이 NAVER 뉴스내 연합뉴스를 기본으로 두기 때문에 아래처럼 네이버의 뉴스 구분을 뉴스 주제 인덱스 값으로 사용했습니다.
데이터셋 아이디어
해당 데이터셋은 Naver 뉴스의 분류 기준을 따른다는 점에서 네이버 뉴스 또한 기계학습을 기준으로 뉴스를 분류하기 때문에 어떤 방식으로 클러스터링하는지 찾아봤습니다. 어떤 메커니즘을 사용하는지 명확히 명시되어 있지는 않지만 형태소 분석을 기반으로 본문의 유사도를 측정하고 분류한다는 점을 미루어 봤을 때 헤드라인만으로 뉴스를 구분하고 있지는 않다는 점을 알 수 있었습니다. 하지만, 뉴스에서 추출한 키워드를 기준으로 각 헤드라인이 유사한 뉴스끼리 묶어내기 때문에 이를 본문 대신 제목으로 했을 때도 유의미한 클러스터링 결과가 나올지 확인해볼 필요가 있어 보입니다.
네이버 뉴스 자동 클러스터링 - https://news.naver.com/main/ombudsman/automation.naver
자동 클러스터링
섹션홈(정치, 경제, 사회, IT. 생활, 세계) 헤드라인 뉴스는 클러스터링 기술을 적용해 이슈 단위로 기사를 자동으로 묶어줍니다. 주요 이슈에 대해 다양한 언론사가 작성한 기사들을 모아 볼 수 있습니다. 헤드라인 뉴스 클러스터(기사 묶음)은 AiRS 로직을 통해 사용자별로 다르게 추천됩니다. 언론사가 분류한 섹션 기준에 따라 클러스터링 기사 묶음 섹션이 자동 분류됩니다.
* 자동 클러스터링 기술은?
클러스터링 기술은 형태소 분석을 통해 기사 본문 간 유사도를 측정, 분류하여 유사한 기사끼리 묶어내는 기술입니다. 네이버 뉴스로 전달되는 최신 2만5000개의 기사를 10분단위로 자동분류, 그룹핑하여 하루에 약 1000 여 개의 이슈 클러스터를 생성합니다.현재 메인 언론사 편집 뉴스를 제외한 뉴스홈(m.news.naver.com)과 섹션홈(정치, 경제, 사회, IT, 생활, 세계) 헤드라인 주요뉴스와 하단 리스트는 모두 기계적 알고리즘을 적용해서 배열 중입니다
주의해야할 요소
- 한문 데이터에 대한 전처리
- 라벨 불균형 문제