Local Representation
특정 단어를 1개의 벡터에 매핑 ( ex: dog - 1 , cat - 2 )
1. One-hot Vector
한 단어를 1개의 벡터와 매핑
ex) dog - [0,0,1,0,0]
2. N-gram
n-1개의 단어 시퀀스를 1개의 벡터와 매핑
ex) I am - [0,0,0,0,1]
3. Bag of Words
문장에 나온 각 단어의 빈도수를 한개의 벡터에 저장
"I and you and my brother are students"
(1) 해당 문장을 단어집합으로 만듦
dict = {I : 0 , and : 1 , you : 2 , my : 3 , brother : 4 , are : 5 , students : 6}
(2) 크기가 n(단어 개수)=6 인 벡터 생성
BoW = [0,0,0,0,0,0]
(3) 각 단어가 나온 빈도수를 BoW[dict[단어]] 에 저장
"I" 는 1번 나왔기 때문에 Bow[0] = 1
Continuous Representation
주변 단어를 참고하여 특정 단어에 벡터 부여
1. Glove
co-occurence matrix : 같은 문장에 한 단어가 어떤 근처들과 몇 번 이상 나오는지
corpas
(1) I like deep learning
(2) I like NLP
(3) I enjoy flying
- 전체 corpus 에 word가 4000개 존재 => 4000 x 4000 매트릭스 생성됨
- I 와 like 이 같이 나오면 X[I][like] += 1 , X[like][I] += 1
- 매트릭스 사이즈를 줄이기 위해 SVD (특이값 분해) 사용
2. Word2Vec
주변 단어와 타깃 단어와의 관계를 예측 (classification)
1) CBOW : 주변 단어들을 모두 합쳐서 본 후 타깃 단어 맞추기
2) skipgram : 타깃 단어를 보고 주변 단어 맞추기
구현 방법
1) neural network 사용
2) SGD로 학습
'머신러닝 > NLP' 카테고리의 다른 글
Cosine Similarity (코사인 유사도) (0) | 2024.05.16 |
---|---|
tf - idf vector (0) | 2024.05.14 |
LM ( 언어모델 ) (0) | 2024.05.14 |
데이터 분리 (0) | 2024.05.14 |
Keras(케라스)의 텍스트 전처리 (0) | 2024.05.14 |