【自然语言NLP】TensorFlow使用LSTM实现文本匹配任务

本文涉及的产品
NLP 自学习平台,3个模型定制额度 1个月
NLP自然语言处理_高级版,每接口累计50万次
NLP自然语言处理_基础版,每接口每天50万次
简介: 在NLP自然语言处理领域,有时我们需要计算不同文本之间的相似度,将不同文本进行编码,然后处理成Embedding定长表示向量,然后使用LSTM进行输出文本表示,定义多个多输入源数据进行计算。

在NLP自然语言处理领域,有时我们需要计算不同文本之间的相似度,将不同文本进行编码,然后处理成Embedding定长表示向量,然后使用LSTM进行输出文本表示,定义多个多输入源数据进行计算。


句子1:我不爱吃剁椒鱼头,但是我爱吃鱼头


句子2:我爱吃土豆,但是不爱吃地瓜


同样使用LSTM网络,把每个句子抽象成一个向量表示,通过计算这两个向量之间的相似度,就可以快速完成文本相似度计算任务。在实际场景里,我们也通常使用LSTM网络的最后一步hidden结果,将一个句子抽象成一个向量,然后通过向量点积,或者cosine相似度的方式,去衡量两个句子的相似度。



代码如下:


"""

* 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()


目录
相关文章
|
机器学习/深度学习 数据采集 自然语言处理
直观理解并使用Tensorflow实现Seq2Seq模型的注意机制(上)
直观理解并使用Tensorflow实现Seq2Seq模型的注意机制
277 1
直观理解并使用Tensorflow实现Seq2Seq模型的注意机制(上)
|
机器学习/深度学习 数据可视化 TensorFlow
使用TensorFlow Probability实现最大似然估计
TensorFlow Probability是一个构建在TensorFlow之上的Python库。它将我们的概率模型与现代硬件(例如GPU)上的深度学习结合起来。
157 1
|
机器学习/深度学习 TensorFlow 算法框架/工具
优达学城深度学习之六——TensorFlow实现卷积神经网络
优达学城深度学习之六——TensorFlow实现卷积神经网络
优达学城深度学习之六——TensorFlow实现卷积神经网络
|
机器学习/深度学习 存储 TensorFlow
直观理解并使用Tensorflow实现Seq2Seq模型的注意机制(下)
直观理解并使用Tensorflow实现Seq2Seq模型的注意机制
214 0
直观理解并使用Tensorflow实现Seq2Seq模型的注意机制(下)
|
TensorFlow 算法框架/工具 计算机视觉
TensorFlow 实现VGG16图像分类
TensorFlow 实现VGG16图像分类
TensorFlow 实现VGG16图像分类
|
机器学习/深度学习 存储 算法
TensorFlow 实现图像分类|学习笔记
快速学习 TensorFlow 实现图像分类。
170 0
TensorFlow 实现图像分类|学习笔记
|
机器学习/深度学习 TensorFlow 算法框架/工具
逻辑回归的 tensorflow 实现 | 学习笔记
快速学习逻辑回归的 tensorflow 实现
逻辑回归的 tensorflow 实现 | 学习笔记
uiu
|
机器学习/深度学习 算法 TensorFlow
TensorFlow 2 Keras实现线性回归
TensorFlow 2 Keras实现线性回归
uiu
198 0
TensorFlow 2 Keras实现线性回归
|
机器学习/深度学习 TensorFlow API
深度学习:Tensorflow实现线性回归梯度下降优化
深度学习:Tensorflow实现线性回归梯度下降优化
162 0
深度学习:Tensorflow实现线性回归梯度下降优化
|
机器学习/深度学习 TensorFlow API
TensorFlow实现多输入源多输出
有时我们的输入数据不只一个,会存在多个输入源,多个输出源,对于这种情况我们使用Sequential显然是不行的,因为Sequential只能够搭建线性拓扑模型,对于那种流水线型的模型较为适合,如果是非线性拓扑,复杂的拓扑使用Sequential是不能够实现的,这是我们就需要使用Function API,它会使我们处理多输入多输出变得简单。
682 0
TensorFlow实现多输入源多输出