¿Alguna vez has escuchado el término OOV Words? También se conocen como palabras fuera del vocabulario y se trata de palabras que no forman parte del léxico normal que se encuentra en un entorno de natural language processing o NLP.
Los embeddings calculados a nivel de palabras no devolverán un vector para aquellos tokens que no hayan guardado en su vocabulario. Una vez que los vectores palabra han sido aprendidos, aquellas palabras que no se han aprendido durante el entrenamiento no tendrán representación.
Identificar OOV Words
A diferencia de otras ocasiones en las que se encontraban palabras que estuviesen fuera de nuestro vocabulario, las representaciones no eran capaces de darnos un valor válido; en este caso, simplemente saltaba un mensaje de error diciéndonos que estaba fuera del vocabulario y fallaba. Aquí era necesario eliminar la palabra de la representación.
En el caso de hacer un modelo entrenado con redes, internamente sí es posible que se nos genere una predicción.
Veamos un ejercicio que relaciona este concepto para entender mejor en qué consiste el identificar OOV Words en el código que tengamos. En este caso, propondremos la palabra “asereje” y, evidentemente, nos dirá que no se encuentra en el vocabulario:
'asereje' in w2v_cbow.wv.vocab
False
Cbow no permite hacer un most similar para palabras que no se encuentran en el dataset; no obstante, observemos qué pasa con una palabra que sí está:
w2v_cbow.wv. most_similar ('sánchez')
¿Cómo lidiar con OOV Words?
Cuando una palabra que no está en el conjunto de entrenamiento o corpus aparece en datos reales, lo que genera un problema. Por ello, aquí te propondremos algunas acciones que puedes hacer en caso de que llegues a tener OOV Words.
Algunas estrategias para lidiar con OOV Words son:
- Asignar un vector que siga una distribución aleatoria uniforme. Por ejemplo, unk = np.random.uniform (-np.var (w2v.wv.vectors), np.var (w2v.wv.vectors), w2v.wv.vector_size). Si hacemos esto, lo que logramos es que a palabras que no estén dentro del vocabulario podemos asignarles una representación estándar.
- Reemplazar por un token especial, conocido y distinto del resto, (<unk>) y entrenar los embeddings.
- Reemplazar por un token especial, conocido y distinto del resto, y añadir información extra. Por ejemplo: <unk_noun> o <unk_verb>.
- Utilizar modelos que no sean a nivel de palabra.
Visualización de un dataset
Aquí podrás visualizar un word2vec entrenado con un dataset gigante.
¿Qué sigue?
Ahora que hemos visto cómo funcionan las OOV Words, podemos seguir aprendiendo acerca de una de las disciplinas más prolíficas y mejor pagadas en la actualidad. Para cumplir este objetivo tenemos nuestro Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp, una formación intensiva de 8 meses en la que adquirirás todos los conocimientos, tanto teóricos como prácticos, para incursionar en este mundillo tan interesante y amplio. ¡Anímate a cambiar tu futuro y solicita más información ahora!