Cómo buscar incrustaciones para la coincidencia más cercana

Como Buscar Incrustaciones Para La Coincidencia Mas Cercana



Buscar en las incrustaciones la coincidencia más cercana significa encontrar aquellas incrustaciones que tengan el significado más cercano entre sí. Las incrustaciones son la representación vectorial de una oración que se alimenta a los modelos de lenguaje como entradas para tareas específicas. Discutiremos aquí el método y las técnicas que se pueden utilizar para encontrar incrustaciones similares.

Sintaxis

Existen muchas técnicas y herramientas que podemos utilizar para encontrar la diferencia entre las incrustaciones en función de su diferencia en términos de similitud. Los siguientes son los métodos y su sintaxis involucrada que usaremos para encontrar las similitudes de incrustación.







A partir de esos puntos mencionados, conocemos los modelos que podemos usar para encontrar la coincidencia de similitud para las incrustaciones. Ahora, aprenderemos a utilizar cada uno de estos modelos e implementaremos los ejemplos individuales en cada uno de estos modelos.



Ejemplo 1: incrustación de la coincidencia más cercana a través de incrustaciones de Word

Antes de implementar las incrustaciones de palabras para la coincidencia de similitud, necesitamos saber acerca de las incrustaciones de palabras. La incrustación de palabras es el proceso de convertir el texto en forma de vector (valores numéricos), ya que nuestros sistemas solo entienden la entrada en forma de dígitos numéricos.



Hay varias otras formas de realizar esta tarea que incluyen la codificación one-hot, pero utilizaremos la palabra incrustaciones. De esta manera, la incrustación está siendo aprendida por los modelos de la red neuronal (por ejemplo, word2vec o Glove) de los textos. Las palabras se asignan al espacio vectorial de dimensiones superiores. Todas aquellas palabras que son similares en contexto se asignan a los puntos más cercanos. De esta manera, las incrustaciones pueden capturar las relaciones y las analogías entre las diferentes palabras del texto.





Vamos a crear una incrustación de palabras para una oración. Para crear la incrustación de palabras, Python proporciona el marco 'gensim'. Gensim es un paquete de biblioteca que permite el uso del modelo 'word2vec' que ayuda a crear incrustaciones. Para implementar la incrustación, primero nos aseguramos de instalar gensim en nuestros compiladores de Python. Luego, desde el gensim, importamos el modelo “word2vec”.

El modelo “word2vec” es un tipo de algoritmo que solo utiliza dos argumentos de entrada donde el primer argumento requiere el texto o la oración cuya incrustación queremos crear, y el segundo argumento especifica el recuento mínimo que especifica el número mínimo de veces que un se requiere que la palabra aparezca o sea vista.



Después de importar el modelo 'word2vec', especificamos el 'texto'. Una vez que especificamos el texto, entrenamos este modelo 'word2vec' pasándolo con el texto y estableciendo el recuento mínimo igual a '1'. Ahora, llamamos a este modelo entrenado 'word2vec.wv.most_similar('consumir')' y alimentamos la palabra cuyas incrustaciones más cercanas queremos verificar, en este ejemplo, 'consumir'. Para verificar los resultados de incrustación, imprimimos la salida del modelo:

de como una nación modelos importar Word2Vec
texto = [ [ 'conejo' , 'tiene' , 'dientes' ] ]
modelo = Word2Vec ( texto , min_count = 1 )
incrustación_similar = modelo. Virginia Occidental . más similar ( 'conejo' )
imprimir ( incrustación_similar )

 

En este ejemplo, creamos la palabra incrustada para un texto utilizando el modelo 'word2vec' para verificar su similitud en términos del contexto y eso se puede ver en el fragmento adjunto anteriormente, que es el resultado del código que busca incrustaciones similares. de la palabra “consumir”.

Ejemplo 2: incrustación de la búsqueda más cercana a través del modelo BERT

Existen modelos de procesamiento de lenguaje natural pre-entrenados que se pueden utilizar para calcular la similitud entre los textos, ya que pueden comprender y aprender la relación contextual entre las palabras. BERT es uno de los modelos de lenguaje pre-entrenados de los “sentence_transformers” y puede aprender las similitudes entre los textos. Para encontrar la similitud entre los textos, primero tenemos que ajustar este modelo al texto oa las oraciones.

Una vez hecho esto, podemos usar este modelo para aprender las incrustaciones. Luego, podemos calcular la similitud entre los textos usando la función de 'similitud de coseno'. Implementamos este ejemplo en la plataforma Python en línea que es 'google colab'. Para ajustar el modelo, cargamos el modelo (BERT). Para ello, primero instalamos e importamos los “SentenceTransformers”. Luego, cargamos el modelo desde su modelo previamente entrenado usando SentenceTransformer. Para cargar el modelo, llamamos a SentenceTransformer y al modelo BERT juntos como '$SentenceTransformer('bert-base-nli-mean-tokens')' donde especificamos el nombre del modelo preentrenado de BERT en el parámetro de entrada y luego guardamos esto en la variable “BERTmodel”.

Una vez que hayamos terminado de cargar este modelo, ahora especificamos los cuatro textos, cada uno de los cuales consta de una oración para verificar la similitud entre ellos. Una vez que especificamos los textos, por ejemplo, ahora creamos las incrustaciones para este texto. Creamos individualmente las incrustaciones para cada uno de los textos usando la función 'codificar'.

Llamamos a la función de codificación con el prefijo del modelo BERT como 'BERTmodel.encoding ()'. Luego pasamos el 'texto' y la 'longitud máxima' que fijamos para que sea igual a '512' a los parámetros de esta función. Llamamos a esta función de codificación en cada uno de los textos, y convierte el texto en incrustaciones.

Ahora, utilizamos cada una de estas incrustaciones y las sustituimos en la función de similitud del coseno para encontrar la similitud entre estas incrustaciones. La función de similitud del coseno se usa ampliamente en todas las tareas de procesamiento del lenguaje natural para clasificar y agrupar los textos/documentos.

Para encontrar la similitud entre estas incrustaciones, usamos la función de similitud del coseno y sustituimos el valor de la oración incrustada con el índice '0' y la otra oración incrustada con el índice '1 a 3' para verificar la similitud de la oración 0 con los otros 3 oraciones. Los valores de salida de la función de similitud del coseno varían de -1 a 1. Aquí, 1 indica que las dos incorporaciones son similares y -1 indica que las dos incorporaciones no son similares. Adjuntamos el fragmento de código que muestra el método para implementar la función de similitud de coseno usando las cuatro incrustaciones de oraciones que acabamos de crear en los ejemplos usando el modelo BERT preentrenado.

!pip instalar transformadores_de_frases
oraciones = [
'cuatro años antes, la botella estaba hasta llena y .',
'La perra soñó que se escapaba de la jaula y en la calle donde vio pasar a su amiga.',
'La persona estuvo jugando con medusas durante muchos meses'.,
'Encontró un caracol en su armario'.]
de sentencia_transformadores importar SentenceTransformer
Bertmodel = SentenceTransformer('bert-base-nli-mean-tokens')
sentencia_embeddings = Bertmodel.encode(frases)
frase_incrustaciones.forma
desde sklearn.metrics.pairwise import cosine_similarity
# calcular la similitud del coseno para la oración 0:
coseno_similitud(
[incrustaciones_oraciones[0]],
oraciones_incrustaciones[1:])

La matriz en la salida muestra el valor de similitud de la 'oración 0' con las otras tres oraciones, p. 1, 2 y 3.

Conclusión

Discutimos los métodos para encontrar la similitud entre las incrustaciones. Mostramos dos ejemplos diferentes para buscar la coincidencia más cercana de la incrustación utilizando el modelo gensim 'word2vec' y el modelo BERT preentrenado.