글러브 단어 임베딩

언어적 규칙성

이제 글러브 임베딩이 어떻게 작동하는지 살펴보겠습니다. 일반적으로 알려진 바와 같이,단어 2 벡 단어 벡터는 많은 언어 적 규칙 성을 포착합니다. 정식 예제를 제공하기 위해”파리”,”프랑스”및”독일”이라는 단어에 대한 단어 벡터를 가져 와서 다음 작업을 수행하는 경우:

\

그 결과 벡터는”베를린”에 대한 벡터에 가까운 것

의 워드 투벡에 의해 데모로 사용되는 동일한 위키 백과 데이터를 다운로드 할 수 있습니다:

다음 단계에서는 단어 벡터를 배우고 싶은 단어 집합 인 어휘를 만듭니다. 모든 기능은 원시 텍스트 데이터에서 작동합니다(create_vocabulary, create_corpus, create_dtm, create_tcm) 이러한 함수에 대한 첫 번째 인수로 토큰을 반복해야 합니다.

이 단어는 너무 흔하지 않아야합니다. 예를 들어 우리는 전체 코퍼스에서 한 번만 본 단어에 대한 의미있는 단어 벡터를 계산할 수 없습니다. 여기서 우리는 적어도 다섯 번 나타나는 단어 만 취할 것입니다. 어휘를 필터링하는 추가 옵션을 제공합니다(?prune_vocabulary참조).

이제 우리는 어휘에 71,290 개의 용어를 가지고 있으며 용어-공동 발생 행렬을 구성 할 준비가되었습니다.

이제 우리는 한의학 매트릭스를 가지고 장갑 알고리즘을 통해 인수 분해 할 수 있습니다.
텍스트 2 벡은 병렬 확률 그라디언트 디센트 알고리즘을 사용합니다. 기본적으로 컴퓨터의 모든 코어를 사용하지만 원하는 경우 코어 수를 지정할 수 있습니다.

모델을 맞추자. (그것은 맞게 몇 분 정도 걸릴 수 있습니다!)

## INFO epoch 1, loss 0.1755 ## INFO epoch 2, loss 0.1228 ## INFO epoch 3, loss 0.1085 ## INFO epoch 4, loss 0.1005 ## INFO epoch 5, loss 0.0954 ## INFO epoch 6, loss 0.0918 ## INFO epoch 7, loss 0.0890 ## INFO epoch 8, loss 0.0869 ## INFO epoch 9, loss 0.0851 ## INFO epoch 10, loss 0.0837
## 71290 50

모델은 주 및 컨텍스트의 두 가지 단어 벡터 세트를 학습합니다. 모델이 대칭이기 때문에 본질적으로 그들은 동일합니다. 우리의 경험을 통해 두 세트의 단어 벡터를 학습하면 더 높은 품질의 임베딩이 가능합니다. 장갑 모델은”분해”모델입니다(mlapiDecomposition에서 상속-입력 행렬을 두 개의 낮은 순위 행렬로 분해하는 모델의 일반 클래스). 따라서 다른mlapiDecomposition모델 두 번째 낮은 순위 행렬(컨텍스트 단어 벡터)과 동일하게components필드에서 사용할 수 있습니다:

## 50 71290

mlapiDecomposition에서 상속 된 모든 모델에서와 같이 변환 된 행렬에는nrow = nrow(input),ncol = rank및 두 번째component행렬에는nrow = rank,ncol = ncol(input)가 있습니다.

단어 벡터 행렬을 모두 결과로 사용할 수 있지만 일반적으로 주 벡터와 컨텍스트 벡터의 평균 또는 합계를 사용하는 것이 좋습니다.

파리-프랑스+독일 예에서 가장 가까운 단어 벡터를 찾을 수 있습니다:

## paris berlin munich germany versailles ## 0.7724678 0.7156243 0.6962157 0.6381500 0.6170311

skip_grams_windowGloVe클래스의 매개 변수(단어 벡터 크기 및 반복 횟수 포함)를 실험하여 훨씬 더 나은 결과를 얻을 수 있습니다. 자세한 내용 및 위키 백과 데이터에 대한 대규모 실험은 내 블로그에이 오래된 게시물을 참조하십시오.

You might also like

답글 남기기

이메일 주소는 공개되지 않습니다.