새소식

부스트캠프 AI Tech 4기

[WEEK06-07] Data EDA

  • -

Project Description

STS(Semantic Text Similarity)는 복수의 문장에 대한 유사도를 선형적 수치로 제시하는 NLP Task입니다.

본 프로젝트에서는 두 개의 문장을 입력하고, 이러한 문장쌍이 얼마나 의미적으로 서로 유사한지(0~5점)를 측정하는 AI모델을 구축합니다.

 


 

 

 

 

데이터 가공 ⇒ 모델 구조 ⇒ Loss 함수 ⇒ batch-size나 lr, 각종 하이퍼파라미터

 

 

데이터 분석

(notebook/data_EDA.ipynb)

 

1. 유사도 점수 분포에 따른 데이터 개수는 유사한지 (Class imbalance)

  • 0~5점으로 이루어진 label 데이터를 반올림하여 시각화
label 개수(개) 비율(%)
0 2931 0.32
1 1658 0.18
2 1075 0.12
3 1334 0.14
4 2045 0.22
5 231 0.02

 

 

2. positive pair는 충분한지

  • 0~2점 : Positive Pair / 3~5점 : Positive Pair
binary label 개수(개) 비율(%)
0 5692 0.61
1 3632 0.39

 

 

 

 

⇒ 데이터 라벨 간도 불균형하고, Postive / Negative Pair과도 불균형함

⇒ 둘 다 균형적으로 Augmentation을 해보기

 

NLP는 discrete한 성질 때문에 Augmentation에 어려움이 존재한다.
문장의 의미에 큰 영향을 끼치는 단어를 랜덤 삽입/교체/삭제할 수 도 있기 때문에 학습에 효과적이지 않을 것이라고 생각한다.
따라서 AEDA(원 문장의 Sequence length를 기준으로 1/3 ~ 1 사이의 숫자를 랜덤으로 선택하여 6가지 punctuation (".", ";", "?", ":", "!", ",") 중 하나를 랜덤으로 대체시키는 기법)을 사용하여 Augmentation을 진행하였다.


0~5점으로 이루어진 label 데이터를 반올림하여 0/1/2/3/4/5로 바인딩한 라벨을 만들었다.

0~2점까지를 negative pair, 3~5점까지를 positive pair로 보았다.
가장 갯수가 제일 많은 0점 2931개의 문장쌍을 기준으로 나머지 1/2/3/4/5점 문장쌍도 2931개가 되도록 Augmentation을 진행하였다.
바인딩한 라벨 0~5점 각각 2931개로, positive pair과 negative pair의 균형도 맞추고자 하였다. (전체 17586개의 문장쌍) 

그렇게 진행한 결과 raw data로 했을 때보다 Pearson 상관계수가 0.017 증가하였다. (Pearson : 0.9054 → 0.9071)
- AEDA data
- beomi/KcELECTRA-base
- L1Loss
- Batch Size: 32 / Lr: 1e-5 / optimizer: AdamW / Scheduler: StepLR / Epochs: 30

 

3. 데이터 셋에서 어떤게 유사한거고, 어떤게 유사하지 않은건지 파악
Label 별 데이터 특징 확인



  • 5점 : 두 문장의 핵심 내용이 동일하며, 부가적인 내용들도 동일함
  • 4점 : 두 문장의 핵심 내용이 동등하며, 부가적인 내용에서는 미미한 차이가 있음
  • 3점 : 두 문장의 핵심 내용은 대략적으로 동등하지만, 부가적인 내용에 무시하기 어려운 차이가 있음

  • 2점 : 두 문장의 핵심 내용은 동등하지 않지만, 몇 가지 부가적인 내용을 공유함
  • 1점 : 두 문장의 핵심 내용은 동등하지 않지만, 비슷한 주제를 다루고 있음
  • 0점 : 두 문장의 핵심 내용이 동등하지 않고, 부가적인 내용에서도 공통점이 없음

크게 바라본다면 3~5점은 유사, 0~2점은 유사하지 않다고 볼 수 있다.

 

 

✅ 5점의 경우 아래와 같은 특징이 있으며 두 문장의 핵심 내용과 부가적인 내용들도 동일하다고 볼 수 있음

  • 띄어쓰기만 다를경우
    • 스토리는엉성하지만 조문탁의 액션이 볼만하다 ↔ 스토리는 엉성하지만 조문탁의 액션은 볼 만하다.
  • 특수기호만 다를경우
    • 다음에 또 뵈어요!! ↔ 다음에 또 뵈어요~!!
  • 을/를/에게 같은 조사
    • 청원게시판 없에주세요. ↔ 청원게시판 없애주세요
  • 의미가 같지만 다르게 표현하는 단어
    • 애기가 너무 이뻐요 ↔ 아기 너무 이뻐요
    • 한국의 미래는 지옥이다 ↔ 대한민국의 미래는 지옥이다
    • 안녕하십니까. 대한민국에 살고있는 청년입니다.  ↔ 안녕하세요. 저는 한국에 살고 있는 청년입니다
  • 단어 순서만 다른 경우
    • 전이명박대통령 출국금지 이명박 전 대통령 출국금지

 

 

4점대의 경우 

 

5점과 4.8점의 명확한 차이점을 모르겠음

  • 띄어쓰기만 다른데 4.8점
    • 이명박 출국금지신청 이명박 출국금지 신청
    • 왜 이런식으로 만들었을까? 왜 이런 식으로 만들었을까?
  • 조사 차이인데 4.8점
    • 조두순 무기징역으로 조두순을 무기징역으로
  • 특수기호 차이인데 4.8점
    • 소년법폐지해주세요!! 소년법폐지해주세요!!!

 

4.6점의 명확한 차이점을 모르겠음

  • 4.6점
    • 청소년법 폐지해주십시오 청소년법 폐지하여 주십시오.
    • 오늘 즐거웠습니다ㅎㅎ 오늘 즐거웠습니다~~

 

 

⇒ 데이터 라벨링 기준이 모호한데 이런건 어떻게 해야할지..?

 

 


 

- raw data
- klue/roberta-small
- L1Loss
- Batch Size: 32 / Lr: 1e-5 / optimizer: AdamW / Scheduler: StepLR / Epochs: 30

Pearson : 0.8402

 

# 진호님
- raw data
- **beomi/KcELECTRA-base**
- L1Loss
- Batch Size: 32 / Lr: 1e-5 / optimizer: AdamW / Scheduler: StepLR / Epochs: 10

Pearson : 0.8998

 

- raw data
- beomi/KcELECTRA-base
- L1Loss
- Batch Size: 32 / Lr: 1e-5 / optimizer: AdamW / Scheduler: StepLR / Epochs: 30

Pearson : 0.9054

 

- AEDA data
- beomi/KcELECTRA-base
- L1Loss
- Batch Size: 32 / Lr: 1e-5 / optimizer: AdamW / Scheduler: StepLR / Epochs: 30

Pearson : 0.9071

 

728x90
Contents