vacio - recorrer diccionario python
Cómo verificar si existe una clave en un modelo entrenado en word2vec o no (5)
Generalmente uso un filtro:
for doc in labeled_corpus:
words = filter(lambda x: x in model.vocab, doc.words)
Este es un método simple para superar el error KeyError en palabras invisibles.
He entrenado un modelo de word2vec usando un corpus de documentos con Gensim. Una vez que el modelo está entrenando, estoy escribiendo el siguiente fragmento de código para obtener el vector de características en bruto de una palabra, diga "ver".
myModel["view"]
Sin embargo, obtengo un KeyError para la palabra que probablemente se deba a que no existe como clave en la lista de claves indexadas por word2vec. ¿Cómo puedo verificar si una clave sale del índice antes de intentar obtener el vector de características en bruto?
Hola, sé que estoy llegando tarde a esta publicación, pero aquí hay un fragmento de código que puede manejar bien este problema. Yo mismo lo uso en mi código y funciona como un encanto :)
size = 300 #word vector size
word = ''food'' #word token
try:
wordVector = model[word].reshape((1, size))
except KeyError:
print "not found! ", word
NOTA: Estoy usando la biblioteca Gensim de python para los modelos de word2vec
Respondiendo a mi propia pregunta aquí.
Word2Vec proporciona un método denominado contiene (''ver'') que devuelve Verdadero o Falso en función de si la palabra correspondiente se ha indexado o no.
Word2Vec también proporciona un miembro ''vocab'', al que puede acceder directamente.
Utilizando un enfoque pitonista:
if word in w2v_model.vocab:
# Do something
EDITAR Desde la versión 2.0 de gensim, la API para Word2Vec cambió. Para acceder al vocabulario debes usar esto ahora:
if word in w2v_model.wv.vocab:
# Do something
EDITAR 2 El atributo ''wv'' está en desuso y se eliminará en gensim 4.0.0. Ahora volvemos a la respuesta original de OP:
if word in w2v_model.vocab:
# Do something
convertir el modelo en vectores con
word_vectors = model.wv
entonces podemos usar
if ''word'' in word_vectors.vocab