인프런 커뮤니티 질문&답변

정찬희님의 프로필 이미지
정찬희

작성한 질문수

[PyTorch] 쉽고 빠르게 배우는 NLP

[실습] Word2Vec 실습 및 GloVe 벡터 활용

context_size 질문드립니다.

작성

·

165

0

 

 

1.for _ in range(4):

            if random.random() < 0.5 or i >= len(text) - 3:

                rand_id = random.randint(0, i-1)

            else:

                rand_id = random.randint(i+3, len(text)-1)

            data.append((text[i], text[rand_id], 0))

 

1.  range(4)를준 이유가 궁굼합니다.

2.  상위 코드 0.5 or  i >=len(text) -3 조건을 이렇게 설정한  이유가 궁굼합니다. 

 

3. 괜찮으시다면 혹시 상위 코드조금 자세하게 설명해주실수 있나요 ?

답변 1

0

Justin님의 프로필 이미지
Justin
지식공유자

안녕하세요, Justin입니다.

 

1. context_size가 2이기 때문입니다.
skipgram 시 중심 단어로부터 2칸 내 단어들과 비교하기 위해 range(4)로 설정하였습니다.

2. skipgram 시 주변 단어 중 일부를 무작위로 추출하여 데이터를 구성하기 때문에,
이를 구현하기 위해서 해당 코드로 설정하였습니다. 이외 다른 방법으로도 무작위 추출 성격만 띈다면 코드는 변경 가능합니다. 

3. random.random을 통해 0~1 사이 실수를 추출하여 이가 0.5 미만이거나
전체 단어 길이 - 3 값이 현재 i 값보다 큰 경우 rand_id 즉 주변 단어 중 일부를 지칭하는 인덱스 값을 0과 i-1 값중 1개의 정수로 표현하여 인덱스를 지정하고, 다른 경우는 i+3과 전체 단어 길이에서 1값을 뺀 값 사이의 정수로 표현하여 인덱스를 지정합니다. word2vec skipgram 방식의 원리를 이해하시면 코드 이해에 도움이 될 것 같습니다.

추천영상 : https://www.youtube.com/watch?v=sY4YyacSsLc

감사합니다.

정찬희님의 프로필 이미지
정찬희

작성한 질문수

질문하기