Sentence embedding: representaciones con transformers

Humai
3 min readMay 28, 2021

--

Por María Frances Gaska

El código que acompaña a estos ejemplos se puede encontrar en https://github.com/githubmg/TestingSentenceEmbeddings

En 2013 sorprendía al mundo el paper word2vec. El primero de una serie de técnicas que lograron reducir las palabras a vectores. Los embeddings representan a las palabras como vectores generalmente de entre 50 y 300 números.

Los word embeddings resultan en representaciones precisas de las palabras, pero no pueden dar cuenta del contexto de las mismas. Como “apple” la fruta y “apple” la marca están representadas por valores idénticos, dependemos de modelos basados en secuencias para poder contextualizarlas y realizar tareas de NLP.

La forma de medir la distancia entre este tipo de representaciones es la similitud coseno. Por eso vamos a medir la distancia entre una oración y otras dos, tratando de evaluar si efectivamente el modelo coloca más cerca a la que está SEMÁNTICAMENTE más cerca y no a la que más se parece textualmente.

Las arquitecturas basadas en transformers (como BERT) se basan en aprender representaciones que dan cuenta no sólo de la palabra sino de su contexto más amplio en la oración y en el texto.

El paper Sentence-BERT: Sentence Embeddings using Siamese BERT-Networks presenta una modificación a la arquitectura de BERT para poder crear embeddings que representen semánticamente a cada oración, una técnica similar a la que se usa para crear embeddings que representen caras.

A diferencia de los word embeddings que se representan usando entre 50 y 300 dimensiones, los sentence embeddings que entrega la librería sentence transformers son de dimensión 768.

Probando homónimos

sentences = [
"The rolling Stones are rock idols.",
"Don't throw me a rock.",
"Iggy Pop is my favourite artist."
]sentence_embeddings = model.encode(sentences)

La similitud entre las frases “The rolling Stones are rock idols.”
y “Don’t throw me a rock.” ,
es de 0.307941198348999

La similitud entre las frases “The rolling Stones are rock idols.”
y “Iggy Pop is my favourite artist.” ,
es de 0.5321765542030334

En este caso el modelo parece capturar correctamente la diferencia en el significado de rock en el primer y el segundo caso. Si bien la frase sobre Iggy Pop no menciona la palabra rock, habla de música y la similaridad es alta.

Valor semántico

¿Qué pasa si describimos un sentimiento equivalente sobre un target equivalente pero expresado con otras palabras?

La similitud entre las frases “I love the capital of Spain.”
y “I like Madrid.” ,
es de 0.8441337943077087

La similitud entre las frases “I love the capital of Spain.”
y “I love the capital of Portugal.” ,
es de 0.8108397126197815

La similitud entre las frases “I love the capital of Spain.”
y “I love the capital of Japan.” ,
es de 0.7268274426460266

La similitud entre las frases “I love the capital of Spain.”
y “I hate the capital of Spain.” ,
es de 0.35674047470092773

La similitud entre las frases “I love the capital of Spain.”
y “I hate Japan” ,
es de 0.15219761431217194

Estos resultados muestran lo que esperaríamos: aunque la palabra “love” se reemplaza por “like” y “the capital of Spain” se reemplaza por “Madrid” la frase que realmente expresa lo mismo es “I like Madrid”. Las expresiones positivas quedan claramente polarizadas respecto de las negativas. También se refleja el hecho de que Japón es un país semánticamente más alejado de España que Portugal. Esto es algo que se podría ver claramente con word embeddings, pero vemos que esta capacidad tampoco se pierde.

Parafraseo

¿Qué pasa si expresamos una misma idea modificando fuertemente el orden de las palabras?

sentences = [
"Don´t shout at me, John.",
"Don´t shout at John.",
"John, stop shouting at me."
]

La similitud entre las frases “Don´t shout at me, John.”
y “Don´t shout at John.” ,
es de 0.8612778186798096

La similitud entre las frases “Don´t shout at me, John.”
y “John, stop shouting at me.” ,
es de 0.8815945982933044

La primera y la segunda oración son idénticas salvo por una palabra, pero la tercera es la que efectivamente representa el mismo significado y aunque sea con menor confianza los embeddings captan esto correctamente.

Usos de los sentence embeddings

Estos embeddings son útiles especialmente para escenarios no supervisados: búsquedas de similitud semántica, clustering de oraciones, etc.

--

--

Humai

Acercamos la Inteligencia Artificial a la sociedad para hacer más equitativo el acceso a la tecnología que está revolucionando al mundo. Conocenos humai.com.ar