본문 바로가기
Natural Language Processing/Github 훑어보기

[Code review] Sentence-Transformers 검증 및 예측 Process

by beeny-ds 2022. 7. 6.

Sentence-Transformers (UKPlab)

Sentence embedding 관련 패키지 리서치 중 Sentence-Transformers Github 코드를 자세히 살펴볼 기회가 생겼다. 
해당 패키지의 구조부터 자세한 상세 기능, 그리고 BERT 모델 사용 시 HuggingFace Transformers 와의 호환성까지 살펴보려 한다.

 

Sentence-Transformers > eval process

검증 결과 구하는 방법

  1. Data read
    - Eval datasets format에 맞춰 read


  2. Model load
    - Sentence_Transformers로 학습된 모델 불러오기
    - 만약 Sentence_Transformers로 학습되지 않았다면 Eval 불가능

  3. Evaluator definition
    - Evaluation 폴더에 있는 evaluate 객체 정의
    - 데이터셋에 따라 구하고자 하는 metric이 다르기 때문에 evaluate 방법 선택 시 주의
       ex. LabelAccuracyEvaluator의 경우, NLI datasets 사용해서 accuracy만 구함

  4. Get Eval results
    - 3번에 의존하는 결과 값(metric) 저장

 

Sentence-Transformers > pred process

Embedding vector 구하는 방법

  1. Data read
    - Pred datasets format에 맞춰 read


  2. Model load
    - Sentence_Transformers로 학습된 모델 불러오기
    - 만약 Sentence_Transformers로 학습되지 않았다면 Eval 불가능


  3. Text Embedding
    - 2번에서 불러온 Model의 내장 함수인 "encode" function을 사용해서 Pred datasets인 Text를 Embedding
  4. Get Embedding Vectors
    - 3번 결과를 활용해서 원하는 task에 맞게 사용

 

Sentence Embedding 값은 폭 넓게 사용할 수 있기 때문에 본인이 하고자 하는 task에 따라 유동적으로 사용하면 된다. 대표적인 예시로는 clustering과 유사 문장 찾기가 있다.

 

Comments

Sentence-Transformer의 기능 중 Evaluator를 사용하다 보면 본인이 원하는 metric 값이 없는 Evaluator가 있을 수 있다. 또한 Evaluator 안에 Loss class를 넣어줘야만 동작하는 경우도 있다. 

다음 포스팅은 sentence-transformers 상세 기능에 대해 살펴볼 예정이다.
  • 학습 Process
  • 검증 및 예측 Process
  • sentence-transformers 상세 기능
  • HuggingFace transformers와 어떻게 다른지

 

To Be Continued.....

반응형

댓글