자연어와 프로그래밍 언어
- 자연어 : 문맥의존 문법(Context-sensitive Grammar)
- 프로그래밍 언어 : 문맥자유 문법(Context-free Grammar)
- 컴파일러 구조 : 원시 프로그램 -> (1)렉시칼 분석 -> 구문 분석 -> 의미 분석 -> 코드 생성 -> 목적 프로그램
- 분산 표현(distributed representation)
- 임베딩 레이어 : 각 단어가 몇 차원의 속성을 가질지 정의하는 방식
- 우리가 일일이 정의할 수 없는 어떤 추상적인 속성들이 256차원 안에 골고루 분산되어 표현 => 컴퓨터에게 단어사전이 됨
- 희소 표현(Sparse representation)
- 단어를 고차원 벡터로 변환하여 속성값을 임의로 지정하는 방식
- 적어도 2차원이상의 벡터가 필요
- 단어간의 유사도 : 코사인 유사도(Cosine Similarity)를 사용
- OOV(Out-Of-Vocabulary)
- WordPiece Model
- SentencePiece : Subword 기반 토큰화
- Google에서 제공하는 오픈소스 기반 Sentence Tokenizer/Detokenizer
- BPE와 unigram 2가지 subword 토크나이징 모델 중 하나를 선택해서 사용할 수 있도록 패키징한 것
- 최근 pretrained model들이 거의 대부분 SentencePiece를 tokenizer로 채용
토큰화(Tokenization)
- 자연어를 의미 단위로 쪼개는 기법
- 자연어처리 모델의 성능에 결정적 영향을 주는 요인
토큰화 기법
- 공백 기반 토큰화
- 단점 : 유사한 의미를 지니고 있음에도 전혀 다른 단어로 분류 -> 불필요하게 큰 단어 사전을 가지게 되어 연산량 증가로 이어짐
- 형태소 기반 토큰화
- 형태소 : 뜻을 가진 가장 작은 말의 단위
- 한국여 형태소 분석기 : KoNLPy 등
- Wordpiece Model(WPM)
- 한 단어를 여러 개의 Subword의 집합으로 보는 방법
- 구글에서 BPE를 변형해 제안한 알고리즘
- Byte Pair Encoding(BPE)
- soynlp
- 한국어를 위한 토크나이저
- 토크나이저 외에 단어 추출, 품사 판별, 전치리 기능 제공
단어 임베딩
- 분산 표현을 이용하여 단어 간 의미적 유사성을 벡터화하는 작업
- word2vec
- fasttext
- elmo
https://wikidocs.net/22660