Vu infliger une peine: « Quand j'ouvre la ?? porte , il commence à chauffer automatiquement »
Je voudrais obtenir la liste des mots possibles en ?? avec une probabilité.
Le concept de base utilisé dans le modèle word2vec est de «prédire» un mot en fonction du contexte environnant.
Une fois le modèle construit, quelle est l'opération de vecteurs de contexte appropriée pour effectuer ma tâche de prédiction sur de nouvelles phrases?
Est-ce simplement une somme linéaire?
model.most_similar(positive=['When','I','open','the','door','it','starts' ,'heating','automatically'])
Réponses:
Word2vec fonctionne dans deux modèles CBOW et skip-gram. Prenons le modèle CBOW, car votre question va de la même manière que prédire le mot cible, compte tenu des mots environnants.
Fondamentalement, le modèle développe des matrices de poids d'entrée et de sortie, qui dépendent des mots de contexte d'entrée et du mot cible de sortie à l'aide d'une couche cachée. Ainsi, la rétropropagation est utilisée pour mettre à jour les poids lorsque la différence d'erreur entre le vecteur de sortie prédit et la matrice de sortie actuelle.
Fondamentalement, la prédiction du mot cible à partir de mots de contexte donnés est utilisée comme une équation pour obtenir la matrice de poids optimale pour les données données.
Pour répondre à la deuxième partie, cela semble un peu complexe qu'une simple somme linéaire.
h
de calque caché de la tailleNx1
syn1
(word2vec.c
ougensim
) qui est de tailleVxN
syn1
parh
, le vecteur résultant seraz
de tailleVx1
y = softmax(z)
avec la tailleVx1
, où la probabilité la plus élevée correspond à la représentation univoque du mot cible dans le vocabulaire.V
dénote la taille du vocabulaire etN
dénote la taille du vecteur d'intégration.Source: http://cs224d.stanford.edu/lecture_notes/LectureNotes1.pdf
Mise à jour: les modèles de mémoire à court terme font actuellement un excellent travail pour prédire les prochains mots. Les modèles seq2seq sont expliqués dans le tutoriel tensorflow . Il existe également un article de blog sur la génération de texte.
la source
syn1
en sauvegardant simplement le modèle. oui, l'ordre est ignoré, pour l'application, on pourrait en fait aller avec le modèle seq2seq basé sur LSTM.La prédiction de mots manquants a été ajoutée en tant que fonctionnalité dans la dernière version de Word2Vec. Bien sûr, votre phrase doit correspondre à la syntaxe d'entrée du modèle Word2Vec utilisée pour l'apprentissage du modèle (lettres minuscules, mots vides, etc.)
Utilisation pour prédire les 3 premiers mots pour "Quand j'ouvre? Porte":
la source
center
c'était entre le 3e et le 4e mot? Cela n'a aucun sens pour moi. J'imagine que seuls des mots de contexte de nombre pair pourraient êtrefloor(len(n)/2))
floor(len(n)/2))+1