O Word2vec funciona em dois modelos CBOW e skip-gram. Vamos usar o modelo CBOW, pois sua pergunta segue da mesma maneira que prevê a palavra-alvo, considerando as palavras ao redor.
Fundamentalmente, o modelo desenvolve matrizes de peso de entrada e saída, que dependem das palavras do contexto de entrada e da palavra-alvo de saída com a ajuda de uma camada oculta. Assim, a propagação traseira é usada para atualizar os pesos quando a diferença de erro entre o vetor de saída previsto e a matriz de saída atual.
Basicamente, a previsão da palavra-alvo a partir de determinadas palavras de contexto é usada como uma equação para obter a matriz de peso ideal para os dados fornecidos.
Para responder à segunda parte, parece um pouco complexo do que apenas uma soma linear.
- Obtenha todos os vetores de palavras de palavras de contexto
- Faça a média deles para descobrir o vetor
h
de tamanho da camada ocultaNx1
- Obtenha a matriz de saída
syn1
( word2vec.c
ou gensim
) que é do tamanhoVxN
- Multiplique
syn1
por h
, o vetor resultante será do z
tamanhoVx1
- Calcule o vetor de probabilidade
y = softmax(z)
com tamanho Vx1
, em que a probabilidade mais alta denota a representação de um ponto quente da palavra de destino no vocabulário.
V
indica tamanho do vocabulário e N
tamanho do vetor de incorporação.
Fonte: http://cs224d.stanford.edu/lecture_notes/LectureNotes1.pdf
Atualização: Os modelos de memória de longo prazo estão atualmente fazendo um excelente trabalho na previsão das próximas palavras. Os modelos seq2seq são explicados no tutorial tensorflow . Há também uma postagem no blog sobre geração de texto.