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
- Ready-To-Use Tech 님의 <자연어처리 4차 강의: huggingface 라이브러리> 강의
https://www.youtube.com/watch?v=sSy8ufyiuDYA