[Natural Language NLP] TensorFlow usa LSTM para implementar tareas de coincidencia de texto

En el campo del procesamiento del lenguaje natural NLP, a veces necesitamos calcular la similitud entre diferentes textos, codificar diferentes textos y luego procesarlos en vectores de representación de longitud fija incrustados, y luego usar LSTM para la representación de texto de salida, definir múltiples entradas múltiples datos de origen para calcular.

Oración 1: No me gusta comer cabeza de pescado con pimiento picado, pero me gusta comer cabeza de pescado

Oración 2: Me encantan las papas, pero no las batatas

La red LSTM también se usa para abstraer cada oración en una representación vectorial.Al calcular la similitud entre los dos vectores, la tarea de cálculo de similitud de texto se puede completar rápidamente. En escenarios prácticos, generalmente usamos el resultado oculto del último paso de la red LSTM para abstraer una oración en un vector, y luego medimos la similitud de dos oraciones por medio del producto escalar del vector o la similitud del coseno.

imagen-20220114191557152

el código se muestra a continuación:

"""
 * Created with PyCharm
 * 作者: 阿光
 * 日期: 2022/1/14
 * 时间: 18:55
 * 描述:
"""
import tensorflow as tf
from keras import Model
from tensorflow.keras.layers import *


def get_model():
    x_input = Input(shape=30)
    y_input = Input(shape=30)

    x_embedding = Embedding(input_dim=252173,
                            output_dim=256)(x_input)
    y_embedding = Embedding(input_dim=252173,
                            output_dim=256)(y_input)

    x_lstm = LSTM(128)(x_embedding)
    y_lstm = LSTM(128)(y_embedding)

    def cosine_distance(x1, x2):
        x1_norm = tf.sqrt(tf.reduce_sum(tf.square(x1), axis=1))
        x2_norm = tf.sqrt(tf.reduce_sum(tf.square(x2), axis=1))
        x1_x2 = tf.reduce_sum(tf.multiply(x1, x2), axis=1)
        cosin = x1_x2 / (x1_norm * x2_norm)
        return tf.reshape(cosin, shape=(-1, 1))

    score = cosine_distance(x_lstm, y_lstm)

    output = Dense(1, activation='sigmoid')(score)

    model = Model([x_input, y_input], output)

    return model


model = get_model()
model.summary()

imagen-20220114192918296

Supongo que te gusta

Origin blog.csdn.net/m0_47256162/article/details/122500900
Recomendado
Clasificación