Similitud de palabras en NLP

| Última modificación: 10 de julio de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

¿Sabes en qué consiste la similitud de palabras en NLP? En este post te explicaremos de qué se trata.
Si trabajamos con los small models (SM) en lugar de los large models (LM), no utilizaremos word vectors, sino context – sensitive tensors.
En el caso de trabajar con los primeros (word vectors), siempre tendremos el mismo vector para el mismo token. Si trabajamos con los segundos (contex – sensitive tensors) el vector del token estará determinado por su contexto (el resto de tokens que le rodean).
Con spaCy es posible calcular la similitud de palabras en NLP, es decir, lo parecidos o distintos que son dos tokens.

Ejercicio sobre similitud de palabras en NLP

Lo que veremos a continuación es un ejercicio de similitud entre palabras. No es algo que tenga que ver con similitudes en cuanto a su gramática, sino en cuanto a su contexto verbal. Por ejemplo, las palabras azul y verde van a tener más parecido porque ambas son colores. Sin embargo, azul y mariposa no van a tener demasiada similitud, dado que no tienen ningún tipo de correlación.
Esto está diseñado a través del modelo que tiene integrado spaCy, que está entrenado para un montón de tareas distintas.
Lo que haremos después de cargar el modelo es generar los objetos de spaCy, alimentándolos con el modelo para las palabras verde, azul y mariposa. Luego calculamos las similitudes. Por ejemplo, en este caso, haremos la similitud de palabras en NLP entre:

  • La palabra 1 y la palabra 2.
  • La palabra 1 y la palabra 3.
  • La palabra 2 y la palabra 3.

De modo que:

  • La palabra 1 corresponde a verde.
  • La palabra 2 es azul.
  • La palabra 3 hace referencia a mariposa.
#Similitud de palabras en NLP
! python -m spacy download es_core_news_md
import spacy
nlp_es_md = spacy.load ('es_core_new_md')
#Similitud de palabras en NLP
word_1 = nlp_es_md ('verde')
word_2 = nlp_es_md ('azul')
word_3 = nlp_es_md ('mariposa')

print ('Similarity betwerrn word {} and word {}: {:0.6f}'.format (1, 2, word_1.similarity (word2)))
print ('Similarity betwerrn word {} and word {}: {:0.6f}'.format (1, 3, word_1.similarity (word3)))
print ('Similarity betwerrn word {} and word {}: {:0.6f}'.format (2, 3, word_2.similarity (word3)))

Similarity between word 1 and word 2: 0.911342
Similarity between word 1 and word 3: 0.552898
Similarity between word 2 and word 3: 0.602600
Esto nos da una probabilidad. Cuanto más alta sea la probabilidad, las palabras están más correlacionadas entre sí; cuanto más baja sea la probabilidad, las palabras van a estar menos correlacionadas entre sí.
Por ejemplo, vemos que la similitud entre verde y azul es de un 91%, ya que el algoritmo detecta que ambos son colores. No obstante, cuando ponemos la palabra 1 (verde) con la palabra 3 (mariposa), nos da como resultado que la similitud es de un 55%. Lo mismo sucede para la palabra 2 y la palabra 3, cuya similitud es de 60%.
Ahora subamos un poco el nivel y pongámosle un poco más de contexto al ejercicio de similitud. En este caso, usaremos las mismas palabras, pero les añadiremos un contexto.
Las tres oraciones estarían indicando emoción, dos de ellas referentes al color y una a la mariposa. Ahora veremos cómo varía la similitud:

#Similitud de palabras en NLP
sent_1 = nlp_es_md ('me gusta el color verde')
sent_2 = nlp_es_md ('me gusta el azul')
sent_3 = nlp_es_md ('me gusta la mariposa')

print ('Similarity between sent {} and sent {}: {:0.6f}'.format (1, 2, sent_1.similarity (sent_2)))
print ('Similarity between sent {} and sent {}: {:0.6f}'.format (1, 3, sent_1.similarity (sent_3)))
print ('Similarity between sent {} and sent {}: {:0.6f}'.format (2, 3, sent_2.similarity (sent_3)))

Similarity between sent 1 and sent 2: 0.981271
Similarity between sent 1 and sent 3: 0.922150
Similarity between sent 2 and sent 3: 0.951995
Como podemos observar, la similitud es muy alta en los tres casos. Esto sucede porque los tres indican que hay una similitud, ya no solamente coinciden en las palabras que hay dentro de cada documento, sino que además expresan la misma emoción y transmiten el mismo contexto.

Ahora que hemos visto cómo funciona la similitud de palabras en NLP, podemos seguir avanzando en nuestro proceso formativo. Para poder acceder a las opciones laborales del Big Data, una de las áreas mejor pagadas del mundo laboral, tenemos para ti el Big Data, Inteligencia Artificial & Machine Learning Full Stack Bootcamp. Con esta formación intensiva adquirirás los conocimientos teóricos y prácticos necesarios para conseguir tu empleo soñado en pocos meses. ¡No esperes más para impulsar tu carrera y pide más información ahora!

Sandra Navarro

Business Intelligence & Big Data Advisor & Coordinadora del Bootcamp en Data Science, Big Data & Machine Learning.

Posts más leídos

¡CONVOCATORIA ABIERTA!

Big Data, IA & Machine Learning

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado