Spoken Language Processing

Huggingface 튜토리얼 (1) 기초 개념 소개

햇농nongnong 2022. 9. 15. 19:55

Tokenizer


Tokenizer 가 매우 중요

  • 결국 문장(글자, 텍스트)를 어떻게 숫자로 잘 바꿀 수 있을까가 관건
  • 그렇게 하기 위해 가장 먼저 해야 할 것 - tokenizer
    - "학교에 가서 수업을 들었다." = 학교에 / 가서 / 수업을 / 들었다. 
  • 나누는 방법 다양함
    - 띄어쓰기 단위 / 문자 단위 / subword 단위
    - 각각의 장 단점이 있음

"오늘 저녁은 맛있었다."

  • 띄어쓰기 단위 : [오늘, 저녁은, 맛있었다]
    - 명료, 적용 쉬움
    - "맛있다, 맛있어요, 맛있었다" 가 모두 다르게 인식됨, 단어사전이 매우 커짐
  • 문자 단위 : [오, 늘, 저, 녁, 은, 맛, 있, 었, 다]
    - 각 token 이 의미를 담지 못함
  • subword 단위 : [오늘, 저녁, 은, 맛있, 었, 다]
    - 띄어쓰기와 문자 단위의 중간
    - 띄어쓰기보다는 더 세부적으로 나누고, 문자보다는 더 단어처럼
    - 대표적으로 형태소로 나누는 방법 : 학교에 = 학교 + 에
    - 형태소로 나누면 매우 효율적이지만 언어 지식이 필요함 (컴퓨터가 알아서 불가능) 
    - 즉, 한글에 쓰는 방법(지식)을 영어에는 적용 불가능
    - 따라서 서비스에서는 쓰이더라도 연구에서는 거의 사용하지 않음 - 연구에서는 대신 특정한 알고리즘을 사용
    - BPE(byte-pair encoding) : 전체 문서를 문자 단위로 쪼갠 뒤 빈번하게 나오는 문자들을 묶어 단어사전의 수를 줄임
      ex) '학', '교' 로 따로 쓰이는 때보다 '학교' 라고 붙여서 쓰이는 때가 더 많으면 후자를 단어사전에 채택

 

 

Word embedding


단어를 빈도로 나타내는 bag of. ords

  • 단어를 숫자로 바꾸고, 문장을 숫자로 바꾸기

주변 맥락으로 단어를 표현하는 word2vec

 

 

 Reference