Soohyun’s Machine-learning

Assignment-1- 본문

Lectures/CS224N (NLP)

Assignment-1-

Alex_Rose 2020. 9. 28. 23:25

워드 벡터를 만드는데, 먼저 count-based vectors를 만든다. 

 

 

co-occurrence matrix를 만든다. 말 그대로 frequency 기준.

 

하지만 이 matrix는 sparse하고 매우 large하기 때문에 dimensionality reduction을 해준다. 세부적으로는, SVD (generalized PCA의  일종)를 해서 top-k의 principal components를 선택한다. 

 

 

 

그 다음에 같이 등장하는 words간의 embeddings를 plotting.

 

그 다음으로는, distinc_words, 즉, 단어별로 서로 분리한다. return은 corpus에 있는 words (unique), 그리고 단어들의 개수, 두 개임. list 형태, 

 

 

 

그리고 그 다음에는 co-occurrence matrix를 계산한다. window_size가 4라고 하면, 현재 워드의 index를 불포함한 채, window_size 만큼의 앞 단어 (즉 window_size가 4고 현재 idx가 4라면, 앞의 0,1,2,3까지의 words), 그리고 뒷 단어 (현재 idx가 4라면, 뒤의 5,6,7,8까지의 4개 단어)를 모두 체크해서 넣어줘야 한다. <<<<-----내가 이 부분을 몰라서 계속 여기를 패스하지 못했던 거였음 ㅠ

 

나머진 뭐.. 아는 그대로임. 

 

 

그 다음에는 dimensionality reduction 실행. 

 

trunc_M = TruncatedSVD()

M_reduced = trunc_M.fit_transform(M)

 

요거로 끗 ㅇㅅㅇ 편하다. 

 

 

[Q1.4는 그냥 embedding한거 plotting하는거라 안씀]

 

 

------------여기까지 count-based였고, 이 아래에서부터는 prediction-based word vector이다.

 

 

근데 이건 dim-reduction부터 하네? 코드에서 보면 알 수 있듯이, 그냥 해당 word의 vector를 wv_from_bin.word_vec으로 뽑아내고, 그냥 append해주는거... (쉽다)

 

 

[이후에 GloVe plotting하는 부분은 삭제]

 

 

여러가지 의미를 가진 단어(다의어)의 가장 similar한 top-10 similar words 보기

 

 

유사어 & 반의어

 

 

 

그리고 word vector로 더하기 빼기 가능한 것을 보여주고, gender bias를 보여주는 예시들, 예를 들어서 doctor는 man, nurse는 woman같은 것들을 보면서 ML이 내재적으로 가질 수 밖에 없는 bias에 대해서 생각해보게 함.

 

 

 

 

 

 

 

 

 

 

 

 

Comments