dotsnangles / news-topic-keyphrase-generation-model-dev

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

신문기사 핵심어 추출 모델 개발

1. 모델 입출력 개요

  • 신문기사의 제목과 본문 내용을 함께 입력으로 받아 핵심어 10개를 출력
  • 모델의 생성 방식에 따라 입력은 prefix와 postfix를 포함

입력 예시

generate keyphrases: SK하이닉스 1천만주 공매도 '폭탄'...오늘 공매도 거래 금지 외국인 대량 거래..."교환사채 헤지 차원에서 공매도한 듯"SK하이닉스[촬영 안 철 수, 재판매 및 DB금지](서울=연합뉴스) 채새롬 기자 = SK하이닉스가 전날 1천만주 넘는 공매도 '폭탄'을 맞아 공매도 과열종목으로 지정됐다.한국거래소는 5일 SK하이닉스에 대해 공매도 과열종목으로 지정하고, 정규시장 및 시간외시장에서 SK하이닉스의 공매도 거래를 금지한다고 공시했다.공매도 금지일인 이날 주가가 5% 이상 하락하면 공매도 금지 기간이 연장된다.거래소에 따르면 SK하이닉스 공매도 물량은 지난 4일 하루에만 1천만6천643주였다. 거래대금은 8천362억원으로, 3일 공매도 거래대금(96억원)의 87배에 달한다.SK하이닉스의 전날 전체 거래량 중 공매도 거래량의 비중은 59.53%이다.SK하이닉스에 공매도가 쏟아지면서 코스피 공매도 거래대금도 3일 6천285억원에서 4일 1조3천998억원으로 급증했다.다만 업계에서는 SK하이닉스 공매도가 불공정거래와 연관돼 있을 가능성은 낮다고 보고 있다.전날 공매도 물량의 대부분은 장 개시 전, 장 개시 후 블록딜(시간 외 대량매매) 방식의 외국인 공매도 물량이다.SK하이닉스는 4일 2조2천억원대의 해외 교환사채(EB)를 발행했는데, 외국인 투자자들이 포트폴리오 균형을 맞추기 위해 공매도에 나섰을 가능성이 높다.교환사채는 투자자가 보유한 채권을 일정 기간 후 발행사가 보유한 회사 주식으로 교환할 수 있는 권리가 있는 사채다.익명을 요구한 한 증권사 애널리스트는 "외국인 투자자들이 해외 교환사채를 사고, 헤지(위험 회피) 차원에서 국내 증시에서 대량 공매도를 한 것으로 보인다"며 "실질적인 주식 공매도는 아닌 것으로 추정한다"고 말했다.SK하이닉스 주가는 전날 교환사채 발행 영향으로 3.10% 하락했지만, 이날 오전에는 0.5% 안팎의 강보합세를 보이고 있다.srchae@yna.co.kr

출력 예시

SK하이닉스; 공매도; 거래 금지; 외국인 대량 거래; 교환사채; 헤지; 공매도 물량; 불공정거래; 블록딜; 국내 증시

2. 베이스 모델

paust/pko-t5-base

  • 2억 2천만 매개변수
  • Encoder-Decoder (Seq2Seq / conditional generation) 구조의 모델로 Encoder가 생성한 입력의 Context Vector를 기반으로 Decoder가 출력을 생성
  • 모든 NLP 태스크를 Text-to-Text Transfer 방식으로 해결하고자 기획된 모델로 NLG뿐 아니라 NLU 태스크에도 광범위하게 활용되는 모델
  • T5 1.1을 기반으로 한국어 공공 데이터를 활용해 PAUST에서 사전 학습

EleutherAI/polyglot-ko-1.3b

  • 13억 매개변수
  • Decoder-only (CLM / open-ended generation) 구조의 모델로 NLG에 특화되어 있으나 높은 모델 복잡도를 통해 다양한 NLP 태스크 수행이 가능
  • EleutherAI, Stability AI, TUNiB이 합작하여 개발한 Foundational SLM으로 한국어로 사전 학습된 Decoder-only 계열에서는 현재 가장 높은 완성도를 가진 모델
  • 추후 Instruction Tuning / RLHF 훈련을 통한 오픈 도메인 챗봇 개발에 많이 이용될 것으로 전망
  • 가장 큰 모델은 130억 매개변수를 가지고 있으며 완성도가 높은 만큼 LLM의 특성이라 볼 수 있는 emergent abilities를 가지고 있을 것으로 예상됨
  • 인수인계 당시 후보 모델이었던 GPT-J의 후속인 GPT NEO X와 같은 구조의 모델이며 한국어 특화 모델인 것을 특징으로 볼 수 있음
  • 현재 2023년 05월 기준 v2 개발이 진행 중

3. 훈련 데이터

  • 신문기사 수집 DB에서 최신 신문기사 30만건 추출
  • pko-t5-base 토크나이저로 분절 후 500~1000 사이 길이의 샘플 100886건에 대한 라벨링을 수행 (GPT Turbo 3.5)
    • 시퀀스의 길이를 제한하는 샘플링은 보통의 신문 기사의 길이를 고려한 전처리로 자연어 처리 모델 개발에 일반적으로 적용되는 방법론임
    • T5의 경우 입출력의 시퀀스 길이의 제한은 없으나 사전 학습시 일반적으로 길이 최대 512의 샘플을 사용한 것을 고려
  • 훈련 데이터의 품질을 높히기 위해 토큰화 후 라벨의 길이가 64 이하로 생성된 샘플 79472건을 훈련에 활용
    • 키프레이즈를 장황하게 뽑은 라벨을 제거하는 효과
  • 라벨의 품질을 높히기 위해 양식을 통일하기 위한 전처리를 적용
  • 최신 기사 백만건의 범주 비율과 훈련 동원 샘플의 범주 비율이 유사한 것을 확인
    • 최신 신문기사 백만건 범주 비율
      • 최신_신문기사_백만건_카테고리_비율
    • 훈련 동원 샘플 범주 비율
      • 훈련_동원_샘플_카테고리_비율

4. 평가지표

현재 모델이 수행하는 키프레이즈 제너레이션 태스크는 요약에 준하는 경우로 라벨을 Ground Truth로 설정할 수는 없으나 GPT Turbo 3.5가 생성한 키프레이즈와의 유사성을 검토하기 위해 아래 두 평가 지표를 검증 과정에서 활용

  • ROUGE
    • Recall 기반의 평가지표로 Precision 기반의 BLEU에 비해 개선된 방식이나 부족함이 많음에도 계산 속도가 빠른 방식 중에는 다른 선택지가 없어 많이 사용됨
    • 번역, 요약 등의 태스크에서 인간의 작업물과 비교하기 위해 자주 채용
  • F1@10
    • 각종 라이브러리에서 일반적으로 제공되는 F1 계산 함수는 현재 모델의 추론 결과를 대상으로 적용이 불가하여 TP/FP/FN 카운팅 방식으로 함수를 작성해서 사용
      • TP: 모델이 추론한 키프레이즈가 라벨에 존재
      • FP: 모델이 추론한 키프레이즈가 라벨에 존재하지 않음
      • FN: 라벨에 있는 키프레이즈가 모델의 추론에 존재하지 않음
  • ROUGE와 F1@10을 기준으로 초기 개발을 진행했으며 이후 휴먼 이밸류에이션을 통해 모델의 성능을 검토함

5. 훈련 성과

  • 추론값 검토 결과 GPT Turbo 3.5와 비교했을 때 생성된 키프레이즈의 차이가 존재하나 두 모델 모두 신문기사에서 핵심에 해당하는 키프레이즈를 잘 탐지하는 모습을 보이고 있음
  • Seq2Seq 계열인 paust/pko-t5-base가 더 작은 규모의 모델임에도 불구하고 상당히 깔끔한 결과물을 출력하는 것을 확인
    • 추론 시 사용 자원이 EleutherAI/polyglot-ko-1.3b에 비해 훨씬 적으며 현재 성능 차이가 미미하기 때문에 주력 모델로 현재 계획 중
  • EleutherAI/polyglot-ko-1.3b의 경우 현재 추가 실험을 통해 아직 개선될 여지가 존재
    • eos 토큰과 pad 토큰을 동일하게 설정하는 일반적인 방법으로 훈련을 진행
    • conditional generation의 효과를 내기 위해 indicator로 사용할 새로운 토큰을 사전에 추가
      • [generate keyphrases] [keyphrases generated] [end of generation]
    • F1@10가 더 높은 만큼 생성 기법을 조금 더 시험해볼 여지가 있음
    • 현재 가용 자원으로 사용 가능한 유일한 한국어 SLM인 만큼 계속해서 연구해볼 예정

paust/pko-t5-base

추론 결과

  • 'rouge1': 67.8227,
  • 'rouge2': 47.6712,
  • 'rougeL': 55.9405,
  • 'rougeLsum': 55.9405,
  • 'F1@10': 60.2782,
  • 'jaccard_similarity': 27.6543,
  • 'gen_len': 48.3867

paust/pko-t5-large

추론 결과

  • 'rouge1': 69.9479,
  • 'rouge2': 50.8018,
  • 'rougeL': 57.638,
  • 'rougeLsum': 57.638,
  • 'F1@10': 62.7979,
  • 'jaccard_similarity': 30.7825,
  • 'gen_len': 47.766

EleutherAI/polyglot-ko-1.3b

추론 결과

  • 'rouge1': 67.7194,
  • 'rouge2': 47.595,
  • 'rougeL': 54.8484,
  • 'rougeLsum': 54.8484,
  • 'F1@10': 62.7214,
  • 'jaccard_similarity': 27.9941,
  • 'gen_len': 33.3963

About


Languages

Language:Jupyter Notebook 99.9%Language:Python 0.0%Language:Dockerfile 0.0%Language:Shell 0.0%