Trend of NLP
Word2Vec or GloVe → RNN(LSTMs and GRUs) → Transformer → self attention models(BERT, GPT-3...)
KoNLPy - Hannanum, KKma : 문장의 품사 분석
Khaiii : 카카오 CNN기반 한국어 형태소 분석기
PyKoSpacing : GRU와 CNN을 사용한 띄어쓰기 전처리기
네*이버 맞춤법 검사기 기반 Py-Hanspell
!pip install git+https://github.com/ssut/py-hanspell.git
from hanspell import spell_checker
sent = "맞춤법 틀리면 외 않되? 쓰고싶은대로쓰면돼지 "
spelled_sent = spell_checker.check(sent)
hanspell_sent = spelled_sent.checked
print(hanspell_sent)
Word2Vec & GloVe
Word2Vec과 GloVe는 하나의 차원에 단어의 모든 의미를 표현하는 one-hot-encoding과 달리 단어의 distributed representation을 학습하고자 고안된 모델
nn.Embedding(num_embeddings, embedding_dim)
# 3 차원짜리 임베딩 10개 생성
embedding = nn.Embedding(10, 3)
# [1, 2, 4, 5], [4, 3, 2, 9]에 대한 임베딩 값 구하기
input = torch.LongTensor([[1,2,4,5],[4,3,2,9]])
embedding(input)
>>> # 3차원 공간 상에서 1,2,3,4,5,9의 상대적 위치를 나타내는 듯?
tensor([[[-0.0251, -1.6902, 0.7172],
[-0.6431, 0.0748, 0.6969],
[ 1.4970, 1.3448, -0.9685],
[-0.3677, -2.7265, -0.1685]],
[[ 1.4970, 1.3448, -0.9685],
[ 0.4362, -0.4004, 0.9400],
[-0.6431, 0.0748, 0.6969],
[ 0.9124, -2.3616, 1.1151]]])
LaBSE (Language-agnostic BERT Sentence Embedding) 다국어 임베딩
: 서로 다른 언어의 두 문장 간 유사도가 높은 문장끼리 매칭
💡 토큰화(tokenization)는 무엇인가요?
토큰화는 주어진 입력 데이터를 자연어처리 모델이 인식할 수 있는 단위로 변환해주는 방법입니다.
💡 단어 단위 토큰화(word tokenization)는요?
단어단위 토큰화의 경우 "단어"가 자연어처리 모델이 인식하는 단위가 됩니다. "I have a meal"이라고 하는 문장을 가지고 단어 단위 토큰화를 하면 다음과 같습니다.
['I', 'have', 'a', 'meal']
영어의 경우 대부분 공백(space)을 기준으로 단어가 정의되기 때문에 .split()을 이용해 쉽게 단어 단위 토큰화를 구현할 수 있습니다. 특히, 영어에서 공백을 기준으로 단어를 구분한 단어 단위 토큰화는 공백 단위 토큰화 (space tokenization)이라고도 할 수 있습니다.
출처 - 부스트캠프 AI tech 교육자료
[부스트캠프 AI Tech] Week 4 - Day 2