Dada uma frase: "Quando eu abrir a ?? porta que começa a aquecer automaticamente"
Gostaria de obter a lista de possíveis palavras em ?? com uma probabilidade.
O conceito básico usado no modelo word2vec é "prever" uma palavra, dada o contexto circundante.
Depois que o modelo é construído, qual é a operação correta de vetores de contexto para executar minha tarefa de previsão em novas frases?
É simplesmente uma soma linear?
model.most_similar(positive=['When','I','open','the','door','it','starts' ,'heating','automatically'])
Respostas:
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.
h
de tamanho da camada ocultaNx1
syn1
(word2vec.c
ougensim
) que é do tamanhoVxN
syn1
porh
, o vetor resultante será doz
tamanhoVx1
y = softmax(z)
com tamanhoVx1
, 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 eN
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.
fonte
syn1
apenas salvando o modelo. sim, a ordem é ignorada, pois o aplicativo pode ser usado com o modelo seq2seq baseado em LSTM.A previsão de palavras ausentes foi adicionada como uma funcionalidade na versão mais recente do Word2Vec. Obviamente, sua sentença precisa corresponder à sintaxe de entrada do modelo Word2Vec usada para treinar o modelo (letras minúsculas, palavras finais, etc.)
Uso para prever as 3 principais palavras para "Quando eu abrir a porta?":
fonte
center
estava entre a 3ª e a 4ª palavra? Isso não faz sentido para mim. Eu imagino apenas número par palavras de contexto poderia ser colocado em e seria selecionar a palavra entrefloor(len(n)/2))
efloor(len(n)/2))+1