Obtenir la plupart des mots similaires, étant donné le vecteur de la parole (pas le mot lui-même)

À l'aide de la gensim.models.Word2Vec de la bibliothèque, vous avez la possibilité de fournir un modèle et un "mot" pour lequel vous souhaitez trouver la liste de la plupart des mots similaires:

model = gensim.models.Word2Vec.load_word2vec_format(model_file, binary=True)
model.most_similar(positive=[WORD], topn=N)

Je me demande si il est possible de donner le système en entrée du modèle et un "vecteur", et de demander au système de retour au top des mots similaires (qui de leurs vecteurs est très proche du vecteur donné). Quelque chose de similaire à:

model.most_similar(positive=[VECTOR], topn=N)

J'ai besoin de cette fonctionnalité pour un milieu bilingue, dans lequel j'ai 2 modèles (anglais et allemand), ainsi que quelques mots d'anglais pour laquelle j'ai besoin de trouver la plupart de leurs semblables des candidats allemands.
Ce que je veux faire est d'obtenir le vecteur de chaque mot en anglais à partir du modèle anglais:

model_EN = gensim.models.Word2Vec.load_word2vec_format(model_file_EN, binary=True)
vector_w_en=model_EN[WORD_EN]

et ensuite d'interroger le modèle allemand avec ces vecteurs.

model_DE = gensim.models.Word2Vec.load_word2vec_format(model_file_DE, binary=True)
model_DE.most_similar(positive=[vector_w_en], topn=N)

J'ai mis en œuvre, dans C à l'aide de la distance initiale de la fonction dans le word2vec paquet. Mais, maintenant, j'ai besoin qu'il soit en python, afin d'être en mesure de l'intégrer avec mes autres scripts.

Savez-vous si il existe déjà une méthode dans gensim.models.Word2Vec de la bibliothèque ou d'autres bibliothèques qui fait cela? Dois-je la mettre en œuvre en moi-même?

Ne most_similar(..) retour des scores pour vous? Je suis représentant d'une fonction personnalisée que vous écrivez, qui appelle most_similar pour chaque mot dans le vecteur, ajoute les résultats de TOUS à la même liste et puis trie sur le score et les retours.
Grâce nbryans. Si il n'y a aucune méthode qui fait cela, je dois la mettre en œuvre comme suit: pour chaque mot dans le vocabulaire obtenir son correspondant vecteur à partir du modèle. Calculer la similarité cosinus du vecteur d'entrée et le retour. Et puis retour au haut de la plupart des autres similaires. Mais, j'ai pensé qu'une telle méthode pourrait exister; ce qui ne semble pas.
Salut amin, avez-vous mis en place votre méthode? si oui, alors je suis intéressé à savoir pourquoi utilisez-vous de la similarité cosinus au lieu de la distance euclidienne?
Salut @MiNdFrEaK, j'ai mis en œuvre par moi-même. eh bien, en fait c'était pas une grosse affaire, mais à l'époque, je me demandais juste si il a déjà été mis en œuvre et que je puisse l'utiliser de la tablette. Malheureusement, très peu de temps après que j'ai cessé de travailler sur ce sujet. J'ai besoin de regarder dans mes codes pour trouver ma mise en œuvre. Je vais vous laisser savoir une fois que j'ai trouver.

OriginalL'auteur amin | 2016-06-14