본문 바로가기
머신러닝/NLP

단어의 표현 방법

by su0a 2024. 5. 14.

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