TIL
  • Main
  • TIL : ML
    • AI News
      • AI-powered coding, free of charge with Colab
    • Paper
      • Retrieval-augmented generation for knowledge-intensive nlp tasks
        • reference 정리
      • Sequence to Sequence
    • Generative AI
      • LLM
        • 기본 개념
    • Boostcamp
      • Daily Report
        • 2021
          • 09
            • week4
            • week5
          • 10
            • week1
            • week2
            • week3
            • week4
          • 11
            • week1
            • week2
            • week3
            • week4
            • week5
          • 12
            • week1
            • week2
            • week3
      • Final Project
        • 프로젝트 기획
          • 🌟최종 프로젝트 기획
          • 최종 프로젝트 Version
          • 아이디어 수집
          • 욕설, 혐오발언 감지
          • 라이브 커머스 레포팅 프로젝트
        • 프로젝트 진행
          • week1
          • week2
          • week3
      • Competition
        • 1. [NLP] 문장 내 개체간 관계 추출
          • Day1 (9.27, 월)
          • Day2-3 (9.28~29, 화~수)
          • Day4 (9.30, 목)
          • Day5 (10.1, 금)
          • Day6~7 (10.2~3, 토~일)
          • Day8 (10.4, 월)
          • Day9 (10.5, 화)
          • Day10 (10.6, 수)
          • Day 11 (10.7 목)
        • 2. [NLP] MRC 프로젝트
          • Day1 (10.25, 월)
          • Day2 (10.26, 화)
          • Day3 (10.27, 수)
          • Day4-5 (10.28-29, 목-금)
          • Day6 (11.1, 월)
          • Day7 (11.2, 화)
          • Day8 (11.3, 수)
          • Day9 (11.4, 목)
        • 🔨3. [NLP] 데이터 제작
          • Day1
        • 🔨4. [공통] 모델 경량화
      • [U Stage] - DL basic
        • (01강) 딥러닝 기본 용어 설명 - Historical Review
        • (02강) 뉴럴 네트워크 - MLP (Multi-Layer Perceptron)
        • (03강) Optimization
        • 🔨(04강) Convolution은 무엇인가?
        • 🔨(05강) Modern CNN - 1x1 convolution의 중요성
        • 🔨(06강) Computer Vision Applications
        • (07강) Sequential Models - RNN
        • (08강) Sequential Models - Transformer
        • Page 2
      • [U Stage] - PyTorch
        • (01강) Introduction to PyTorch
        • (02강) PyTorch Basics
        • (03강) PyTorch 프로젝트 구조 이해하기
        • (04강) AutoGrad & Optimizer
        • (05강) Dataset & Dataloader
        • (06강) 모델 불러오기
        • (07강) Monitoring tools for PyTorch
        • (08강) Multi-GPU 학습
        • (09강) Hyperparameter Tuning
        • (10강) PyTorch Troubleshooting
      • [U Stage] - NLP
        • (01강) Introduction to NLP, Bag-of-Words
        • (02강) Word Embedding
        • (03강) Recurrent Neural Network and Language Modeling
        • (04강) LSTM and GRU
        • (05강) Sequence to Sequence with Attention
        • (06강) Beam Search and BLEU score
        • (07-08강) Transformer
        • (09강) Self-supervised Pre-training Models
      • [P Stage] - KLUE
        • (1강) 인공지능과 자연어 처리
        • (2강) 자연어의 전처리
        • (3강) BERT 언어모델 소개
        • (4강) 한국어 BERT 언어 모델 학습
        • (5강) BERT 기반 단일 문장 분류 모델 학습
        • (6강) BERT 기반 두 문장 관계 분류 모델 학습
        • (7강) BERT 언어모델 기반의 문장 토큰 분류
        • 오피스아워 (9.30, 목)
        • (8강) GPT 언어 모델
        • (9강) GPT 언어모델 기반의 자연어 생성
        • (10강) 최신 자연어처리 연구
      • [P Stage] - MRC
        • Before Study
        • (1강) MRC Intro & Python Basics
        • (2강) Extraction-based MRC
        • (3강) Generation-based MRC
        • (4강) Passage Retrieval - Sparse Embedding
        • (5강) Passage Retrieval - Dense Embedding
        • 오피스아워
        • (6강) Scaling up with FAISS
        • (7강) Linking MRC and Retrieval
        • (8강) Reducing Training Bias
        • (9강) Closed-book QA with T5
        • (10강) QA with Phrase Retrieval
        • 마스터클래스
      • [P Stage] - 데이터제작(NLP)
        • (1강) 데이터 제작의 A to Z
        • (2강) 자연어처리 데이터 기초
        • (3강) 자연어처리 데이터 소개 1
        • (4강) 자연어처리 데이터 소개 2
        • (5강) 원시 데이터의 수집과 가공
        • 오피스아워 (11.10, 수)
        • (6강) 데이터 구축 작업 설계
        • (7강) 데이터 구축 가이드라인 작성 기초
        • (8강) 관계 추출 과제의 이해
        • (9강) 관계 추출 관련 논문 읽기
        • (10강) 관계 추출 데이터 구축 실습
      • [P Stage] - 모델 최적화
        • (1강) 최적화 소개 및 강의 개요
        • (2강) 대회 및 데이터셋 소개
        • (3강) 작은 모델, 좋은 파라미터 찾기: AutoML 이론
        • 🔨(4강) 작은 모델, 좋은 파라미터 찾기: AutoML 실습
        • (5강) 작은 모델, 좋은 파라미터 찾기: Data Augmentation & AutoML 결과 분석
        • 🔨오피스아워 -Baseline 코드에 모듈 작성하기(신종선 멘토님)
      • [P Stage] - Product Serving
        • Part 1: Product Serving 개론
          • 1.1 강의 진행 방식
          • 1.2 MLOps 개론
          • 1.3 Model Serving
          • 1.4 머신러닝 프로젝트 라이프 사이클
        • Part 2: 프로토타입부터 점진적으로 개선하기
          • 2.1 프로토타이핑 - Notebook 베이스(Voila)
          • 2.2 프로토타이핑 - 웹 서비스 형태(Streamlit)
          • 2.3 Linux & Shell Command
          • 2.4 Cloud
          • 2.5 Github Action을 활용한 CI/CD
        • Part 3: 더 완성화된 제품으로
          • 3.1.1 FastAPI
          • 3.1.2 Fast API
          • 3.1.3 Fast API
          • 3.2 Docker
          • 3.3 Logging
          • 3.4 MLFlow
        • Part 4: 심화 소재
          • 4.1 BentoML
          • 4.2 Airflow
          • 4.3 머신러닝 디자인 패턴
          • 4.4 앞으로 더 공부하면 좋을 내용
      • 특강
        • (특강) 김상훈 - 캐글 그랜드마스터의 노하우 대방출
        • (특강) 이활석 - 서비스 향 AI 모델 개발하기
        • (특강) 구종만 - AI + ML과 Quant Trading
        • (특강) 문지형 - 내가 만든 AI 모델은 합법일까, 불법일까
        • (특강) 이준엽 - Full Stack ML Engineer
        • (특강) 박은정 - AI 시대의 커리어 빌딩
        • (특강) 오혜연 - AI Ethics
    • Competition
      • (DACON)한국어 문장 관계 분류 경진대회
        • Day1(2.14, 월)
        • Day2(2.15, 화)
        • Day3(2.16, 수)
        • Day4(2.17, 목)
      • 2021 인공지능 데이터 활용 경진대회
        • 역량평가
          • Day1 (9.28, 화)
          • Day2 (9.29, 수)
          • Day3 (9.30, 목)
        • 예선
          • Data 분석
          • NSML
          • What We Have Done?
    • ETC
      • 인터뷰 대비
        • Computer Science
        • ML/DL
      • Poetry로 dependency 관리
        • window에서 설치하기
      • code block
      • 공부할 것 임시보관
      • Transformer to T5
      • Hugging Face Tutorial
        • Ch1. Transformer models
        • Ch2. Using Transformers
        • Ch3. Fine-tuning a model with the Trainer API
      • KLUE
      • Pandas
  • TIL : Ops
    • AWS
      • SageMaker
  • TIL : Computer (CS)
    • Error
      • TextEncodeInput must be Union[TextInputSequence, Tuple[InputSequence, InputSequence]]
    • Algorithm
      • Theory
      • Programmers
        • 기능개발
    • ETC
      • Github 커밋 히스토리 삭제
Powered by GitBook
On this page

Was this helpful?

  1. TIL : ML
  2. Competition
  3. 2021 인공지능 데이터 활용 경진대회
  4. 역량평가

Day1 (9.28, 화)

Previous역량평가NextDay2 (9.29, 수)

Last updated 3 years ago

Was this helpful?

본래 대회는 9.27 23:00 부터였으나, baseline 코드가 주어지지 않아 28일에 확인 후 진행하기로 하였다.

  • ❌Baseline 코드 돌려보기

  • ✔ 데이터 EDA 하기

  • ❌데이터 전처리하기

막상 데이터 셋을 받아보고 baseline 코드를 돌려보려 했으나, 생각만큼 잘 되지 않았다. 우선 baseline 코드가 tensorflow로 작성되어있었고, 버전에 따른 오류가 발생 + 우리가 사용할 hugging face등이 사용되지 않은 코드여서 사용할 수가 없었다.

우선 팀원들과 다음날까지 전처리를 하고 그에 대해서 서로 이야기 하는 시간을 가지기로 하였다. 전처리를 한다는게 어디까지 하는 걸 의미하는 건지 고민이 들었다.

  • 데이터에서 불필요한 정보를 제거하거나 유의미한 정보를 줄 수 있는 token을 추가해 주는 작업

  • 데이터를 토큰화 기법에 따라 토큰으로 만드는 작업

  • EDA 과정을 통해서 데이터 셋을 어떻게 활용해야 하는지에 대한 고민

내가 생각했을 땐 위에 3가지 정도가 전처리를 하는 작업이라는 생각이 들었다. 하지만 가장 큰 의문이 들었던 것이 "label이라고 할 수 있는 summary(요약, 정답) 데이터를 함께 전처리를 해주어야 하는지??" 생각 끝에 내릴 결론은 No 였다. 그 이유는 실제 test에 대한 summary도 train의 summary와 유사하게 되어있을 것이라는 생각 때문이었다. 만약 train의 summary에 한문이 있다면, test의 summary에도 한문이 있을 거기에 한문을 제거하면 안된다는 생각이었다. 위와 같이 결론을 내리고 두번째로 든 의문이 "summary에 있는 데이터는 text에서도 전처리로 제거하면 안된다?" 라는 생각이 들었다. 이 의문도 맞다는 생각이 들었고, 그럼 전처리로 어떤 작업을 해야할지 고민에 빠져들게 되었다. 생각보다 summary에 불필요하다고 생각했던 데이터들이 많이 그대로 포함하고 있었기 때문이다.

아직 pandas에 미흡하기도하고 데이터를 눈으로 보기 쉽고 익숙한 database를 사용해서 데이터를 조금 뜯어보기로 했다. mysql에 데이터를 넣고 이것저것 확인하다보니 요약이란 task인데 summary가 text보다 긴 경우가 있음을 확인할 수 있었다. "요약이란 text에서 중요하다고 생각되는 단어를 중심으로 summary를 만드는 것이 아닌가" 라고 생각하고 있었기에 너무 이상하다고 생각이 들었다. 멘토님께 이 의문에 대해 여쭈어 보게 되었고, 요약문을 생성하는 방식에 따라 extractive summarization(이하 ext)과 abstractive summarization(이하 abs)로 나누어 진다는 것을 알게 되었다. ()

내가 생각한 것과 같이 text에서 핵심이 되는 단어를 바탕으로 요약하는것이 extractive summarization, 새롭게 문장을 생성해내는 것이 abstractive summarization 이고, 만약 주어진 데이터처럼 반이상이 summary의 길이가 더 길다면 이는 abstractive summarization일 것이다 라는 결론을 내릴 수 있었다.

이런 고민들을 하다보니 시간이 어느 덧 새벽 2시가 되어, 직접 코딩을 하거나 전처리를 하지는 못했던 하루가 되었다.

# 총 갯수
SELECT COUNT(*) FROM train_data
## 271,665 건

# summary 공백값
SELECT * FROM train_data
WHERE summary = ''
## id = [27556 34092 34201 66897 133273 216203]

# 길이 분석
SELECT 
  COUNT(*) AS 'total_cnt'
, SUM(CASE WHEN LENGTH(`text`) < LENGTH(summary) then 1 ELSE 0 END) AS 'summary_is_longer'
, SUM(case when LENGTH(`text`) >= LENGTH(summary) then 1 ELSE 0 END) AS 'text_is_longer'
FROM train_data
## 271,665건 / 140,741건 / 130,924건

# 중복 데이터 (text, summary 모두 중복)
SELECT SUM(CNT) FROM (
	SELECT COUNT(*) AS cnt FROM train_data
	GROUP BY `text`, summary
	HAVING COUNT(*) > 1
) T1
## 52건
SELECT * FROM train_data t1
INNER JOIN (
SELECT `text`, summary, COUNT(*) FROM train_data
GROUP BY `text`, summary
HAVING COUNT(*) > 1
) t2 ON t1.`text` = t2.`text` AND t1.summary = t2.summary
ORDER BY t1.`text`, t1.summary
## 대상 id
(16620 26389)(18329 18334)(25429 14908)(124425 124432)(7683 19722)(9585 7385)(19232 9589)
(3718 8795)(28104 28101)(28898 28901)(29454 29456)(72814 72840)(188731 188751)
(27915 27908)(27884 27883)(27877 27875 27909)(27897 27924 27898 27928 27913)
(22188 10354)(28391 28394)(30166 30168)(56703 56737)(187041 187123)(28903 28904)
(28088 28091)

# 중복 데이터 text 중복
SELECT SUM(CNT), COUNT(cnt) FROM (
	SELECT `text`, COUNT(*) AS cnt FROM train_data
	GROUP BY `text`
	HAVING COUNT(*) > 1
) T1
## 10,899건 / 5,276건
## 조회시간이 오래 걸리고 양이 많아 id 값 필요시 전달드리겠습니다.
SELECT * FROM train_data t1
INNER JOIN (
	SELECT `text`, COUNT(*) FROM train_data
	GROUP BY `text`
	HAVING COUNT(*) > 1
	) t2 ON t1.`text` = t2.`text` 
ORDER BY t1.`text`

다음에 학습시에 제거 혹은 고려해야할 만한 데이터에 대한 정리를 끝으로 오늘 하루를 마무리 하였다.

Gudivada, 2018