Descripción general de la incrustación de palabras mediante incrustaciones de modelos de lenguaje (ELMo)

¿Qué es la incrustación de palabras?

Es la representación de palabras en vectores. Estos vectores capturan información importante sobre las palabras, de modo que las palabras que comparten la misma vecindad en el espacio vectorial representan un significado similar. Existen varios métodos para crear incrustaciones de palabras, por ejemplo, Word2Vec ,   Continuous Bag of Words (CBOW), Skip Gram, Glove , Elmo, etc.

Incorporaciones de modelos de lenguaje (ELMo):

  • ELMo es un marco de PNL desarrollado por AllenNLP. Los vectores de palabras ELMo se calculan utilizando un modelo de lenguaje bidireccional de dos capas (biLM). Cada capa comprende un pase hacia adelante y hacia atrás.
  • A diferencia de Glove y Word2Vec, ELMo representa incrustaciones de una palabra usando la oración completa que contiene esa palabra. Por lo tanto, las incrustaciones de ELMo pueden capturar el contexto de la palabra utilizada en la oración y pueden generar diferentes incrustaciones para la misma palabra utilizada en un contexto diferente en diferentes oraciones.

Incorporaciones de modelos de lenguaje (ELMo) 

Por ejemplo: –

  1. Me encanta ver la televisión.
  2. Estoy usando un reloj de pulsera .

Aquí, en la primera oración, ver se usa como verbo, mientras que en la segunda oración, ver es un sustantivo. Estas palabras que tienen un contexto diferente en diferentes oraciones se denominan palabras polisémicas . ELMo puede manejar con éxito esta naturaleza de palabras que GLOVE o FastText no logran capturar.

 

Implementación de incrustaciones de palabras usando ELMo: 

El siguiente código se prueba en google colab. Ejecute estos comandos antes de ejecutar el código en su terminal para instalar las bibliotecas necesarias.

pip install "tensorflow>=2.0.0"
pip install --upgrade tensorflow-hub

Código:

Python3

# import necessary libraries
import tensorflow_hub as hub
import tensorflow.compat.v1 as tf
tf.disable_eager_execution()
  
# Load pre trained ELMo model
elmo = hub.Module("https://tfhub.dev/google/elmo/3", trainable=True)
  
# create an instance of ELMo
embeddings = elmo(
    [
        "I love to watch TV",
        "I am wearing a wrist watch"
    ],
    signature="default",
    as_dict=True)["elmo"]
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
  
# Print word embeddings for word WATCH in given two sentences
print('Word embeddings for word WATCH in first sentence')
print(sess.run(embeddings[0][3]))
print('Word embeddings for word WATCH in second sentence')
print(sess.run(embeddings[1][5]))

Producción: 

Word embeddings for word WATCH in first sentence
[ 0.14079645 -0.15788531 -0.00950466 ...  0.4300597  -0.52887094
  0.06327899]
Word embeddings for word WATCH in second sentence
[-0.08213335  0.01050366 -0.01454147 ...  0.48705393 -0.54457957
  0.5262399 ]

Explicación: El resultado muestra incrustaciones de palabras diferentes para la misma palabra RELOJ usada en un contexto diferente en oraciones diferentes.

Publicación traducida automáticamente

Artículo escrito por Puneet Goel y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *