Je dois calculer le mot vecteurs pour chaque mot d'une phrase qui est togénisée comme suit: si j'utilisais le prétendu [FastText] [1] embarquage: cc.en .300.bin.gz par Facebook. Je pourrais avoir par ov. Cependant, lorsque j'utilise Google Word2vec de Googlenews-Vectors-Négion300.bin, il renvoie une erreur invalide. Ma question est de savoir comment nous calculons le mot vecteurs qui sont OOV alors? J'ai cherché en ligne je n'ai pu trouver rien. Bien sûr, c'est en train de supprimer toutes les phrases qui ont des mots non répertoriés dans le Word2vec de Google. Cependant, j'ai remarqué que 5550 sur 16134 ont des mots complètement dans l'intégration. P> J'ai aussi p> Cependant, TENSORFLOW 2 renvoie une erreur. P> Toute aide pour l'apprécier grandement. p> p>
3 Réponses :
Si le vocabulaire n'est pas trouvé, les initialisez-les avec un vecteur zéro de la même taille (Google Word2vec doit être un vecteur de 300 dimensions):
try: word_vector = model.wv.get_vector('your_word_here') except KeyError: word_vector = np.zeros((300,))
génial! Merci beaucoup.
def get_vectorOOV(s): try: return np.array(model.wv.get_vector(s)) except KeyError: return np.zeros((300,))
Le fichier (De même, si vous chargez un jeu de vecteur uni dans Vous pouvez vérifier si un mot est disponible, en utilisant le mot-clé Mais il est souvent préférable de simplement ignorer de tels mots entièrement - prétendre qu'ils ne sont même pas dans votre texte. (Utilisant un vecteur zéro à la place, puis vous nourrissez de zéro-vecteur dans d'autres parties de votre système, peut rendre ces mots inconnus essentiellement googlenews code> vecteur est une cartographie simple des mots aux vecteurs. Il n'y a pas d'installation dedans (ou les algorithmes qui l'ont créé) pour synthétiser des vecteurs pour des mots inconnus. p>
GENSIM code> en tant que
keedVectors code>, il n'y a aucune possibilité d'exécuter
train () code> sur L'objet résultant, comme vous le montrez dans votre code de question. Ce n'est pas un modèle formable complet, juste une collection de vecteurs.) p>
dans code>. Comme d'autres réponses ont été notées, vous pouvez ensuite choisir d'utiliser une valeur de bouchon (telle qu'un vecteur de Zeros) pour de tels mots. p>
Merci pour le récapitulatif. Je pense que dans mon cas tout 0 vecteur, était la voie à suivre et j'ai eu une précision de 100% sur mon ensemble de test invisible! Maintenant tu m'as fait me demander!
Si le vocabulaire n'est pas trouvé, vous pouvez les initialiser avec un vecteur zéro (c'est-à-dire des vecteurs de 300 dimensions, tous 0).
Voulez-vous dire, je crée une classe enfant de gensim.models.keedvectors.word2veckeyedvectors, puis remplissez-la 'get_vec' méthode là-bas? Si oui, avons-je trouvé la mise en œuvre? Merci.
Je pense que vous pouvez simplement faire un
essayer code> et
sauf code> au lieu de créer une classe enfant. Voir ma réponse.